İlkay İlknur

just a developer...

Java Platformundan WCF Servisine Erişim

Merhaba Arkadaşlar, Bildiğimiz gibi web servisleri bizim belirli bir uygulama mantığını network üzerinde kullanıma açtığımız bir altyapı olarak karşımıza çıkmaktadır. Ayrıca web servisleri belirli standartlar (XML,WSDL,SOAP vb. ) üzerinde çalıştığından dolayı platform bağımsız bir çözüm olarak tanımlanmaktadır. Yani yazdığımız bir web servisi ister JAVA olsun ister .NET olsun tüm platformlardan çağırılabilmekte ve döndürdüğü sonuçlar da yine farklı platformlardaki uygulamalar tarafından kullanılabilmektedir. Bu yazımızda ise WCF servislerine Java platformundan nasıl ulaşıldığını ve tüketildiğini inceliyor olacağız. İlk olarak tüketilecek olan web servisini hazırlayarak başlıyor olacağız. PointService adını vereceğimiz web servisi iki Point tipinde aldığı parametreyi toplayıp geriye tek bir Point tipi döndürecek. Burada Point sınıfını da servis içerisinde tanımlayarak kompleks tipte veri işlemi yapılmasını da sağlıyor olacağız.

PointService Tanımlanması

Öncelikle servisimizin operasyonlarını belirlemek amacıyla IPointService adında bir Interface oluşturacağız. Ayrıca yine servis içerisinde kullanacağımız Point sınıfını da burada tanımlayacağız. [ServiceContract] interface IPointService{     [OperationContract()]     Point Add(Point point1, Point point2); } [DataContract] public class Point{     [DataMember]     public double x { get; set; }     [DataMember]     public double y { get; set; } } Daha sonra ise bu yazdığımız interface'i gerçekleştirecek edecek olan web servisimizi tanımlayacağız.
public class PointService : IPointService
{
    public Point Add(Point point1, Point point2)
    {
         Point point = new Point();
         point.x = point1.x + point2.x;
         point.y = point1.y + point2.y;
         return point;
    }
}
WCF tarafında yapacaklarımız bu kadar. Artık servisi çalıştırıp test edebiliriz. Test ederken servisin adresini bir kenara not etmemizde fayda var. Çünkü Java tarafından servisi çağırırken bu adresi kullanıyor olacağız.Wink

Java Tarafı Nasıl Olacak ?

Java tarafına geçtiğimizde ise senaryo aslında .NET tarafındaki proxy oluşturma mekanizmasına kısmen benzemekte. Ben bu kısımda Eclipse editörünü kullanıyor olacağım. Başlangıç olarak PointServiceClient isimli bir konsol uygulaması açıyoruz. Daha sonra ise kullanacağımız WCF servisini projemize referans etmemiz gerekiyor. Bunun için projemizin üzerine sağ tıklayıp New menüsünden Other seçeneğine tıklıyoruz ve gelen ekrandan Web Service Client'ı seçiyoruz. Next ile devam ettikten sonra web servisinin WSDL dökümanını isteyen bir ekran ile karşılaşıyoruz. WSDL dökümanları bizim servislerimizin davranışını, içerisindeki tipleri, binding tiplerini tanımlayan XML tabanlı dökümanlar. Bu ekrana doğrudan WCF servisimizin WSDL dökümanı uzantısını veriyoruz. Daha sonra Finish butonuna tıklayarak proxy oluşturma işleminin sonuna geliyoruz. Bu noktada tıpkı .NET tarafında Visual Studio üzerinde yaptığımız Add Service Reference işleminin aynısını yapmış olduk. Eclipse ise kullanmamız üzere bize aşağıdaki sınıfları oluşturuyor. Gördüğümüz gibi servisimiz içerisinde kullanacağımız Point sınıfı ve diğer gerekli tüm sınıflar oluşturuldu. Bizim servisi çağırmak için kullanacağımız sınıf ise IPointServiceProxy sınıfı. Şimdi gelin Main metot içeren bir Test sınıfı yaratalım ve servisi kullanalım. Baktığımız zaman aslında farklı olarak karşıyacağımız iki nokta karşımıza çıkmakta. Bunlardan biri bizim .NET tarafında automatic property olarak tanımladığımız x ve y attributeleri için getter ve setter metotları oluşturulması. Aslında .NET tarafında da aynı şey yapılmakta idi ama biz bundan habersiz oluyorduk. Smile Bir diğer farklı kullanım ise double parametre alan setter metotta primitive tip olan double değilde bu tipi sarmalayan Double sınıfının kullanılması. Bunun dışındaki kullanımlar ise bizim .NET tarafından da aşina olduğumuz kullanımlar. Uygulamayı çalıştırdığımızda ise sonucu konsoldan gözlemleyebiliriz. Evet arkadaşlar bu yazımızda yarattığımız WCF servislerinin Java platformunda nasıl kullanıldığını incelemiş olduk. Ayrıca Web Servislerinin cross-platform olduğunu da görmüş olduk.Smile Görüşmek Üzere,


Yorum Gönder