SABUN Web Hizmetleri Eğitimi: SABUN Protokolü nedir? MİSAL

İçindekiler:

Anonim

SABUN nedir?

SOAP, HTTP üzerinden web hizmetlerine erişim için XML tabanlı bir protokoldür. Tüm uygulamalarda kullanılabilecek bazı özellikleri vardır.

SOAP, Basit Nesne Erişim Protokolü olarak bilinir, ancak daha sonraki zamanlarda SOAP v1.2 olarak kısaltılmıştır. SOAP bir protokoldür veya başka bir deyişle, web servislerinin birbirleriyle nasıl konuştuğunun veya onları çağıran istemci uygulamalarıyla nasıl konuştuğunun bir tanımıdır.

SOAP, çeşitli programlama dilleri üzerine kurulu uygulamaların birbirleriyle kolayca konuşabilmesi ve aşırı geliştirme çabalarından kaçınabilmesi için bir ara dil olarak geliştirildi.

Bu SOAP Web hizmetleri eğitiminde öğreneceksiniz-

  • SABUN Giriş
  • SABUNUN AVANTAJLARI
  • SABUN Yapı taşları
  • SOAP Mesaj Yapısı
  • SABUN Zarf Elemanı
  • SOAP İletişim Modeli
  • Pratik SABUN Örneği

SABUN Giriş

Günümüz dünyasında, farklı programlama dilleri üzerine inşa edilmiş çok sayıda uygulama vardır. Örneğin, Java'da tasarlanmış bir web uygulaması olabilir, diğeri .Net'te ve diğeri PHP'de olabilir.

Uygulamalar arasında veri alışverişi, günümüzün ağ dünyasında çok önemlidir. Ancak bu heterojen uygulamalar arasındaki veri alışverişi karmaşık olacaktır. Bu veri alışverişini gerçekleştirmek için kodun karmaşıklığı da olacaktır.

Bu karmaşıklıkla mücadele etmek için kullanılan yöntemlerden biri, uygulamalar arasında veri alışverişi için ara dil olarak XML (Genişletilebilir Biçimlendirme Dili) kullanmaktır.

Her programlama dili XML biçimlendirme dilini anlayabilir. Bu nedenle, veri alışverişi için temel araç olarak XML kullanılmıştır.

Ancak, veri alışverişi için tüm programlama dillerinde XML kullanımına ilişkin standart bir şart yoktur. SOAP yazılımının devreye girdiği yer burasıdır.

SOAP, HTTP üzerinden XML ile çalışmak üzere tasarlanmıştır ve tüm uygulamalarda kullanılabilecek bir tür spesifikasyona sahiptir. Sonraki bölümlerde SOAP protokolü hakkında daha fazla ayrıntıya bakacağız.

SABUNUN AVANTAJLARI

SOAP, uygulamalar arasında veri alışverişi için kullanılan protokoldür. SABUNUN neden kullanıldığına dair bazı nedenler aşağıdadır.

  • SOAP tabanlı Web servisleri geliştirirken, istemci uygulamalarıyla konuşmak için web servislerinde kullanılabilecek bir dilin olması gerekir. SOAP, bu amaca ulaşmak için geliştirilmiş mükemmel bir ortamdır. Bu protokol aynı zamanda tüm web standartları için yönetim organı olan W3C konsorsiyumu tarafından da tavsiye edilmektedir.
  • SOAP, uygulamalar arasında veri alışverişi için kullanılan hafif bir protokoldür. ' Işık ' anahtar kelimesine dikkat edin . SOAP programlama, kendisi de hafif bir veri değişim dili olan XML diline dayandığından, SOAP da aynı kategoriye giren bir protokol olarak.
  • SOAP, platform bağımsız olacak şekilde tasarlanmıştır ve aynı zamanda işletim sisteminden bağımsız olacak şekilde tasarlanmıştır. Böylece SOAP protokolü, hem Windows hem de Linux platformunda herhangi bir programlama dili tabanlı uygulamada çalışabilir.
  • HTTP protokolü üzerinde çalışır -SOAP, tüm web uygulamaları tarafından kullanılan varsayılan protokol olan HTTP protokolü üzerinde çalışır. Bu nedenle, SOAP protokolü üzerine kurulu web servislerinin World Wide Web üzerinde çalışması için gerekli olan herhangi bir özelleştirme yoktur.

