|
|
|
| TÜRKİYE'NİN BİLGİ TEKNOLOJİLERİ DERGİSİ | BİZE ULAŞIN | DÜNYA YAYINCILIK A.Ş. |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
||
|
|
||
![]() ![]() ![]()
Web sitenizi dergimizde tanıtmak, BYTE Dergi, CD, TV ve Online ile ilgili görüş ve önerilerinizi bizlere ulaştırmak için
Okur hattı bölümünü kullanabilirsiniz. ![]() ![]() |
Makaleler
SQL Server 2005 ve CLR Entegrasyonu
SQL Server 2005 ve CLR Entegrasyonu
Bu yazımızda veritabanı dünyasına farklı bir bakış açısı getirecek olan SQL Server 2005’in CLR entegrasyonunu inceleyeceğiz.
SQL Server 2005’in en dikkat çekici özelliklerinden biri CLR ile birlikte çalışabilmesi. Bu sayede kendinizi en rahat hissettiğiniz .net dili ile veritabanı nesneleri oluşturma, oluşturduğumuz nesneleri yapılandırma ve hatta veritabanı yönetim sistemimizin yönetimini sağlama imkanına kavuşuyoruz. Artık geliştirici T-SQL kullanmadan, istediği dilde (Vb.Net,C#...) veritabanı üzerinde trigger 'lar , stored procedure'ler ya da fonksiyonlar yazabilecek, veritabanlarını oluşturup silebilecek. Bu aynı zamanda herhangi bir veritabanı nesnesi yazarken binlerce ( abartmıyorum :) ) bileşeni sunan .Net Class Library'den faydalanabilme anlamına da geliyor. Fikir vermesi açısından, aşağıda girilen ID ‘ye göre isim döndüren bir fonksiyon görüyoruz. Bu fonksiyon .net dillerinden VB.NET ile kodlanmasına rağmen SQL Server’ın üzerinde saklanıyor ve çalıştırılıyor. Imports System.Data.Sqlserver Imports System.Data.Sql Public Class Kitaplik <SqlFunction(DataAccess=DataAccessKind.Read)> Public Shared Function YazarDondur() as String Dim cmdSql As Sqlcommand = Sqlcontext.GetCommand() cmdSql.CommandText= _ "Select Yazar from Kitap where KitapId = @prmKitapId" Dim prmKitapId As SqlParameter = _ cmdSql.Parameters.Add("@prmKitapId",SqlDBType.String) prmKitapId.Direction = ParameterDirection.Input prmKitapId.Value="K001" Return Ctype(cmdSql.ExecuteScalar(),String) End Function End Class Bundan önce kullandığımız ADO.NET kodlarına ne kadar da benziyor değil mi? Gördüğünüz gibi SQL Server 2005 için yazılan bu fonksiyonun kodlarını yorumlamak .net ile haşır neşir olanlar için hiç de zor değil. SQL Server’ ı programlamak için yeni bir dil öğrenmek yerine bildiğimiz dili SQL Server’ın desteklemesi elde edinilen bilginin katlanarak artmasına olanak sağlıyor. Bu noktada T-SQL’in akibetinin ne olacağı sorusu akıllara geliyor. Sanılanın aksine T-SQL rafa kaldırılmış durumda değil! SQL Server 2005’te T-SQL işlevselliğini, geliştirilmiş ve yeni ekleniş birçok özellikle koruyor. Try/Catch yapısının eklenmesi ya da CLR ile bütünleşmesi için eklenen deyimler bu gelişime örnek verilebilir. Aşağıda Try/Catch yapısına ait bir örnek bulunuyor; BEGIN TRY BEGIN TRAN INSERT INTO tblMusteri (Id,MusteriAdi,Bakiye,Tarih) VALUES (@Id, @MusteriAdi, @Bakiye, GETDATE()) COMMIT TRAN END TRY
BEGIN CATCH TRAN_ABORT ROLLBACK INSERT INTO tblHatalar VALUES ('Hata Oluştu')) END CATCH Peki bazı işlemleri hem T-SQL ile hem .Net programlama dillerinden biriyle yapabileceksek T-SQL ve .Net kodu arasında tercihi neye göre belirleyeceğiz? Genel olarak T-SQL'in, veriye erişim ve veri üzerinde toplu işlemler için kullanılması daha uygunken, .net kodlarının veri üzerinde daha karmaşık (ileri düzey matematik ya da katar işlemleri gibi) işlevleri yerine getirirken kullanılması uygun diyebiliriz. CLR ile bütünleşme beraberinde arttılmış güvenliği (code access security v.b.), bellek yönetimini (garbage collection v.b.) ve çok kanallı (multi threading) programlanabilmeyi de getiriyor. Burada sadece adını andığımız bu başlıkların hepsi başlı başına birer makale konusu. Genel olarak değerlendirdiğimizde ise SQL Server 2005-CLR işbirliği işlevsellik açısından ani bir patlama gibi.
|
|
||||||||||||||
|
|
![]() |
|
| ANA SAYFA | FORUM | ABONE OLUN | BİZE ULAŞIN
Sitelerimiz: pcworld.com.tr | computerworld.com.tr | dunya.com | dunyastore.com
|
©2004 - 2009 BYTE Türkiye |