.NET'te Veri Erişimi : ADO.NET

.NET Framework'ün sunduğu veri erişim modeli ADO.NET'e genel bir bakış yapacağız.

Her şey gibi ADO da büyük evrimden (veya hafif devrimden) nasibini aldı. DAO ve ADO derken şimdi ADO.NET''le yüzyüzeyiz. Microsoft''un veri erişimi için sunduğu yeni ara katman olan ADO.NET, bir çok heyecan verici yenilikle geliyor. Yazımızda ADO.NET''i ve getirilerini aktarmaya çalışacağız.

ASP veya VB ile uğraşanlar ADO''yu çok iyi biliyorlar. .NET''e kadar, veritabanlarına, veri yığınlarına erişim için uygulama geliştiricilerin kullandığı en yeni ara katman ADO (ActiveX Data Objects) idi. ADO, gerçekten işleri çok basitleştirmişti. Her türlü veritabanı erişimi için aynı nesne setini kullanmak, veritabanı ile ilgili detayın sadece bir bağlantı cümlesine hapsedilmesi ADO''nun çarpıcı özellikleriydi. ADO, Windows bünyesine yüklenen bir COM bileşeni idi. Gayet anlaşılır nesne modeli ile bizi OLEDB sağlayıcıları ve ODBC sürücülerinin daha karmaşık olan modelinden uzak tutarak, kolayca veritabanı operasyonları yapmamızı mümkün kılıyordu.

Artık karşımızda yepyeni bir veri erişim servisi var: ADO.NET. ADO.NET, sonuna eklenen "nokta net" ten gayet iyi anlaşılacağı gibi .NET bünyesinde bir teknoloji. Yani .NET uygulaması geliştiren bir programcının veriye erişmek için kullandığı her şey ADO.NET''in parçası olacak. ADO.NET, Framework sınıf kütüphanesinde çeşitli aduzaylarından ve bunlara bağlı düzinelerce sınıftan oluşan bir alt set.

ADO.NET elbette ki ADO''nun kullanımında yaşanan güçlüklere çözüm getiriyor ve bunun yanında eski nesne modelini de kısmen koruyor. Kısaca bakalım:

* ADO.NET, veriyi XML ile içiçe bir yapıda ifade ediyor. Bu yeni yapının adı DataSet. Bir dataset standart XML formatında ifade edilebiliyor. Tersi de aynı derecede kolay bir işlem. ADO''da XML desteği kısıtlı düzeydeydi.

* ADO ile genelde veri operasyonları aktif bir bağlantı üzerinden gerçekleşirdi. Şimdi ADO.NET bağlantısız operasyonlara tam destek veriyor. Verilerle işinizi, veri kaynağına en az seviyede erişerek halledebiliyorsunuz. Bu kabiliyet, yine DataSet nesnesi üzerinde. Tüm bunlar ADO.NET''in kalbinin DataSet nesnesi olduğunu anlatmaya yetiyor.

* ADO da veritabanı bağlantıları OLEDB sağlayıcıları üzerinden gerçekleşiyordu. Bir Access veritabanına bağlanmak da, bir SQL Server veritabanına bağlanmak da aynı köprüden geçmemizi gerektiriyordu. Şimdi ADO.NET, SQL Server''le direk konuşabilen bir nesne topluluğuna sahip. OLEDB ile klasik bağlantı şansınız devam ederken, size iyilenmiş bir SQL Server erişimi de sunuluyor.

Veri sağlayıcıları biraz açalım.

.NET Veri Sağlayıcıları

Sağlayıcılar, veri kaynaklarına bağlantı kurar, komut icra ettirir, onlardan sonuç setleri getirirler. Kısaca veri kaynağı ile uygulamanız arasında bir köprüdür. (.NET veri sağlayıcılarına, Managed Data Providers da denilmektedir.)