SABUN Yapı Taşları

SOAP özelliği, web hizmetine ve istemci uygulamasına gönderilen " SOAP mesajı " olarak bilinen bir şeyi tanımlar .

SOAP mimarisinin aşağıdaki diyagramı, bir SOAP Mesajının çeşitli yapı taşlarını göstermektedir.

SABUN Mesaj Yapı Taşları

SOAP mesajı, aşağıdaki bileşenlere sahip yalnızca bir XML belgesinden başka bir şey değildir.

  • XML belgesini bir SOAP mesajı olarak tanımlayan bir Zarf öğesi - Bu, SOAP mesajının içerdiği kısımdır ve SOAP mesajındaki tüm ayrıntıları kapsüllemek için kullanılır. Bu, SOAP mesajındaki kök unsurdur.
  • Başlık bilgilerini içeren bir Başlık öğesi - Başlık öğesi, çağıran uygulama tarafından kullanılabilen kimlik doğrulama bilgileri gibi bilgileri içerebilir. Ayrıca, SOAP mesajında ​​kullanılabilecek karmaşık türlerin tanımını da içerebilir. Varsayılan olarak, SOAP mesajı dizeler ve sayılar gibi basit türlerde olabilen, ancak aynı zamanda karmaşık bir nesne türü de olabilen parametreler içerebilir.

Karmaşık bir türün basit bir SABUN servis örneği aşağıda gösterilmiştir.

Bir "Eğitim Adı" ve bir "Eğitim Açıklaması" kombinasyonuna sahip yapılandırılmış bir veri türü göndermek istediğimizi varsayalım, daha sonra karmaşık türü aşağıda gösterildiği gibi tanımlayacağız.

Karmaşık tür, öğe etiketiyle tanımlanır. Yapının gerekli tüm öğeleri, ilgili veri türleriyle birlikte daha sonra karmaşık tür koleksiyonunda tanımlanır.

  • Çağrı ve yanıt bilgilerini içeren bir Gövde öğesi - Bu öğe, web hizmeti ile arayan uygulama arasında gönderilmesi gereken gerçek verileri içerir. Aşağıda, aslında başlık bölümünde tanımlanan karmaşık tür üzerinde çalışan SOAP gövdesinin bir SOAP web hizmeti örneği verilmiştir. İşte bu web hizmetini çağıran arayan uygulamaya gönderilen Eğitim Adı ve Eğitim Açıklamasının yanıtı.
Web ServicesAll about web services

SOAP Mesaj Yapısı

Unutulmaması gereken bir nokta, SOAP mesajlarının normalde arandığında web servisi tarafından otomatik olarak üretilmesidir.

Bir istemci uygulaması, web hizmetinde bir yöntemi çağırdığında, web hizmeti otomatik olarak, web hizmetinden istemci uygulamasına gönderilecek olan verilerin gerekli ayrıntılarına sahip olacak bir SOAP mesajı üretecektir.

Bu SOAP öğreticisinin önceki konusunda tartışıldığı gibi, basit bir SOAP Mesajı aşağıdaki unsurlara sahiptir -

  • Zarf öğesi
  • Başlık öğesi ve
  • Vücut elemanı
  • Hata öğesi (İsteğe bağlı)

Basit bir SOAP mesajının aşağıdaki örneğine bakalım ve gerçekte hangi elementin yaptığını görelim.

