Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Mehmet Gökay Okutucu
Mehmet Gökay Okutucu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
2 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: ado.net alabiliyoruz. context entity function isimli kullanarak operation) product projemize servis sonraki verileri veriye veriyi .NET 3.x Mehmet Gökay Okutucu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : .NET 3.x
Yayınlanma Tarihi : 10.1.2009
Okunma Sayısı : 24546
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 3.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 3.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 3.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 3.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Ajax ile Ado.Net Data Services Kardeşliği - Bölüm 1
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bugün sizlerle Ado.Net Data Services kullanarak veriye asenkron olarak nasıl ulaşabileceğimize değinmeye çalışacağız. Başlamadan önce bu teknolojinin ne olduğuna, hangi noktada işimize yarayabileceğine kısaca değinelim.

Ado.Net Data Services ile Microsoft bizlere; veri şemalarını(data schema) nesnelere dönüştürüp bunları servisler üzerinden kullanmamızı sağlayan bir yapı sağladı. Biz bu verilerle sunucuya istekte bulunarak Atom veya Json(JavaScript Object Notation) formatlarında alabiliyoruz. Üstelik bu servisten istediğimiz verileri, belirttiğimiz sorgu cümlelerine göre de getirebilmekteyiz. Peki tüm bunlar bize neler kazandırıyor? Kazandırdıkları yanında bizden alacağı şeyler nelerdir? İster istemez kimilerinizin aklında bu sorular belirmeye başlamıştır bile. O zaman öncelikle Ado.Net Data Services'in bize neler kazandırdığından bahsedelim. Bu arada yazının ilerleyen kısımlarında bu uzun yazımdan kurtularak Ado.Net Data Services'i kısaca ADS şeklinde adlandıracağım.

Az önce de belirttiğimiz gibi verileri Atom ve Json olarak alabiliyoruz. Özellikle Json formatında gelen bu verileri jQuery ile rahatlıkla alabilir ve istemci tarafında işleyebiliriz. Birde Atom formatında gelen çıktı, Json formatında gelen çıktıdan daha büyük boyutta. Böyle bir durumda veriyi sunucudan Json formatında istemek daha akıllıca bir seçenek olabilir. Diğer güzel bir tarafı ise ADS, REST(Representational State Transfer) modele göre hizmet veren bir servistir. Bu model ile sorgu cümlelerinini veri servisinin URL’inde belirtip; sonuç kümesini, yapılan sorgunun sonucuna göre alabiliyoruz. İstersek servis referansını kullanarak diğer bir projeden LINQ ile de veriyi isteyebilmekteyiz. Bu seçimi yapmak yazılımcının inisiyatifine kalmış.

İsterseniz biraz da bize kaybettirdiği taraflardan bahsedelim. Bu konu, bu camiada pek bahis konusu olmasada; kusursuz hiçbir şey olmadığını hepimiz biliyoruz. Bu felsefeyle hareket ettiğimizde ADS’ninde bizden aldığı birkaç şey var. Örnek vermek gerekirse çok büyük verilerde trafik üzerinde olumsuzluk yaratacağı kesin bir sonuçtur. Bu yüzden ADS’yi küçük verileri çekmekte kullanabiliriz Bununla birlikte kullanılan servis bir WCF servisi olduğu için güvenlik önemlerini almak akıllıca olacaktır.
 
WCF ile güvenliği sağlamak için Burak Selim Şenyurt'un ilgili makalerine aşağıdaki linklerden erişebilirsiniz.



İsterseniz şimdi ADS ile veriye Asp.Net Ajax kullanarak nasıl erişebileceğimiz ile ilgili bir örnek yapalım ve konuyu iyice pekiştirelim. Yüzüğün Gücü : ADS ile Ajax Kardeşliği

Öncelikle Visual Studio 2008’imizi açalım ve yeni bir web uygulaması yaratalım. Ben yaratacağımız bu projeye "ADSIlkOrnek" ismini vereceğim. Projemize isim verip oluşturduktan sonra Solution Explorer'dan proje ismine sağ tıklayıp Add New Item'a basalım. Buradan projemize yeni bir "Ado.Net Entity Data Model’ı ekleyeceğiz.

Ado.Net Entity Data Model; bağlanacak olduğumuz veritabanı üzerindeki veri nesnelerine ait modelleri oluşturmamızda bize yardımcı olacak olan arabirim.
Ekleme işlemini gerçekleştirdikten hemen sonra karşımıza bir sihirbaz gelecek. İlk adımda kullanacağımız Entity Data Model'i oluşturacağımız seçenekler sunuluyor. Biz hazır bir veritabanından oluşturacağımız için hiçbir değişiklik yapmadan ileri butonuna basıyoruz. Sonraki adımda kullanacağımız bir bağlantı eğer varsa bu bağlantıyı seçip devam ediyoruz. Eğer yoksa yeni bir bağlantı oluşturup, gerekli ayarlamaları yapıp ileri butona basıyoruz. Bir sonraki adımda kullanacağımız veri nesnelerini(AdventureWorks içindeki Product ve ProductSubcategory tablolarını) işaretleyip Model Namespace'imizide değiştirmeden Finish butonuna basıyoruz.

