Java ve Silverlight kardeşliği.

0 dakikada yazıldı

6105 defa okundu

Düzenle

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/post/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.