SOAP Mesaj Yapısı
  1. Yukarıdaki SOAP mesajından görüldüğü gibi, SOAP mesajının ilk kısmı, tüm SOAP mesajını kapsüllemek için kullanılan zarf unsurudur.
  2. Bir sonraki öğe, gerçek mesajın ayrıntılarını içeren SOAP gövdesidir.
  3. Mesajımız "Guru99WebService" adlı bir web hizmeti içermektedir.
  4. "Guru99Webservice", 'int' türünde bir parametre kabul eder ve TutorialID adına sahiptir.

Şimdi, yukarıdaki SOAP mesajı web hizmeti ile istemci uygulaması arasında iletilecektir.

Yukarıdaki bilgilerin istemci uygulaması için ne kadar yararlı olduğunu görebilirsiniz. SOAP mesajı, istemci uygulamasına Web servisinin adının ne olduğunu ve ayrıca hangi parametreleri beklediğini ve ayrıca web servisi tarafından alınan her bir parametrenin türünün ne olduğunu söyler.

SABUN Zarf Elemanı

Yapı taşının ilk biti SABUN Zarfıdır.

SOAP Zarfı, web hizmeti ve istemci uygulaması arasında değiş tokuş edilen SOAP mesajlarının gerekli tüm ayrıntılarını kapsüllemek için kullanılır.

SOAP zarf öğesi, bir SOAP mesajının başlangıcını ve sonunu belirtmek için kullanılır. Bu, web servisini arayan istemci uygulamasının SOAP mesajının ne zaman bittiğini bilmesini sağlar.

SOAP zarf elemanı üzerinde aşağıdaki noktalar not edilebilir.

  • Her SOAP mesajının bir kök Zarf öğesine sahip olması gerekir. SOAP mesajının bir zarf elemanına sahip olması kesinlikle zorunludur.
  • Her Envelope elemanının en az bir sabun gövdesi elemanına sahip olması gerekir.
  • Bir Envelope öğesi bir üstbilgi öğesi içeriyorsa, birden fazla içermemeli ve Envelope öğesinin gövde öğesinden önce ilk alt öğesi olarak görünmelidir.
  • SOAP sürümleri değiştiğinde zarf değişir.
  • V1.1 uyumlu bir SOAP işlemcisi, v1.2 zarf ad alanını içeren bir mesaj alındığında bir hata oluşturur.
  • V1.2 uyumlu bir SOAP işlemcisi, v1.2 zarf ad alanını içermeyen bir mesaj alırsa Sürüm Uyuşmazlığı hatası oluşturur.

Aşağıda, SOAP zarf öğesinin 1.2 sürümünün bir SOAP API örneği bulunmaktadır.

int

Hata mesajı

Bir SOAP web hizmetine bir talep yapıldığında, döndürülen yanıt, başarılı bir yanıt veya bir hata yanıtı olan 2 formda olabilir. Bir başarı elde edildiğinde, sunucudan gelen yanıt her zaman bir SOAP mesajı olacaktır. Ancak SOAP hataları üretilirse, bunlar "HTTP 500" hataları olarak döndürülür.

SOAP Hata mesajı aşağıdaki unsurlardan oluşur.

  1. - Bu, hatanın kodunu belirten koddur. Hata kodu aşağıdaki değerlerden herhangi biri olabilir
    1. SOAP-ENV: VersionMismatch - Bu, SOAP Zarf öğesi için geçersiz bir ad alanıyla karşılaşıldığında ortaya çıkar.
    2. SOAP-ENV: MustUnderstand - mustUnderstand özniteliği "1" olarak ayarlanmış Header öğesinin hemen alt öğesi anlaşılmadı.
    3. SOAP-ENV: İstemci - Mesaj yanlış oluşturulmuş veya yanlış bilgi içeriyordu.
    4. SOAP-ENV: Sunucu - Sunucuyla ilgili bir sorun vardı, bu nedenle mesaj devam edemedi.
  2. - Bu, hatanın ayrıntılı bir açıklamasını veren metin mesajıdır.
  3. (İsteğe bağlı) - Bu, hataya kimin neden olduğunu gösteren bir metin dizesidir.
  4. (İsteğe bağlı) - Bu, uygulamaya özel hata mesajları için olan öğedir. Böylece uygulama, farklı iş mantığı senaryoları için belirli bir hata mesajına sahip olabilir.

