SOAP Web Serviste; fault’lar sunucu tarafından istemci tarafına SOAP Fault formlar olarak sunulmaktadır. SOAP Fault’lar faultCode, faultStringve tercihe bağlı olarak detaylardan mevcuttur.JAX-RPC spesifikasyonu Java Exception’larını SOAP Fault larla ilişkilendirmek için bazı kurallar tanımlamıştır. Sunucu tarafında Java Exception’larını SOAP fault’lara ve yine aynı şekilde istemci tarafında SOAP faultları Java Exception’larla eşleştirir. Sunucu tarafından fırlatılan 4 çeşit Exception vardır.
1.java.rmi.RemoteException
2.java.lang.RuntimeException
3.javax.xml.rpc.soap.SOAPFaultException
4.Kullanıcı tarafından tanımlanan Exception’lar.
RemoteException
JAX-RPC, Service Endpoint Interface (SEI) içinde tanımlanan metodların hepsi java.rmi.RemoteException’ı fırlatmaktadır.
RuntimeException
Sunucu tarafında JAX-RPC calışma zamanında Runtim
e Exception fırlatırsa (Örn:NullPointerException), fırlatılan exception istemci tarafında SOAP Fault olarak algılanır. İstemci SOAP Fault’ları RuntimeException ya da SOAPFaultException olarak yakalayabilir.
SOAPFaultException
SOAPFaultException, özel bir RuntimeException da diyebiliriz. SOAPFaultException RuntimeException’a göre daha tanımlayıcıdır. SOAPFaultException genelde JAX-RPC handler’ıtarafından kullanılmaktadır.
Kullanıcı Exception
Kullanıcı Exception’ları iyi bir programlama pratigidir. JAX-RPC dünyasında yazılım geliştiriciler wsdl:operation’ın içinde wsdl:faults tanımlamaya ihtiyaç duyarlar. wsdl:operation birden fazla wsdl:fault tanımlamaya izin verir bu da Java daki biden fazla exception fırlatmasına izin vermesine benziyor. Her bir wsdl:fault SEI’deki bir exception’ı tanımlar.WSDL örneği ve bununla eşleşen Java sınıfı aşağıdaki gibidir.
SOA’nın amacı tüm dünyada servisler arasında iletişim sağlamaktır. SOA yeni bir mimari değil. Eskilerde ORB ve COM spesifikayyonları ile kullanılıyordu. Bu kavramlar zamanla genişledi yerlerini başka teknolojilere bıraktılar ya da genişletildi. Dizayn ya da yazılım geliştiriciler SOA’yı implement ederken geniş bir teknoloji yelpazesi kulanabiliyorlar. Bu teknolojiler aşağıadaki gibidir.
1.SOAP, RPC
2.REST
3.DCOM
4.CORBA
5.Web Services
6.DDS
7.WCF
Kavramları sırası ile açıklayalım.
SOAP: Simple Object Access Protocol’un kısaltmasıdır. XML tabanlı uygulamalar arası veri transferini HTTP uzerinde yapılmasına imkan sağlayan bir protokol spesifikasyondur. OSI modelinde application layer katmanını kullanmaktadır. SOAP, OSI modelinde transfer için HTTP ve SMTP uygulama protokollerini kullanmaktadır. Transfer protokolü olarak HTTP firewall’den dolayı daha tercih edilir. DCOM gibi firewall tarafından filtrelenen protokollere göre avantaj sağlamaktadır. XML formatının genişliğinden dolayı CORBA gibi teknolojilere göre daha yavaştır. SOAP Mesajının elemanları:
1.Envelope (Tüm SOAP mesajını içerir)
2.Header (SOAP mesajının header kısmını oluşturur. )
3.Body(SOAP mesajının önemli bir bölümüdür.Metodun adı, parametrik bilgilerini XML formatında gösterildiği yerdir.)
RPC : Remote Procedure Call, ağ üzerinde farklı adres alanlarındaki başka bir bilgisayardaki proseduru çağırmak için kullanılır. RPC Transport katmanının üzerinde implement edilmiş. Nesne yönelimli yazılım prensiplerine göre yazılmış bundan dolayı Remote Invocation da diyebiliriz. RPC sürecini özetlemek gerekirse:
1.İstemci , IstemciStub’ına çağrıda bulunur. Bu yerel çağrıda bulunmadır, çağrı parametrelerle birlikte stack yapısına koyulur.
2.İstemci Stub parametrelerini mesaj haline dönüştürür ve sunucu tarafına çağrıda bulunur.
3.Istemci Stub oluşturulan mesajı Transport katmanına iletir ve mesaj karşı makineye iletilir.
5.Sunucu tarafındaki Stub ile gelen mesaj karşılanır ve Demarshall edilir.
6.Sonuç olarak Sunucu Stub’ıkendi tatafındaki ilgili procedure çağırır.
REST (Representational State Transfer) Rest standart veya spesifikasyon değildir, mimari sitilidir. Yeni bir teknoloji değil. Anlaşılması gereken önemli bir kavram var ki o da REST in HTTP metodlarını destekliyor olmasıdır. Çoğu browserler sadece PUT ve GET metodlarını desteklerken HTTP ayrıca PUT DELETE OPTIONS HEAD TRACE ve CONNECT metodlarıda var. Bu metodlar Restful Web servisi tarafından kullanılmaktadır.
DCOM (Distributed Component Object Model) : Ağdaki bilgisayarlar üzerindeki yazılım uygulamaları arasında iletişimi sağlayan Microsoft teknolojisidir. Microsoft’s COM’un genişletilmiş halidir. Eklentilerde:
1.Marshalling – Serializing ve Deserializing
2.Dağıtık Garbage Collection
DCOM, CORBA teknolojisinin en büyük rakibidir. İki teknolojinin de firewall üzerinden zorlukları mevcut.
CORBA (Common Object RequestBroker Architecture), Object Management Group(OMG) tarafında tanımlanmış bir standart, farklı programlama dillerinde yazılmış yazılım bileşenlerinin ağ üzerindeki farklı makinelerde iletişimi sağlayan teknolojidir.Özellikle belirtmek gerekir ki birden fazla platformu destekliyor.
1.Programlama Dili Bağımsız
2.İşletim Sistemi Bağımsız
3.Kullanılan Teknoloji bağımsız
4.Geniş Veri Tipi (Örn : ANY)
5.Sıkıştırma (Verileri Binary formda tutuyor)
WCF (Windows Communication Foundation) .NET framework tarafından geliştirilen Servis tabanlı uygulamalarla iletişim sağlamak için kullanılan teknolojidir. Bu teknolojide de WSDL arayüzü üzerinde istemci sunucu ile iletişime geçmektedir.