.NET, bünyesinde iki tane sağlayıcı ile geliyor: OLEDB .NET Veri Sağlayıcısı ve SQL Server .NET Veri Sağlayıcısı. İlkinin bildiğimiz OLEDB''nin .NET uyarlaması olduğu belli. Asıl dikkat çekici olan ikincisi. Bu sağlayıcı Microsoft SQL Server 7 ve üst sürümleri için optimize edilmiş. Microsoft, SQL Server 7 ve yukarısıyla çalışacaksanız bu sağlayıcıyı kullanmanızı öneriyor. Zira bu sağlayıcı, SQL Server ile en alt seviyede, yani TDS (Tabular Data Stream) protokolüyle konuşuyor. Bu da size performans kazancı olarak dönüyor. Bir sevindirici haber de geçen haftalarda geldi. Artık Oracle veritabanları için de spesifik bir .NET sağlayıcısı mevcut.

OLEDB''nin çıkışıyla geri plana çekilen ODBC (Open Data Base Connectivity) teknolojisinin akıbetini merak edenler yok mu? Microsoft, ODBC için de bir .NET sağlayıcısı yazdı. Ama bu .NET''in standart sağlayıcıları arasında gelmiyor. Ayrıca edinmeniz gerekiyor. (http://msdn.microsoft.com/downloads)

Bilmemiz gereken bir başka önemli nokta da, her veri sağlayıcısının Framework sınıf kütüphanesinde farklı aduzayları (namespace) ile temsil ediliyor oluşu. OLEDB sağlayıcısı için System.Data.OleDb, SQL Server sağlayıcısı için de System.Data.SqlClient aduzayını kullanacağız. ADO.NET ile ilgili temel sınıfların da System.Data aduzayında bulunduğunu hatırlatalım.

ADO.NET Mimarisi

ADO.NET mimarisini ikiye ayırarak incelemek gerekiyor. Biri bağlantılı, diğeri bağlantısız taraf. Bağlantılı taraf, bir .NET veri sağlayıcısının üzerinden yapılan bağlantıyla çalışan nesneleri içeriyor. Connection, Command, DataRader, DataAdapter bu nesnelerin başlıcaları. Bu nesnelerin ortak özelliği, aktif bir bağlantıya ihtiyaç duymaları. Diğer tarafta, bağlantısız bir yapı var: DataSet. DataSet, veri kaynağı bağlantısından bağımsız olarak tasarlanan bir nesne. Hafızada duran ve istendiğinde XML olarak kalıcı hale getirilebilen ilişkisel bir veritabanı olarak düşünebilirsiniz. Zira DataSet, birden fazla tablolar içerebiliyor; bu tablolar arası ilişkiler, kısıtlamalar, görünümler tanımlamanıza olanak veriyor.

Bu mimariyi en iyi, dokümantasyondan aldığım aşağıdaki diyagram özetleyecek:



Görüldüğü gibi, bağlantısız veriyi ifade eden DataSet nesnesi, bağlantılı tarafa DataAdapter nesnesiyle ulaşıyor. Ve bir DataSet, tek metodla disk üzerinde bir XML dosyasında saklanabilecek veya bir XML dosyasından vücut bulabilecek esneklikte.

Bitirirken...

.NET''in XML desteği had safhada olan veri erişim mimarisine verdiği isim ADO.NET. Bu mimari, Framework sınıf kütüphanesinde bir çok aduzayı ve düzinelerce sınıfla temsil ediliyor. ADO.NET, eski versiyonu ADO''dan farklı olarak bağlantısız veri operasyonlarına tam destek veriyor. Bu iş için DataSet adında iddialı bir nesnesi var.

Bu yazımızda, ADO.NET''i konsept düzeyinde anlatmaya çalıştık. İlerleyen haftalarda, tek tek bu mimariyi oluşturan nesneleri, uygulama örnekleriyle beraber işleyeceğiz.

İyi çalışmalar.

,

Arşivden

Yorum bulunmuyor.

Yorum yazabilirsiniz


* [b], [i] ve [quote] serbest