Hata Mesajı Örneği

Bir arıza mesajı örneği aşağıda verilmiştir. İstemcinin GetTutorial sınıfında TutorialID adlı bir yöntemi kullanmaya çalıştığı senaryo durumunda hata üretilir.

Yöntemin tanımlanan sınıfta olmaması durumunda aşağıdaki hata mesajı üretilir.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Çıktı:

Yukarıdaki kodu çalıştırdığınızda, "Sınıfta (GetTutorial) yöntem (GetTutorialID) bulunamadı" gibi bir hata gösterilecektir.

SOAP İletişim Modeli

SOAP ile tüm iletişim HTTP protokolü aracılığıyla yapılır. SOAP'tan önce, birçok web hizmeti iletişim için standart RPC (Uzaktan Prosedür Çağrısı) stilini kullanıyordu. Bu en basit iletişim şeklidir, ancak pek çok sınırlaması vardır.

Şimdi bu SOAP API eğitiminde, bu iletişimin nasıl çalıştığını görmek için aşağıdaki diyagramı inceleyelim. Bu örnekte, sunucunun 2 yöntem sağlayan bir web hizmeti barındırdığını varsayalım:

  • GetEmployee - Bu, tüm Çalışan ayrıntılarını alır
  • SetEmployee - Bu, çalışanların borçları, maaşları gibi ayrıntıların değerini buna göre ayarlar.

Normal RPC tarzı iletişimde, istemci sadece isteğindeki yöntemleri çağırır ve gerekli parametreleri sunucuya gönderir ve ardından sunucu istenen yanıtı gönderir.

Yukarıdaki iletişim modelinin aşağıdaki ciddi sınırlamaları vardır

  1. Dilden Bağımsız Değil - Yöntemleri barındıran sunucu belirli bir programlama dilinde olacaktır ve normalde sunucuya yapılan çağrılar yalnızca bu programlama dilinde olacaktır.
  2. Standart protokol değil - Uzak prosedüre bir arama yapıldığında, arama standart protokol aracılığıyla gerçekleştirilmez. Bu, çoğunlukla web üzerindeki tüm iletişimin HTTP protokolü aracılığıyla yapılması gerektiğinden bir sorundu.
  3. Güvenlik Duvarları - RPC aramaları normal protokol üzerinden gitmediğinden, istemcinin sunucuyla iletişim kurmasına izin vermek için sunucuda ayrı bağlantı noktalarının açılması gerekir. Normalde tüm güvenlik duvarları bu tür trafiği engeller ve genellikle istemci ile sunucu arasında bu tür bir iletişimin çalışmasını sağlamak için çok fazla yapılandırma gerekir.

Yukarıda belirtilen tüm sınırlamaların üstesinden gelmek için, SOAP daha sonra aşağıdaki iletişim modelini kullanacaktır.

  1. İstemci, prosedür çağrısı ve herhangi bir argümanla ilgili bilgileri bir SOAP mesajı olarak biçimlendirir ve bunu bir HTTP isteğinin parçası olarak sunucuya gönderir. Verileri bir SOAP mesajına kapsülleme işlemi, Marshalling olarak biliniyordu .
  2. Sunucu daha sonra istemci tarafından gönderilen mesajı açar, istemcinin ne istediğini görür ve ardından uygun yanıtı istemciye bir SOAP mesajı olarak geri gönderir. İstemci tarafından gönderilen bir isteği çözme uygulaması Demarshalling olarak bilinir.

Pratik SABUN Örneği

Şimdi bu SoapUI eğitiminde, pratik bir SABUN örneğine bakalım,

