Posts Tagged ‘ado.net’

Asenkron ASP.NET

Yaz aylarında yazdığım Ado.NET kitabinda olmasa da , bu teknoloji içerisinde kullanılacak olan asenkron programlama desenlerinin önemini her konuda karşımıza çıktığı ve çıkacağı gerçektir.

Bu programlama desenlerinde Pooling ve CallBack teknikleri en yoğun kullanılanlardır.Console uygulamasi yazılırken bile dikkat edilecek bir noktadır asenkron programlama biçimi , işler windows ortamina ve web ortamine geçtiğinde ise daha da bir hayati öneme kavuşur.

Bu yazıda , çok basit manada bir asp.net sayfasında asenkron programlama kullanımına bakiyor olacağız.Her zaman söylediğimiz gibi önce keyif alalim yoksa , köşedeki butondan sayfayı kapatalim (:

Öncelikli olarak çok az veri attiğim bir Ms-Sql veritabani hazirliyoruz ve Adı => AsenkronASPNETDB.
Uzerinde bir tablo oluşturuyoruz,bu tablonun adı tblData ve şemasi da görüldüğü gibidir.

MSSQL Database

Hemen arkasindan bu tablo için kayitlar girelim sihirbaz üzerinden

Table Records

Page Design

Şimdi sırada bu veritabani ve tablosundaki verileri kullanacağımız ASP.NET sayfasının tasarimina geçiyoruz
Tasarim oldukca basit bir DataGridView ve bir Label kontrolünden oluşmakta, sayfanın kodlarini paylaştim , içerisinde cok az da olsa CSS kullanıldı pek bir önemi olmasa da , bazı öğrenci arkadaşlarimin dediği gibi işe yaramaz bir Label da yerini almiş oldu (:

Sıra Geldi artik kodlama tarafina , Default.aspx sayfasının tasarim kodlarini paylaşalim

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml”>
<head runat=”server”>
<title>Creacoder.Com – Asenkron Web</title>
<style type=”text/css”>
.metinStil
{
font-family:Calibri;
font-size : small;
color:Navy;
}
</style>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>

Asenkron Verilerimiz :<br />
<asp:GridView ID=”_grid” runat=”server”>
</asp:GridView>
<br />
<asp:Label ID=”lblBilgi” runat=”server”></asp:Label>

</div>
</form>
</body>
</html>

C# Kodlarini paylaşalim

  1. using System;
  2. using System.Data;
  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Data.SqlClient;
  6.  
  7. public partial class _Default : System.Web.UI.Page
  8. {
  9. // sınıf içinde her noktadan erişim için Field değişkenlerimiz
  10.  
  11. // zaman kriterlerini kontrol için 2 tane başlangic ve bitiş
  12. // değişkenlerimiz
  13. static DateTime _beginTime, _endTime;
  14.  
  15. // Ado.NET işlemleri için kullanılacak değişkenlerimiz
  16. SqlConnection _connection;
  17. SqlCommand _command;
  18. SqlDataReader _dr;
  19.  
  20. protected void Page_Load(object sender, EventArgs e)
  21. {
  22. // başlangıc zamanı aliniyor..
  23. _beginTime = DateTime.Now;
  24.  
  25. // Asenkron işlemler için delege örneği üretiliyor… TimeOut konusunda kullanılan 3.parametre
  26. // EndEventHandler anonim metot almiştir.
  27. PageAsyncTask task = new PageAsyncTask(new BeginEventHandler(BeginTask), new EndEventHandler(EndTask), new EndEventHandler(delegate(IAsyncResult ar)
  28. {
  29. if (_connection != null || _connection.State != ConnectionState.Closed)
  30. {
  31. _connection.Close();
  32. this.Title = "Operasyon Zaman Aşimina Uğradi";
  33. }
  34. }), null);
  35. // Sayfamıza bu asenkron işlemleri kayıt ettiriyoruz.
  36. Page.RegisterAsyncTask(task);
  37. }
  38.  
  39. // Asenkron işlem başlatıldığında tetiklenir.
  40. IAsyncResult BeginTask(object sender, EventArgs e, AsyncCallback callBack, object state)
  41. {
  42. // Bağlantilarin hazirlanmasi
  43. // Ado.NET kullananlar cok iyi anlayacaktır ki
  44. // egerki asenkron islem kosturulacaksa bunun bağlantı cümlesinde anlatilmasi gerekir
  45. // son parametre bu özellik içindir
  46. string connectionString = "data source=localhost;initial catalog=AdventureWorks;integrated security=true;Asynchronous Processing=true";
  47. _connection = new SqlConnection(connectionString);
  48. _command = new SqlCommand();
  49. _command.Connection = _connection;
  50. _command.CommandText = "select ContactID,FirstName,LastName from Person.Contact order by newID() DESC";
  51.  
  52. try
  53. {
  54. _connection.Open();
  55. }
  56. catch
  57. {
  58. _connection.Close();
  59. }
  60.  
  61. // asenkron veri çekme işleminin başlatilmasi
  62. return _command.BeginExecuteReader(callBack, state);
  63. }
  64.  
  65. // Asenkron işlem bittiğinde tetiklenir.
  66. void EndTask(IAsyncResult ar)
  67. {
  68. // asenkron işlemin bittiğinde bu işlem değişkeni üzerinden , field değişken
  69. // _dr ‘yı artik doldurabiliriz
  70. _dr = _command.EndExecuteReader(ar);
  71. }
  72.  
  73. // Sayfa arayüze çıkartılırken yapilacak işlemler
  74. // metodumuz , sayfadaki DataGridView kontrolünün
  75. // veri kaynağını belirtiyoruz,asenkron işlemler sırasında
  76. protected override void OnPreRenderComplete(EventArgs e)
  77. {
  78. _grid.DataSource = _dr;
  79. _grid.DataBind();
  80. _connection.Close();
  81. // tüm bu işlemler sonunda bitiş zamanı…
  82. _endTime = DateTime.Now;
  83. lblBilgi.Text = string.Format("Arka Plandaki Islemin Süresi : {0} ms", (_endTime - _beginTime).Milliseconds);
  84. }
  85.  
  86. // Ado.NET kaynaklarinin dispose edilmesi.
  87. public override void Dispose()
  88. {
  89. if (_connection != null) _connection.Close();
  90. base.Dispose();
  91. }
  92. }

buraya kadar geldiğimize göre , yapilmasi gerekenleri paylaşalim,asenkron programlamanın önemi için öncelikle kendi oluşturduğumuz veri kümesinin etkilerini sonrasında ise örnek veritabani olarak seçilen AdventureWorks üzerinde bulunan Person.Contact veri kümesinin etkilerini inceliyor olacağız,bu sebeple ilk test için , connectionString ve CommandText değerlerini görüldüğü gibi görüldüğü kısmı ile değiştirelim

Step 1

Step 1

Şimdi sıra geldi bu değişim sonrasında sayfamızın vereceği tepkiye , çıktımızı aliyoruz.

Async Test 1

Async Test 1

Ve yine değişiklige gidelim connection ve CommandText üzerinde

Step 2

Step 2

ve çıktımızı alalim …

Async Test 2

Async Test 2

Keyifli günler..

C# RssReader

ScreenShot

ScreenShot

Do you want to see more Pics about that Program ? OK,Click Here

basit anlamda , ado.net , c sharp dili ve framework imkanlarıyla yaptığım bir rss kanalı okuyucusu,heryerde her şartta çalışıyor diye birşey olmadığını baştan söyleyeyim.bug çoktur :D uğraşıcak vakit de pek yoktur aslına bakarsanız.amacım WP’lerin rss kanallarını okumaktı başta,ilgi görürse geliştiririm hatta dağıtırım geliştirime açık olur

[download#6#image]

C# MiniProje ~ Odev

hatalara felan bakmayın , ben sadece gerektiği şekilde yazdım,bunu kime yazdın demeyin :D bunu tanıyorum en azından,benim keyfime göre değil olması gerektiğine göre yazılmıştır.Herkes keyfine baksın.

indirin,çizin bozun vs vs,maksat geyyik olsun işte,anladınız siz onu (:

objectOrientedProject2_studentManagement

objectOrientedProject2_studentManagement

[download#3#image]

MiniProje-Object Oriented Programming

nedir,nasıldır,abi bi sorum var,yok 3 sorum var cümleleri email adresime istemiyorum baştan söyleyeyim,ve zaten keyfime göre bir olay bu,almak da zorunda değilsiniz,eleştiri yapıp da kasmak da zorunda değilsiniz.Maksat muhhabbet olsun aşamasındaki bir blog girdisi o kadar :D

be Cool due ! :D

neyse nesne yönelimle programlama adına kendi yaptığım bir arkadaş için daha kim olduğunu bile bilmiyorum ama basit bişi sonuçta onu sizlerle paylaşmak istiyorum.Isteyen arkadaşlar vereceğim linkten indirip inceleyebilir.Gerisi kendisine kalmış.

aaa şurası eksikmiş felan diyebiliyorsanız,buyrun dvd de gönderirim visual studio ortamını,sizde geliştirirsiniz :D

fazla uzadı bu geyik dimi ..

buradan indirebilirsiniz

[download#2#image]