WCF, JavaScript ve AJAX Kullanımı


Merhaba Arkadaşlar;

WCF "Windows Commnication Foundation" kullanarak basit bir uygulama geliştirelim ama bunu yaparken birazda JavaScript ve AJAX kullanalım;

Öncelikle VS 2008 ile New WebSite diyerek yeni bir ASP.NET sayfası yaratalım, Daha sonra Solution Explorer dan add new item diyerek bir tane WCF ekleyelim. Bu Web Formumuzun üzerine 2 adet TextBox 1 adet Button ve 1 adet ScriptManager sürükleyip bırakalım. uygulamamıza istediğimiz bir ismi verebiliriz.

Service.cs dosyamıza bir matematik fonksiyonu yazıp TextBox'lardaki değerleri buraya göndericez ve sonucu JavaScript ile alıcaz. Bu arada iletişimizi ScriptManager ile sağlıcaz.

JavaScript kullanacağımız için HTML elementlerini kullanarak TextBox ve Buttonları ekleyelim.

Service.cs dosyamıza yazılması gerekn kodlar;

using System;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Activation;

using System.ServiceModel.Web;

 

// Öncelikle Servis sözleşmemizi “Attribute” oluşturalım

// isteğe bağlı olarak Name, NameSpace vs.. ekler yapabiliriz

[ServiceContract(Name="ReadLineMetot",Namespace = "http://mct.sertayhalka.com/WCF/DemoService")]

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class Service

{

      // Operasyon sözleşmemizi “Attribute” oluşturalım

     // isteğe bağlı olarak Name, NameSpace vs.. ekler yapabiliriz

 

      [OperationContract]

      public int Topla(int Sayi1, int Sayi2)

      {

        return Sayi1 + Sayi2;

      }

}

Yukarıdaki  [OperationContract] bizim bir WCF servis tanımlayacağımızı belirten kod, daha sonra Topla metot'umuzun erişim belirtecini ve tipini belirtiyoruz. Parantez içerisinde tanımlanan Sayı1 ve Sayı2 değişkenlerimize WebForm'dan gelecek olan değerleri gönderip açma ve kapatma parantezleri arasındaki return ifadesi ile sonucu döndürücez. Eğer birden fazla metot tanımlaması yapacaksak her birisi için Service.cs gibi sayfa yaratmamıza gerek yok  [OperationContract] ifadesi le istediğimiz kadar tanımlama yapabiliriz.

Servisimiz ile yapmamız gerekenler sadece bu kadar.

Daha sonra Default.aspx sayfamızın Source kısmına geçip sonucu bize gösterice olan JavaScript kodumuzu yazalım;

<script type="text/javascript">

        function Action() {

            Service.Topla($get("Sayi1").value, $get("Sayi2").value, Tamamlandi);

        }

        function Tamamlandi(Veri) {

            alert(Veri.toString());

        }

    </script>

Yukarıdaki JavaScript kodumuzda sizlere yabancı gelen bir yer varsa, sitedeki JavaScript kategorisi altından bu konuda bilgi sahibi olabilirsiniz 

Service.Topla bizim Service.cs dosyamızın ve içerisindeki metot'umuzun ismi. Sayı1 ve Sayı2 input TextBox'larımızın ID değerleri, Tamamlandi ise aşşağıdaki JavaScript Fonksiyonunun ismi.

İkinci JavaScript'imizin görevi ise yukarıdan gelen değeri işleyerek bunu bir alert olarak bize göstermeye yarayon fonksiyonumuz.

Default.aspx sayfamızın Source kısmındaki kodların devamı;

 

<form id="form1" runat="server">

    <div>

        <input id="Sayi1" type="text" />

        <input id="Sayi2" type="text" />

        <input id="Button1" onclick="Action()" type="button" value="button" /></div>

    <asp:ScriptManager ID="ScriptManager1" runat="server">

        <Services>

            <asp:ServiceReference Path="~/Service.svc" />

        </Services>

    </asp:ScriptManager>

    </form>

Buradaki input Button'un onclick olayı ile t anımladığımız ilk javaScript fonksiyonumuzu tetikliyoruz. ScriptManager ile iletişim sağlıyoruz demiştim, bunuda Scriptmanager'ın <Services> tagları arasında yazılan ve bu tag'a ait olan  <asp:ServiceReference Path="~/Service.svc" /> ile yazmış olduğumuz WCF servisimizin yolunu belirtip işimizi bitiriyoruz.

Web.config dosyamızdaki ayarlarıda kontrol etmemiz gerekiyor;

<system.serviceModel>

            <behaviors>

                  <endpointBehaviors>

                        <behavior name="ServiceAspNetAjaxBehavior">

                             <enableWebScript/>

                        </behavior>

                  </endpointBehaviors>

            </behaviors>

            <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

            <services>

                  <service name="Service">

                        <endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="Service"/>

                  </service>

            </services>

      </system.serviceModel>

 Bu ayarlarıda yaptık'tan sonra, sorunsuz olarak kullanıma hazır olan bir WCF servisi yazmış oluyoruz.

Bu biraz klasik biraz da basit gelebilir sizlere ama bundan sonraki örneklerde özellikle Veritabanından gelen veriler üzerinde biraz işlemler yapıcaz, bunu WCF hatta WebServis ile ilk tanışan arkadaşlar için yazdım, farklı teknolojiler umarım kafanızı karıştırmaz, elimden geldiğince türkçe kelimeler ve basit anlatım ile açıklamaya çalıştım umarım başarmışımdır.







Blog Posts' Cloud