Muhtemelen SOAP mesajlarının nasıl üretildiğini görmenin en iyi yollarından biri, bir web servisini çalışırken görmektir.

Bu konu, bir ASMX web hizmeti oluşturmak için Microsoft.Net çerçevesinin kullanımına bakacaktır. Bu tür web hizmeti, hem SOAP sürüm 1.1 hem de sürüm 1.2'yi destekler.

ASMX web hizmetleri, Web Hizmeti Tanımlama Dili (WSDL) belgesini otomatik olarak oluşturur. Bu WSDL belgesi, arama yapan istemci uygulaması tarafından, uygulamanın web hizmetinin neler yapabileceğini bilmesi için gereklidir.

Örneğimizde, web servisini çağıran uygulamaya bir dize döndürmek için kullanılacak basit bir web servisi oluşturacağız.

Bu web hizmeti bir Asp.Net web uygulamasında barındırılacaktır. Daha sonra web hizmetini çağıracağız ve web hizmeti tarafından döndürülen sonucu göreceğiz.

Visual Studio ayrıca web hizmeti ile çağıran uygulama arasında iletilen SOAP mesajını da bize gösterecektir.

Aşağıdaki adımlar izlenerek yapılabilen Web servis uygulamamızı kurmanın ilk ön koşulu.

Lütfen bu örnek için sisteminizde Visual Studio 2013'ün kurulu olduğundan emin olun.

Adım 1) İlk adım, boş bir ASP.Net Web uygulaması oluşturmaktır. Visual Studio 2013'ten Dosya-> Yeni proje menü seçeneğine tıklayın.

Yeni Proje seçeneğine tıkladığınızda, Visual Studio size proje türünü seçmeniz ve projenin gerekli ayrıntılarını vermeniz için başka bir iletişim kutusu verecektir. Bu sonraki adımda açıklanmaktadır.

Adım 2) Bu adımda,

  1. İlk olarak ASP.NET Web uygulamasının C # web şablonunu seçtiğinizden emin olun. SOAP hizmetleri projesi oluşturmak için projenin bu tipte olması gerekir. Bu seçeneği belirlediğinizde, Visual Studio herhangi bir web tabanlı uygulama için gerekli olan gerekli dosyaları eklemek için gerekli adımları gerçekleştirir.
  2. Bizim durumumuzda webservice.asmx olarak verilen projenize bir isim verin. Ardından proje dosyalarının saklanacağı bir konum verdiğinizden emin olun.

Tamamlandığında, Visual Studio 2013'te çözüm gezgininizde oluşturulan proje dosyasını göreceksiniz.

Adım 3) Bu adımda,

Projemize bir Web servis dosyası ekleyeceğiz

  1. İlk olarak aşağıda gösterildiği gibi proje dosyasına sağ tıklayın

  1. Proje dosyasına sağ tıkladıktan sonra, bir web hizmeti dosyası eklemek için "Ekle-> Web Hizmeti (ASMX) seçeneğini seçme şansınız vardır. Web hizmeti adı dosyası için bir Eğitim Hizmeti adı vermeniz yeterlidir.

Adım 4) Aşağıdaki kodu Eğitim Hizmeti asmx dosyanıza ekleyin.

