Yazar arşivleri: Ahmet Kaymaz

ADO.NET’te MARS özelliği [VB.NET, C#]

MARS(Multiple Active Result Sets), ADO.NET 2.0 ile birlikte geliştirilmiş olup tek connection üzerinden birden fazla query veya stored procedure(multiple queries) çalıştırmaya izin veren bir özelliktir. Bu özelliği kullanarak aynı bağlantı nesnesini kullanarak birden fazla veri seti üzerinde forward-only, read-only işlemler yapılabilir. Okumaya devam et

Ghost Cleanup, DBCC IND, DBCC PAGE, DBCC LOG

SQL Server üzerinde row, page veya extend bazında DELETE işlemi yapıldığı zaman, SQL Server silinmek istenen nesneleri o anda hemen silmez onları Ghost Object(Hayalet Nesne) olarak işaretleyip askıya alır. Yani silme işlemi fiziksel değil mantıksal olarak gerçekleşir. Sistemin durumuna göre bir süre sonra arka tarafta çalışan bir processle fiziksel silme işlemini gerçekleştirir. Ghost Record Cleanup olan isimlendirilen bu process, DELETE işlemi esnasında SQL Server yapacağı fiziksel silmeden yaşayacağı performans sorununu aşmak için oluşturulmuş bir yöntemdir. Ayrıca silinmiş nesneleri daha hızlı bir şekilde rollback etmek amacıyla da bu sistem kullanılır. Okumaya devam et

ROW_NUMBER, PIVOT, UNPIVOT, OUTPUT, APPLY

ROW_NUMBER, RANK, DENSE_RANK, NTILE, PIVOT, UNPIVOT, OUTPUT, CROSS APPLY, OUTER APPLY, EXCEPT, INTERSECT, BEGIN TRY, END TRY, BEGIN CATCH, END CATCH, C# Assembly,CLR, Common Table Expression (CTE)

SQL Server 2005 ile birlikte T-SQL dilinde güncellemeler, yeni ifadeler geliştirildi. Bu yeni gelen özelliklerden bazıları DDL (data definition language) bazıları da DML (data manipulation language) tarafında gerçekleştirildi. Bunların başında PIVOT ve UNPIVOT komutları, CTE, DDL Trigger, exception handling(TRY/CATCH block), TOP ifadesinin genişletilmesi, OUTPUT ifadesi gelmektedir. Bu yazıda bu yeni özellikleri örneklendireceğiz. Okumaya devam et

SQL Server 2005’te yeni ne var – II [Programlama]

Önceki yazıda SQL Server 2005 veri tabanı yöneticileri için geliştirdiği yenilikleri vermeye çalıştık. Bu yazıda da uygulama geliştiriciler için gelmiş olan yeni özellikleri, T-SQL’deki değişiklikleri özetlemeye çalışacağız. SQL Server 2005 ile birlikte programcılar için gelen en önemli iki özellik, .NET Framework desteği ve daha kullanışlı, yetenekli bir XML teknoloji desteğidir. .NET Framework desteği, VS.NET IDE’sinde SQL Server’in yönetimini, XML desteği de sunucunun farklı platform ve cihazla iletişimi sağlamaktadır.
Developerlar için sunulan yenilikleri şu başlıklarda toplayabiliriz: Okumaya devam et

SQL Server 2005’te yeni ne var – I [Yönetim]

2005’in Kasımında release edilmiş olan SQL Server 2005, Microsoft’un tıpkı SQL Server 2000’de olduğu gibi veri tabanı dünyasında attığı önemli bir adım olmuştur. Bu yeni versiyon,
Süreklilik ve Yönetilebilirlik(Availability and Manageability)
Güvenlik, Performans ve Ölçeklenebilirlik(Security, Performance and Scalability)
alanlarında daha gelişmiş özellikler sunmaktır. Bu özellikleri, SQL Server’in resmi sitesinden(https://www.microsoft.com/sql) derlemeye çalışacağız. Okumaya devam et

ASP.NET Page Life Cycle (Sayfa Yaşam Döngüsü)

ASP.NET tabanlı site hazırlarken gerek sunucu ile istemci arasındaki işleyişi izlemek gerekse web tabanlı özel kontrol geliştirirken request-response sürecindeki yol haritasını, Asp.NET yaşam döngüsünü bilmek sürece olan hakimiyetimizi artıracaktır. Asp.NET’in sayfa yaşam döngüsünde her request işleminde page nesnesi ve içindeki kontroller yeniden oluşturulur ve işlem sonucunda yok edilir. Bu oluşma-yok olma sürecinde bazı evre ve olaylar gerçekleşir. Bu evre ve olaylar, sayfa ve sayfa içerisindeki kontrollerin yaşam döngüsüyle ilintilidir. Burada Asp.NET yaşam döngüsünü hatırlayacak kadar burada özetlememiz faydalı olacaktır. Aşağıdaki tabloda sayfa ve kontrol bazlı yaşanan evreler gösterilmiştir. Okumaya devam et

Generic Türler (Generic Delegate) -IV

.NET 2.0 ile birlikte delegate(temcilsi) yapılarını da generic olarak tanımlama şansı elde etmiş olduk. Delegate, bir olay gerçekleştiği zaman bunu ilgili yerlere(metodlara) bildiren temsilcilerdir. Delegate tabanlı işlem yapılacağı zaman öncelikle delegate türünde bir temsilci metod tanımlanır ardından sözkonusu olay gerçekleştiği zaman bu temsilcinin bilgilendirme yapacağı metodlar, temsilci metodun listesine eklenir. Çalışma zamanında olay(event) gerçekleştiği zaman temsilci metod yani delegate çağrılır. Temsilci metod da hangi metodları temsil ediyorsa onları tetikler, onları gerçekleşen bu event’ten haberdar eder. Delegate yapılarını, daha sonra “Delegate & Event” konulu bir makalede işleyeceğiz. Okumaya devam et

Generic Türler (Generic Types) -II

.NET 2.0 ile birlikte gelmiş en güçlü özelliklerinden biri hiç şüphesiz C++’taki template konseptiyle benzerlik gösteren generic yapısının destekleniyor olmasıdır. .NET uygulamalarında değer ve referans olmak üzere iki tür veri türü kullanılacağını biliyoruz. Bazı durumlarda aynı değişkende hem değer hem de referans türünde veriler barındırmak isteyebiliriz. Bu durumda Framework’teki bütün veri türlerinin türediği System.Object türü kullanılır. Bütün veri türleri, temelde object türünde olduğu için bir değişkenin hem değer hem de referans değerleri koruması için değişkenin türünü object olarak set ederiz. Bu yöntem, çoğu zaman kullanışlı görünse de beraberinde performans kaybını getirir. Bir programda iyi performans sağlamanın bir yolu da geçici olarak tuttuğumuz verileri memory üzerinde en doğru tiplerle barındırmaktır. Yani integer olarak strack üzerinde korumamız gereken “456¨ değerini object türünde heap üzerinde depolamamız mantıklı bir çalışma olmaz. Ve en önemlisi object türüne değer atarken veya bu türden değer okurken, CLR değerini gerçek tipini yakalayarak boxing, unboxing işlemleri yapar. Bu da CPU bacağında ek yük oluşturmaktadır.

Bu şekilde çalışan veri türlerinin başında koleksiyon sınıfları gelmektedir. Önceki bölümlerde işlediğimiz koleksiyon nesneleri, elemanları doğrudan object türünde barındırır. Sadece numeric değerleri tutmak istesek bile bu değerler koleksiyonlar tarafından object olarak tutulur. Bu değerleri, başka işlemlerde kullanmak üzere okumak istediğimiz casting işlemi yaptırmak gerekir. Oysa veriler, koleksiyon içerisinde oldukları gibi yani integer türünde durmuş olsalarda boxing, unboxing, casting gibi performans kaybına neden olan işlemler olmayacaktı. .NET 2.0 ile birlikte bu sorun, Generic denilen mimariyle giderilmiş oldu. Okumaya devam et

Generic Türler (Generic Types) -I

Bu yazıda .NET 2.0 ile birlikte gelmiş ve .NET dillerinin üstünlüğünün bir özelliği olarak görülen Generic veri tiplerini işleyeceğiz. Öncelikle konuyla ilgili koleksiyon sınıfları hakkında bir özet geçmemiz faydalı olacaktır.
Bilindiği gibi .Net Framework, koleksiyonları tanımlamak ve amacına uygun kullanmak için birçok sınıf sunar. System.Collections namespace’in altında bulunan bu sınıflar, ArrayList, HashTable, SortedList, Queue, Stack ve BitArray dır. Koleksiyonlar, Array kullanımına göre daha esnek ve dinamik bir yapıya sahiptir. Okumaya devam et