-- C#, XML Web Servis

C# ile SOAP Serialization

Merhabalar,

Bu makalede lafı hiç uzatmadan serileştirme(Serialization) yöntemlerinden biri olan SOAP Serialization’ı inceleyeceğiz.

Serialization Nedir?

Yazılım uygulamalarında bazı verileri yazılımın çalıştığı sisteme kaydetmemiz ya da ağ üzerinden farklı bir kaynağa iletmemiz gerektiği durumlar olabilir. Eğer yerel sisteme veri kaydetmemiz gerekirse bu göreceli olarak kolaydır. Çünkü herhangi bir ek protokol ya da sınırlandırma minimum düzeydedir. Herhangi bir dosya formatı şeklinde kendi sisteminize kaydedebilirsiniz. Yüksek ihtimal bunun için gerekli Framework sınıfları da kullandığınız platform içerisinde hazırdır. Ancak yazılımınız ile ağ üzerinden ya da internet üzerinden farklı bir noktaya veri aktarımı yapmak istediğinizde burada platformlar ve protokoller arası uyuşmazlıklar söz konusu olabilir. Örneğin sizin geliştirdiğiniz yazılım .NET ile geliştirildiyse ve ama karşıya gönderilen veriyi alıp işleyecek farklı bir yazılım varsa ve bu yazılım .NET harici bir platformla geliştirildiyse, burada tercih etmeniz gereken yöntem mecburi olarak ortak bir serileştirme yöntemi olmalıdır. Ya da yazılımınızın yerel bir ağ da olması ile internet üzerinden veriyi aktarması gibi durumlar arasında da serileştirme yöntemlerinde farklı mecburiyetler sonucunda seçimler yapılması gerekmektedir.

Serileştirme Yöntemleri

Çok özetle serileştirmeyi anlatmaya çalıştım. Daha detayları spesifik olarak anlatacağım.

SOAP Serialization Nedir?

Konuya girmeden önce SOAP ile ilgili mini bir açıklama yapmak istiyorum. Bu konuda bir çok kaynakta detaylı açıklandığı için bir Wikipedia kaynağını veriyorum;

SOAP (Simple Object Access Protocol – Basit Nesne Erişim Protokolü), Service-oriented Architecture felsefesini pratiğe uyarlayan iki interface’den biridir. Üzerinde bulunan Universal Description Discovery and Integration (UDDI) ile birlikte hizmet yönelimli mimarinin pratikte kullanılmasını mümkün kılar.”

Wikipedia Kaynak için tıklayınız.

Temel prensip olarak SOAP serileştirme de aslında çıktı olarak bir XML dosyası üretir. Ancak SOAP XML’inin belli standartları vardır. Bu nedenle ayrı bir serileştirme yapısı ile kullanılır.

Önemli Not : SOAP serileştirme işlemlerinde yüksek bilgi sahibi olmak için XML standartları, XML Serialization ve SOAP standartlarını iyi bilmelisiniz.

SOAP Serileştirme Neden Kullanılır?

  • Farklı yazılım ve platformların birbiriyle entegrasyonu ve veri dağıtımı için kullanılır. Örn; Java uygulaması ile bir .NET ya da PHP uygulamasının haberleşmesi.
  • XML Web Servisleri SOAP mimarisini kullanır. Bu nedenle SOAP Serialization konusu doğrudan XML Web Servisleriyle ilişkilendriilebilir.

O halde ilk SOAP serileştirmemizi yapalım…

SOAP serileştirme DLL’i XML ve Binary gibi default olarak eklenmez projeye. Bu nedenle SOAP DLL’ini projemizde eklemeliyiz.

Aşağıdaki DLL’i Ekleyin;

System.Runtime.Serialization.Formatters.Soap

Uygulamamızı geliştirmeye başlayabiliriz. Öncelikle gerekli namespace’leri ekleyelim;

using System;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;

Serileştirme metodu;

static void Seraialize(Hashtable data)
{
    FileStream fs = new FileStream("veri.soap", FileMode.Create);
    SoapFormatter formatter = new SoapFormatter();
    try
    {
        formatter.Serialize(fs, data);
    }
    catch (Exception ex)
    {
        throw new Exception("Hata : " + ex.Message);
    }
    finally
    {
        fs.Close();
    }
}

Deserialize metodu;

static Hashtable Deserialize()
{
    Hashtable veri = null;
    FileStream fs = new FileStream("veri.soap", FileMode.Open);
    try
    {
        SoapFormatter formatter = new SoapFormatter();
        veri = (Hashtable)formatter.Deserialize(fs);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Hata : " + ex.Message);
    }
    return veri;
}

SOAP Seiralization kullanımı;

Hashtable adres = new Hashtable();
adres.Add("Cihan", "İstanbul");
adres.Add("Ali", "Ankara");
adres.Add("Veli", "Adana");

Seraialize(adres);

SOAP Deserialization kullanımı;

Hashtable h = Deserialize();

foreach (DictionaryEntry item in h)
{
    Console.WriteLine(item.Key + " - " + item.Value);
    //Console.WriteLine(item);
}

Uygulamayı ve kodlarını inceleyerek SOAP kurallarına göre üretilen çıktıyı inceleyiniz.

SOAP XML Web Servisleri için kullanılan bir erişim protokolüdür. XML Serileştirme yönteminde verdiğim web servisleri eğitimlerime şuradan ulaşabilirsiniz.

İyi çalışmalar
Cihan Özhan

Yorumla

Yorum