Kod Açıklaması:

  1. Bu kod satırı, web hizmeti dosyanız için bir ad sağlar. Bu önemli bir adımdır çünkü istemci uygulamasının web servisini web servis adı üzerinden aramasına yol açar.
  2. Normalde bir web hizmetinin işlevselliğini kapsüllemek için bir sınıf dosyası kullanılır. Dolayısıyla, sınıf dosyası, istemci uygulamasına bazı işlevler sağlayacak tüm web yöntemlerinin tanımına sahip olacaktır.
  3. Burada [WebMethod], bir işlevi tanımlayan bir öznitelik olarak bilinir. Sonraki adım, "Guru99WebService" adlı bir işlev oluşturur, ancak bu adımın eklenmesiyle bir [WebMethod] özniteliği bu yöntemin bir istemci uygulaması tarafından çağrılabilmesini sağlar. Bu öznitelik yerinde değilse, yöntem asla bir istemci uygulaması tarafından çağrılamaz.
  4. Burada, çağıran istemci uygulamasına bir dizge döndürmek için kullanılacak 'Guru99WebService' adlı bir işlev tanımlıyoruz. Bu işlev, herhangi bir istemci uygulaması tarafından çağrılabilen bir web hizmetidir.
  5. "Bu bir Guru99 Web hizmetidir" dizesini istemci uygulamasına döndürmek için dönüş ifadesini kullanıyoruz.

Kod başarıyla yürütülürse, kodunuzu tarayıcıda çalıştırdığınızda aşağıdaki Çıktı gösterilecektir.

Çıktı:

  • Çıktı, web hizmetimizin adının, web hizmetimize bir ad vermenin sonucu olan "Guru99 Web Hizmeti" olduğunu açıkça göstermektedir.
  • Ayrıca web servisini çağırabileceğimizi de görebiliriz. Çağır düğmesine tıklarsak, web tarayıcısında aşağıdaki yanıtı alacağız.

Yukarıdaki çıktı,

  • Web yöntemini çağırarak "Bu bir Guru99 Web hizmetidir" dizesinin döndürüldüğünü açıkça gösterir.
  • Visual Studio ayrıca, yukarıdaki web hizmeti çağrıldığında oluşturulan SOAP ileti isteğini ve yanıtını görüntülemenize de olanak tanır.

Web servisi arandığında oluşan SOAP talebi aşağıda gösterilmiştir.

Kod Açıklaması:

  1. SOAP mesajının ilk kısmı, önceki bölümlerde tartışılan zarf unsurudur. Bu, her SOAP mesajında ​​bulunan kapsülleme öğesidir.
  2. SABUN Gövdesi sonraki öğedir ve SOAP mesajının gerçek ayrıntılarını içerir.
  3. Üçüncü kısım, 'Guru99WebService' adı verilen servisi çağırmak istediğimizi belirten unsurdur.

string

Kod Açıklaması:

  1. SOAP mesajının ilk kısmı, önceki bölümlerde tartışılan zarf unsurudur. Bu, her SOAP mesajında ​​bulunan kapsülleme öğesidir.
  2. SABUN Gövdesi sonraki öğedir ve SOAP mesajının gerçek ayrıntılarını içerir.
  3. Şimdi göreceğiniz ilginç kısım 'string' özelliğidir. Bu, istemci uygulamasına, çağrılan web hizmetinin dizge türünde bir nesne döndürdüğünü söyler. Bu çok kullanışlıdır, çünkü aksi takdirde web servisinin ne döndürdüğünü bilmeyen istemci uygulaması.

Özet

  • SOAP, farklı programlama dilleri üzerine kurulu uygulamalar arasında veri alışverişi yapmak için kullanılan bir protokoldür.
  • SOAP, XML spesifikasyonu üzerine inşa edilmiştir ve HTTP protokolü ile çalışır. Bu, onu web uygulamalarında kullanım için mükemmel kılar.
  • SOAP yapı taşları bir SOAP Mesajından oluşur. Her bir SOAP mesajı bir zarf öğesi, bir başlık ve bir gövde öğesinden oluşur.
  • Zarf öğesi, SOAP mesajındaki zorunlu öğedir ve SOAP mesajındaki tüm verileri kapsüllemek için kullanılır.
  • Başlık öğesi, kimlik doğrulama bilgileri veya karmaşık veri türlerinin tanımı gibi bilgileri içermek için kullanılabilir.
  • Gövde öğesi, gerekirse herhangi bir parametre bilgisiyle birlikte web yöntemlerinin tanımını içeren ana unsurdur.