MS .Net Framework

C# Serialization ve DeSerialization

Serileştirme (Serialization), nesnelerin çalışma zamanındaki (runtime) durumlarını alıp geçici veya kalıcı olarak bir kaynağa (file,memory, database, socket, buffer vb.) saklamak/transfer etmek için belirli bir forma dönüştürülüp yazma işlemidir.

Ters-serileştirme (Deserialization), bir kaynakta (file,memory, database, socket, buffer vb.) bulunan serileştirilmiş (serialize) belirli bir formdaki nesnelerin, ihtiyaç olduğunda çalışma zamanındaki durumunu elde etme işlemidir.

Serilization                                                                    Deserialization

Serialization ve Deserialization

(daha&helliip;)

C# MemoryStream, NetworkStream, CryptoStream

MemoryStream Sınıfı

Uygulamanızın sık sık veriye ihtiyaç duyduğu durumlarda verileri dosya (file)’da tutmak uygulamanızın performansını düşürür ve arayüzün yanıt süresini geciktirir. Örneğin uygulamanız bir veri kümesinden sıklıkla bir referans veriye ihtiyaç duyduğu zaman bu veri kümesini dosyada tutmak doğru bir seçim olmaz. Bu gibi durumlarda veriyi dosya yerine MemoryStream’de saklamak daha efektif bir çözüm olmaktadır. Çünkü MemoryStream geçici veri saklama işleminde veriyi bellekte sakladığından hızlı depolama imkanı sunmaktadır.
(daha&helliip;)

C# Application Domains

Application domain işletim sisteminde bulunan process’lere benzetilebilir. Öyleyse process nedir?

Process, çalıştırdığınız uygulamanın bellekte kendine ayrılan bölümü kullanmasını sağlayan ve diğer uygulamaların birbirini etkilememesini sağlayan izolasyon konteynırlarıdır. Her process kendi sanal (virtual) bellek adresine sahiptir ve diğer process’ler bu alana erişemezler. 32 bit Windows işletim sistemlerinde her process uygulamanın yapısına bağlı olarak maksimum 3 GB bellek kullanabilmektedir. Ancak kullandığınız işletim sistemi versiyonuna göre bellek kullanım miktarı farklılık göstermektedir. Aynı şekilde bellek kullanımı 64 bit sistemlerde önemli derecede arttırılmış olup limit yazılımdan ziyade donanımdan kaynaklanmaktadır. Örneğin Windows 7 64 bit’de 192GB a kadar bellek kullanılabilir, Windows Server 2008 64 bit’de bu sınır 2TB’dır.

Application Domain geliştiriciye izolasyon ve güvenlik seviyesi sağlamaktadır. Her .Net Process’i varsayılan olarak bir Application domain’i içinde barındırır. Bu application domain CLR tarafından process’in başlatılması ile otomatik oluşturulur ve gerektiğindede aynı process içinde birden çok Application Domain yaratılabilir. Her application domain kendine ait bellek bölgesine ve güvenlik seviyesine sahip olup böylece process içinde diğer application domain’lerin bellek belgesine erişip birbirlerini kararsız hale getirmesine engel olunmuş olur.

Ayrıca Application domain’lere runtime’da dinamik olarak Assembly’ler yüklenip, istendiğinde yüklenen assembly’e ait kaynaklar bellekten temizlenebilir.

Application domain’e yüklenen assembly’ler deki sınıflar serileştirilebilir (Serializable) olmalı yada MarshalByRefObject sınıfından türemelidir.

(daha&helliip;)

C# Extension Methods

Genişletme metodları bir tip (integer veya string vb.) üzerinde herhangi bir değişiklik yapmadan o tipi kolayca genişletmemize olanak sağlayan bir yapıdır. Daha basit olarak anlatacak olursak tanımladığımız bu Genişletme Metodları özünde bildiğimiz static metodlardır. .Net Framework 3.5 ile kullanıma gelmişlerdir, .Net Frameworkte içerisinde bulunan ve tanımlamış olduğumuz her tip için uygulanabilmektedir.
(daha&helliip;)