Entity Modelimizi oluşturduktan sonra projemize Ado.Net Data Service isimli proje öğemizi ekliyoruz. Sonrasında servis nesnemiz içerisinde aşağıdaki değişiklikleri yapıyoruz. Burada öncelikle namespace kısmına AdventureWorksModel veri servisi nesnemizi ekliyoruz. Sonrasında sınıfın türetildiği DataService nesnesinin tipine AdventureWorksEntities isimli varlık nesnemizi yazıyoruz. Son olarakta veri servisine erişim ayarlamalarını yapıyoruz. Biz şimdilik "AllRead" isimli erişim özelliğini seçili durumuna getirelim. Çünkü şu an için sadece veriyi okuma işlemi yapacağız.Bir sonraki makalede CRUD(Create Read Update Delete) işlemlerini ele alacağız ve burada "All" özelliğini seçili duruma getirip okuma işlemlerinin yanı sıra yazma işlemlerini de gerçekleştireceğiz. ADS'deki veri servisine erişebilmek için özel bir script dosyamız var. Öncelikle bu script dosyamızı indirelim ve proje içine ekleyelim. ( AJAX Client Library for ADO.NET Data Services ) Sonrasında bu JavaScript dosyasını ister Head tagları içerisinde, ister ScriptManager içerisinde referans olarak ekleyebiliriz. Yalnız bunlardan bir tanesini seçmek zorundasınız. Resimdeki gibi ikisini birden yazıp hataya neden olmayalım :) Ben seçimimi ScriptManager şeklinde kullanmayı tercih ettim. Öyleyse devam edelim; Şimdi markup kısımını biraz daha detaylandıralım sonrasında Data Service nesnemize bağlanmak için scriptimizi yazmaya başlayalım.
 
<body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/Scripts/DataService.js" /> </Scripts> </asp:ScriptManager> <div> <input id="queryButton" type="button" value="Get Data" onclick="return queryButton_onclick()" /><br /> <ul id="resultList"></ul> </div> </form> </body>
Veriye erişebilmek için javascript’imizi de yazalım;

<head runat="server"> <title></title> <script language="javascript" type="text/javascript"> function queryButton_onclick() { var adventureService = new Sys.Data.DataService("AdventureWorksDataService.svc"); adventureService.query("ProductSubcategory", cbSuccess, cbFailure); } function cbSuccess(result, context, operation) { var resultList = document.getElementById(’resultList’); for (var i in result) { var thisCate = result[i]; var li = document.createElement(’li’); li.appendChild(document.createTextNode(thisCate.Name)); resultList.appendChild(li); } } function cbFailure(error, context, operation) { alert("Error!"); } </script> </head>
Artık projemizi test etmeye başlayabiliriz. Ama test etmeden önce dilerseniz neler yaptığımıza bir göz atalım. Öncelikle bir html button koyduk. Bu düğmeye basınca queryButton_onclick fonksiyonu ateşlenecek. Fonksiyon içerisinde ise DataService.js isimli javascript dosyamız sayesinde veriye erişmek için bize yardımcı olacak olan metodu kullanıyoruz. Servis nesnemizi yarattıktan sonra bu nesne içerisindeki query isimli metot ile sorgumuzu gerçekleştirip veri talebimizi iletiyoruz. İlk parametre ile REST modele göre sorgumuzu yazıyoruz. Biz burada “ProductSubcategory” tablomuzun tamamını istiyoruz. İkinci paremetrede ise buraya işlemlerin başarılı olması halinde çalışacak olan callBack metodunu yazıyoruz. Başarısız olmasında ise 3. Parametre ateşlenecek ve buradaki callBack metodu çalıştırılmış olacak. Sıra F5’e basmaya geldi. Bakalım nasıl bir sonuç gösterilecek.

Tam istediğimiz sonuçla karşılaştık ve bunu sayfamız postBack olmadan yaptık. Peki ya ilişkili iki tablomuz olsaydı nasıl olacaktı. O zaman örneğimizi geliştirmeye devam edelim ve javascriptimizi biraz değişikliğe uğratalım.

<head runat="server"> <title></title> <script language="javascript" type="text/javascript"> function queryButton_onclick() { var adventureService = new Sys.Data.DataService("AdventureWorksDataService.svc"); adventureService.query("ProductSubcategory?$expand=Product&$top=5", cbSuccess, cbFailure); } function cbSuccess(result, context, operation) { var resultList = document.getElementById(’resultList’); for (var i in result) { var thisCate = result[i]; var li = document.createElement(’li’); li.appendChild(document.createTextNode(thisCate.Name)); var subResultList = document.createElement(’ul’); for (var k in thisCate.Product) { var thisProd = thisCate.Product[k]; var subLi = document.createElement(’li’); subLi.appendChild(document.createTextNode(thisProd.Name + ’ : ’ + thisProd.Color)); subResultList.appendChild(subLi); } li.appendChild(subResultList); resultList.appendChild(li); } } function cbFailure(error, context, operation) { alert("Error!"); } </script> </head>
İlk değişikliği sorgu cümlemizde fark edeceksiniz. Buradaki expand anahtar sözcüğü ile ProductSubcategory nesnemiz içerindeki Product özelliğini genişletilmiş olarak talep ediyoruz. Sonra ikinci bir for ile Product nesnesi içerinde iterasyonu gerçekleştirip, alt bir sıralama yapıyoruz.

Evet bu makalemizde sizlerle Ado.Net Data Service üzerinden veriye Ajax ile ulaşıp, yazdığımız sorgular ile sonucu sunuma taşıdık. Farklı bir konuda, farklı bir makalede görüşünceye dek esen kalın...

Örnek proje

Mehmet Gökay Okutucu
Email : [email protected]
Blog : http://gokayokutucu.blogspot.com
Makale:
Ajax ile Ado.Net Data Services Kardeşliği - Bölüm 1 .NET 3.0 ve .NET 3.5 Özel Bölümü Mehmet Gökay Okutucu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor