İçerikler :

Bu Sayfayı Paylaş:

Kavram

.NET

Tanım: Microsoft tarafından geliştirilen , çeşitli araçlar ve diller sağlayan, uygulama çalıştırma , geliştirme, yönetimi platformu. Ana kısmına .NET Framework adı verilmektedir ve .NET ile .NET Framework birbirlerini yerine de kullanılabilmektedir.

Kavram

.NET Framework

Tanım: Microsoft tarafından geliştirilen, C#, VB, ASP.NET gibi dillerin ve ortamların alt yapısını sağlayan, uygulama derleme, çalıştırma işlevini yerine getiren, .NET platformunun temelini sağlayan bir framework.

Kavram

Visual Studio

Tanım: Microsoft'un geliştirdiği, farklı diller (özellikle .NET dilleri) ile uygulama geliştirmeyi sağlayan IDE.

Kavram

Common Language Runtime - CLR

Tanım: .Net framework'de, farklı dillerde yazılan kodların derlenmesini ve çalıştırılmasını sağlayan çalışma anı (runtime) ortamı.

Kavram

Common Intermediate Language -CIL - Microsoft Intermediate Language - MSIL

Tanım: .Net framework'de, farklı dillerde yazılan kodların çevrildiği kod. Common Intermediate Language (eski adıyla MSIL), Common Language Runtime - CLR tarafından çalıştırılmaktadır

Kavram

.Net Framework Class Library - FCL

Tanım: .Net Framework'ün tüm diller ve tüm ortamlar için gerekli temel sınıfların sağladığı kütüphane

Kavram

Windows CardSpace

Tanım: Net Framework'de 3.0 ile birlikte gelen, kimlik denetimi ile ilgili framework

Alıntı

C Sharp ile Nesneler Üzerinde JSON Dönüşümleri

Bu yazımda C# ile nesneleri JSON formatına dönüştürme ve JSON formatından tekrar nesne haline çevirme işlemini nasıl yapabileceğimizi ve bu çevirme işlemlerini nerelerde kullanabileceğimizi göstermeye çalışacağım
Sahipleri : Mehmet Duran
Bu yazımda C# ile nesneleri JSON formatına dönüştürme ve JSON formatından tekrar nesne haline çevirme işlemini nasıl yapabileceğimizi ve bu çevirme işlemlerini nerelerde kullanabileceğimizi göstermeye çalışacağım. JSON formatı tıpkı XML formatı gibi verileri düzenli şekilde ifade etmeyi sağlayan bir format. Script ve Ajax işlemlerinde oldukça fazla kullanılan bir veri formatı. XML formatına göre daha performanslı olan bir yapı. Bu yapıyı C# ile de kullanabiliyoruz. Elimizde olan tüm nesneleri JSON formatına dönüştürebiliyor veya JSON formatında olan bir veriyi nesne haline çevirip kullanabiliyoruz. Şimdi bu dönüşümleri nasıl yapacağımıza bakalım.
Öncelikle dönüştürme işlemini yapacağımız nesneden söz edeyim. Bu nesne JavaScriptSerializer nesnesi. C# içinde bu nesneyi kullanabilmek için System.Web.Script.Serialization kütüphanesini eklememiz gerekiyor. Bu kütüphaneyi ekledikten sonra dönüşüm işlemlerini yapmaya başlayabiliriz. İlk olarak basit bir C# nesnesini JSON formatına dönüştüren kodları paylaşacağım.
    Insan i = new Insan()
    {
      Adi = "Mehmet",
      SoyAdi = "Duran",
      Yasi = 22
    };
    JavaScriptSerializer js = new JavaScriptSerializer();
    string json = js.Serialize(i);
 
    //{
    //  "Adi" : "Mehmet",
    //  "Soyadi" : "Duran",
    //  "Yasi" = 22
    //}
 
Burada oluşturduğumuz nesne altında tanımlı olan Serialize metodu ile nesneyi dönüştürüyoruz. Elde edilen string nesnenin JSON formatına dönüştürülmüş halidir. Bu hali çeşitli durumlarda kullanmak zorunda olabiliriz. Uygulama geliştirirken bir yerden bir yere parametre ile veri aktarıyoruz. Bazı durumlarda veriler string türünden ifade edilmek durumundadır. İşte bu durumlarda string dışında bir veri aktarmamız gerekiyor ise buradaki yöntemi kullanıp nesneyi önce JSON formatına dönüştürüp bir string olarak elde edebilir ve parametre olarak taşıyabiliriz.
Yukarıda bir nesneyi JSON formatına dönüştürme kodları yer almakta. JSON formatına dönüştürdükten sonra dönüştürülmüş yapıyı tekrar nesne haline de çevirebiliyoruz. Bunu da aşağıdaki kodlarda görebiliriz.
    List<Insan> insanlar = new List<Insan>()
    {
      new Insan(){ Adi = "Mehmet", SoyAdi = "Duran", Yasi = 22 },
      new Insan(){ Adi = "Sinan", SoyAdi = "Haymana", Yasi = 18 },
      new Insan(){  Adi = "Semih", SoyAdi = "Safranbolu", Yasi = 14 },
      new Insan(){  Adi = "İsmail", SoyAdi = "Bergama", Yasi = 26 },
      new Insan(){  Adi = "Yiğit", SoyAdi = "Yozgat", Yasi = 17 },
    };
 
    // Json'a dönüştürme
    JavaScriptSerializer jss = new JavaScriptSerializer();
    jss.MaxJsonLength = 1000000;
    string sonuc = jss.Serialize(insanlar);
    File.WriteAllText(Server.MapPath("~/log.json"), sonuc);
 
    // Json olarak okunan verileri nesnelere aktarma ve kullanma
    JavaScriptSerializer jsd = new JavaScriptSerializer();
    var loglar = jsd.Deserialize<List<Insan>>(File.ReadAllText(Server.MapPath("~/log.json")));
    foreach (Insan insan in loglar)
    {
      // işlemler...
    }
 
Bu kodlarda dizi yapısında bir nesne önce JSON formatına dönüştürülüyor ve bir dosyaya kayıt ediliyor. Daha sonra da dosyaya kayıt edilen JSON formatındaki string okunarak nesnelere dönüştürülüyor. Burada da oluşturduğumuz nesne altında bulunan Deserialize metodunu kullanıyoruz. Bu metot ile JSON formatında verileri nesne haline dönüştürüyoruz. Metodu kullanırken JSON formatından elde edilecek nesne türünü de yukarıdaki gibi belirtebiliyoruz. Yukarıdaki kod bloğunun çalışması ile elde edilen dosyanın içeriği aşağıdaki gibidir: Görüldüğü gibi nesneler üzerinde JSON dönüşümlerini bu şekilde yapabiliyoruz. Bu dönüşümleri birçok yerde kullanabiliriz. Özellikle bazı durumlarda bu dönüşümlere ihtiyaç duyabiliriz. String olarak nesne taşımak durumunda kalırsak bu dönüşümü kullanabiliriz. Örneğin geliştirdiğim Silverlight uygulamalarından birinde Silverlight tarafına html taraftan verileri bu şekilde dönüştürerek aktardım. Bunun dışında Ajax işlemlerinde hem kullanıcı tarafından alınan parametreler hem de kullanıcı tarafa gönderilen cevaplar JSON formatında olabilmekte.
Son kod bölümündeki gibi bir kullanım ile verileri yedekleme, loglama amaçlı da bu yapıyı kullanabiliriz. Örneğim uzun süredir sitemde hataların loglarını tutuyorum ve veritabanındaki boyutu oldukça arttı. Veritabanında fazla veri tutmak yerine oradaki verilerin bir kısmını json formatında saklayan bir sistem geliştirdim ve kullanmaya başladım. Buradaki gibi verileri logluyorum ve yine buradaki gibi dönüştürme işlemlerini yaparak logların da içeriğini takip edebiliyorum. Böylece veritabanında gereksiz veri tutmamış oluyorum. Bu ve bunun gibi örnekler için bu yapıyı kullanabiliriz.

Alıntı

C# ile Extension Metot Yazma ve Kullanma (Lambda Expression Dahil)

Bu yazımda C Sharp ile Extension metot tanımlamayı ve bu metotları kullanmayı göstermeye çalışacağım
Sahipleri : Mehmet Duran
Extension metotlar kullandığımız programlama dilinde tanımlı olan tipler ile beraber kullanılan ve oldukça kolaylık, esneklik sağlayan metotlardır. C Sharp ile kodlama yapan herkesin bilmesi gerektiğini düşünüyorum. Özellikle generic class kullanılan uygulamalarda, Linq to Sql, NHibernate kullanılan uygulamalarda ve dizi işlemlerinin bol olduğu uygulamalarda oldukça kullanışlı ve kolaylık sağlıyor. Bu sebeple bu tür metotları nasıl yazacağımızı ve nasıl kullanabileceğimizi göstermeye çalışacağım.
Öncelikle kullanacağım yapıyı (Struct) içeren kodlara ve hazırladığım extension metotların kodlarına göz atalım.
// Örnek için havazırlanan Insan yapısı
public struct Insan
{
  public string Ad { get; set; }
  public string Soyad { get; set; }
  public int Yas { get; set; }
  public bool Askerlik { get; set; }
 
  public override string ToString()
  {
    return Ad + " " + Soyad;
  }
}
 
// Extension metotların tanımlandığı sınıf
public static class ExtensionsMethods
{
 
  // string parametre'ye göre index bulan metot - eğer değere uygun kayıt yoksa -1 döner
  public static int Index<T>(this IEnumerable<T> veriler, string parametre)
  {
    int sonuc = -1, varmi = 0;
    foreach (T veri in veriler)
    {
      sonuc++;
      if (veri.ToString() == parametre) break;
      else { varmi++; }
    }
    if (varmi == veriler.Count()) { sonuc = -1; }
    return sonuc;
  }
 
  // Lambda Expressions ile sorgulama yapılabilen ve sonuçta veriler elde edilen metot
  public static IEnumerable<T> BulGetir<T>(this IEnumerable<T> veriler, Func<T, bool> expressions)
  {
    List<T> sonuc = new List<T>();
    foreach (T veri in veriler)
    {
      if (expressions(veri))
      {
        sonuc.Add(veri);
      }
    }
    return sonuc;
  }
 
}
Görüldüğü gibi C Sharp'ta extension metotlar bu şekilde tanımlanıyor. Verdiğim kodlarda dizi türünde veri yapılarında belirli bir parametreye göre index bulan Index metodu ve yine aynı şekilde dizi türündeki veri yapılarında belirli parametrelere (Lambda Expression) göre verileri çeken BulGetir metodu bulunmakta. Aslında C Sharp içinde tanımlı olarak gelen extension metotlar ile bu işlemler rahatlıkla yapılsa da bu tür metotların nasıl yazıldığını ve mantığını görmek için bu örneğin anlaşılır olduğunu düşünüyorum. Extension metot olarak tanımlanan BulGetir metodu C Sharp'ta hazır olarak gelen Find, FindAll, Where, vb. gibi metotlar ile aynı işlemi yapmakta.
Bu metotları kullanarak elde ettiğim sonuçları aşağıda görebilirsiniz. Extension metotlar her projede kullanılabilecek ve programcıya oldukça rahatlık sağlayacak metotlardır. Örnekte vermiş olduğum metotların benzerleri hazır olarak geliyor ama amacım bu türlü metotların nasıl yazıldığını ve nasıl kullanıldığını göstermekti. Bu şekilde extension metot tanımlanmakta ve kullanılmakta. Buna benzer olarak birçok konuda extension metot tanımlanabilir ve kullanılabilir. Örneğin matris ile uğraştığımız konularda eldeki matrisi çeşitli derecelerde çeşitli yönlerde dönderen ve yeni matris elde eden metotlar tanımlayabilir ve kullanabiliriz. Graph yapıları ile ilgileniyorsak bu yapı için extension metotlar yazabiliriz.
Bu metotları bir kütüphane altında veya Dll içinde toplarsak lazım olan tüm projelerde kullanabiliriz.

Materyal

Doğrudan C#.NET kitabını Zafer Teker anlatıyor

Doğrudan C#.NET kitabını yazarı Zafer Teker tanıtıyor. C# dili, .NET framework, nesneye yönelik programlama, Windows Forms, ADO.NET, XML, Thread, I/O, Socket vb.. hangi konuların kitapta anlatıldığından bahsedilmektedir.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir