Makale Özeti

Bu yazımızda Silverlight 2.0 ile sunucu tarafında Java ile hazırlanmış bir web servisini kullanacağız. Silverlight uygulamalarının sunucu taraflı programlama altyapılarından tamamen bağımsız çalıştığını kanıtlayan örneğimizi makalenin devamında inceleyebilirsiniz.

Makale

Silverlight'ın sunucu tarafındaki programlama dillerinden ve sunucu platformundan tamamen bağımsız olduğundan sürekli bahsediyoruz. Bu çerçevede daha önceki yazılarımdan birince PHP ile Silverlight 2.0 kullanımına değinmiştim. Bu yazımızda da Java ile Silverlight kullanımına değineceğiz.

Örneğimizde Java tarafından hazırladığımız bir web servisini Silverlight 2.0 tarafında Visual Studio içerisinden kullanacağız. Visual Studio ve .NET altyapısı ile rahatlıkla WSDL uyumlu web servislerini kullanabildiğimizi düşünürsek aynı standartlara uygun bir web servisinin Java ile hazırlanmış olması durumunda herhangi bir sorun yaşamayacağımıza kesin gözü ile bakabiliriz. İlk olarak Java tarafında aşağıdaki kodumuz ile basit bir web servisi hazırlayalım.

package com.daron.ws;

 

public class wsclass {

 

    public int topla(int x, int y)

    {

        return x+y;

    }

 

}

Yukarıdaki ufak kod ile aslında basit bir metod tanımlamış oluyoruz. Metodumuz aldığı iki integer parametreyi toplayıp geri döndürüyor. Bu parametreler ve metodun yapacağı işlemler sizin örneklerinizde çok daha farklı olabilir. Şu an için amacımız Silverlight tarafından Java'ya veri gönderip geriye sonuç alabiliyor olmak.

Eclipse üzerinden WSDL dosyasını da otomatik olarak yukarıdaki metod üzerinden yarattıktan sonra artık sıra geliyor bu servisi Silverlight tarafında kullanmaya. Silverlight 2.0 uygulamamızı yine Visual Studio içerisinde geliştireceğimiz için Java servisinin bulunduğu siteyi Visual Studio içerisinde de açmanız daha rahat bir çalışma ortamı yaratacaktır. Basit bir şekilde Visual Studio 2008 içerisinden "File / Open Web Site" diyerek Java ile hazırlanmış siteyi açabilirsiniz. Tabi Java dosyalarını sadece birer dosya olarak göreceksiniz, düzenleme şansınız olmayacak. Siteyi açtıktan sonra "File / Add / New Project" diyerek Silverlight projenizi sitenize ekleyebilirsiniz. Silverlight uygulamasını çalıştıracak olan örnek HTML dosyası otomatik olarak Java sitenize eklenecektir.

Web servisini referans alalım...

Web servisini referans olarak ekleyebilmeniz için tabi ki servisin çalışıyor olması gerek. Bunun için Eclipse üzerinden Tomcat'i kullanabilirsiniz. IIS yüklü bir makinede çalışıyorsanız 8080 gibi harici bir port vermeyi unutmayın. Web servisini tarayıcınızda çalıştırdıktan sonra adresini kopyalayarak Silverlight projenize sağ tıklayarak "Add Service Reference" diyerek referans ekleme işlemini tamamlayabilirsiniz.

Java web servisimizi referans olarak ekliyoruz.
Java web servisimizi referans olarak ekliyoruz.

Referans ekleme işlemi tamamlandığında artık Silverlight ile herhangi bir web servisini kullanır gibi Java web servisimizi de kullanabiliyoruz. Örneğimizi çalıştırabilmek için ilk olarak Silverlight ekranımıza iki metin kutusu ve bir de düğme yerleştirelim.

<UserControl x:Class="SilverlightApplication1.Page"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="400" Height="300">

    <Grid x:Name="LayoutRoot" Background="White">

      <TextBox Height="48.411" Margin="33.2830009460449,22.693000793457,115.582000732422,0" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap" x:Name="Kutu1"/>

      <TextBox Height="48.95" Margin="33.2830009460449,75.1039962768555,115.582000732422,0" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap" x:Name="Kutu2"/>

      <Button Height="52.95" HorizontalAlignment="Stretch" Margin="92.2839965820313,0,165.50700378418,88.1999969482422" VerticalAlignment="Bottom" Content="Button" x:Name="Dugme"/>

    </Grid>

</UserControl>

Her şey hazır olduğuna göre artık web servislerimizi kodumuz ile tanımlayıp kullanabiliriz.

[VB]

Partial Public Class Page

    Inherits UserControl

 

    Public Sub New()

        InitializeComponent()

    End Sub

 

    Private Sub Dugme_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Dugme.Click

        Dim Servisim As New ServiceReference1.wsclassClient

        AddHandler Servisim.toplaCompleted, AddressOf Servisim_toplaCompleted

        Servisim.toplaAsync(Kutu1.Text, Kutu2.Text)

    End Sub

 

    Private Sub Servisim_toplaCompleted(ByVal sender As Object, ByVal e As ServiceReference1.toplaCompletedEventArgs)

        Dugme.Content = e.Result

    End Sub

End Class

[C#]

namespace SilverlightApplication2

{

    public partial class Page : UserControl

    {

        ServiceReference1.wsclassClient Servisim = new SilverlightApplication2.ServiceReference1.wsclassClient();

 

        public Page()

        {

            InitializeComponent();

            this.Dugme.Click += new RoutedEventHandler(Dugme_Click);

            Servisim.toplaCompleted += new EventHandler<SilverlightApplication2.ServiceReference1.toplaCompletedEventArgs>(Servisim_toplaCompleted);

        }

 

        void Dugme_Click(object sender, RoutedEventArgs e)

        {

            Servisim.toplaAsync(int.Parse(Kutu1.Text), int.Parse(Kutu2.Text));

        }

 

        void Servisim_toplaCompleted(object sender, SilverlightApplication2.ServiceReference1.toplaCompletedEventArgs e)

        {

            Dugme.Content = e.Result.ToString();

        }

    }

}

Konumuz Silverlight ile web servisleri kullanımı olmadığı için yukarıdaki kodun detaylarına girmeyeceğim. Bu konuda detaylı bir yazıyı aşağıdaki adresten inceleyebilirsiniz.

http://daron.yondem.com/tr/PermaLink.aspx?guid=19fe09b2-2987-4369-a5d5-58e0641c8d6b

Kodları incelediğimizde yaptığımız şeyin aslında ASP.NET ile hazırlanmış bir web servisi kullanmaktan farklı olmadığını görüyoruz. Java ile yazılmış olan web servisimiz yine Silverlight tarafından asenkron olarak kullanılabiliyor.

Projenizi Visual Studio içerisinde Build ederek Silverlight XAP dosyasını oluşturduktan sonra siteyi Tomcat üzerinden çalıştırmak zorunda olduğunuzu unutmayın. Aksi halde web servisi çalışmayacağı için Silverlight hata verecektir.

Sonuç

Silverlight'ın güzelliklerinden faydalanmak için ASP.NET tarafında olmanız şart değil. İster Java ister PHP ister herhangi bir sunucu taraflı programlama dili kullanın Silverlight ile kullanıcı arayüzünüzü hazırlayabilirsiniz.

Java ile WSDL uyumlu web servisi hazırlayıp çalıştırabilme :) konusundaki yardımlarından dolayı sevgili Bilge Başaltun'a buradan çok teşekkür ediyorum.

Hepinize kolay gelsin.