ASP. NET Ajax ile gelen Script Servisler, Web Servislere script’ler yolu ilede ulaşıma izin vermektedir. Küçük bir uygulama hazırlayarak örneklendirelim.

Visual Studio da yeni bir ASP.NET 3.5 Web Site başlatalım.
Ve WebSite>Add New Item diyerek bir Web Service Ekleyelim ve ismine Servisim.asmx diyelim.
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
///
/// Summary description for Servisim
///
[WebService(Namespace = “https://tempuri.org/”)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService] //BURAYA DİKKAT
public class Servisim : System.Web.Services.WebService {
    public Servisim () {
    }
    [WebMethod]
    public string BilgiVer(string ad,string soyad,DateTime dtarih) {
        string bilgi = string.Format(“Adiniz:{0}\nSoyadiniz:{1}\nDogum Tarihiniz:{2}\nYasiniz:{3}”,
            ad, soyad, dtarih.ToShortDateString(), (DateTime.Now.Year – dtarih.Year).ToString());
        return bilgi;
    }
}
Yukaridaki gibi basit bir web servis oluşturalım.Öncelikle sizinde bilidğiniz gibi web servis için tanımladığınız methodlarınWebMethod attribute’ una sahip olması gerekir. Bunun yanına Servisim class’ı için belirtiğimiz ScriptService attribute ‘u ise bu servise script yolu ilede ulaşılabileceğiniz belirtiyor. BilgiVer isimli bir fonksiyon oluşturduk ve basit bir işlem yaparak girilen kişi bilgilerini geri döndürdük.
Web Servisimiz hazır şimdi bu Web Servise Script yolu ile erişelim.
Default.aspx’e bir adet ScriptManager Sürükleyip bırakın ve aşağıdaki düzenlemeyi yapın.
<body>
    <form id=”form1″ runat=”server”>
    <div>
        <asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
        <Services>
            <asp:ServiceReference Path=”~/Servisim.asmx” />
        Services>
        asp:ScriptManager>
    div>
    form>
body>
ScriptManager’ın özelliği işe script servisimizin yolunu göstermiş olduk.
Artık Script’imizi yazabiliriz.
Sayfamıza 3 adet TextBox yerleştirelim ve altına Html Button yerleştirelim. Burada Html Button tercih etmemin sebebi, sayfamızda JavaScript kullanacak olmamız ve gereksiz yere sayfanın tekrar yüklenmesine (PostBack) gerek olmaması.
<asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
        <Services>
            <asp:ServiceReference Path=”~/Servisim.asmx” />
        Services>
        asp:ScriptManager>
        <asp:TextBox ID=”txtadi” runat=”server”>asp:TextBox>
        <br />
        <asp:TextBox ID=”txtsoyadi” runat=”server”>asp:TextBox>
        <br />
        <asp:TextBox ID=”txtdtarih” runat=”server”>asp:TextBox>
        <br />
        <input id=”Button1″ type=”button” value=”BilgiVer” onclick=”BilgiGetir();” />
Kodda da göreceğiniz gibi TextBox’lar için ID’leri belirttik ve Button’un onclick event’inde BilgileriGetir() fonsiyonunu çağırdık. Geriye JavaScript fonksiyonunu yazmak kaldı.
<head runat=”server”>
    <title>Untitled Pagetitle>
    <script type=”text/javascript”>
        function BilgiGetir()
        {
            var ad,soyad,dtarih;
            ad=document.getElementById(“txtadi”).value;
            soyad=document.getElementById(“txtsoyadi”).value;
            dtarih=document.getElementById(“txtdtarih”).value;
            Servisim.BilgiVer(ad,soyad,dtarih,DonenDeger);
        }
        function DonenDeger(deger)
        {
            alert(deger);
        }
    script>
head>
Öncellikle BilgiGetir() fonksiyonunda kullanıcının TextBox’lar girdiği verileri aldık ve Web Servisimizde tanımladığımızBilgiVer Fonksiyonunu cağırdık. Burda bilmeniz gereken, eğer Javascript ile erişmek istediğiniz web method bir fonksiyon ise, fonksiyon’dan dönen değerler için ayrı bir JavaScript fonsiyonu yazmanız gerekir. Ama eğer web methodunuz bir prosedür ise (void) buna gerek yok. Bu sebepten DonenDeger() adında yeni bir fonksiyon daha tanımladık ve BilgiVer() fonksiyonundan dönen değerleri yakalamış olduk.
Şimdi Çalıştırıp Test edin.
Not::txtdtarih alanına tarih girerken AA/GG/YYYY şeklinde giriş yapın.
asp-net-scriptservice-1

asp-net-scriptservice-1

Test ettiğinizde web servise erişirken sayfanızda yenilenme(refresh) olmayacaktır. Bu yolla ScriptService’leri kullanarak Veritabanı işlemler,dosya işlemleri… vb. gibi işlemleri kolaylıkla yapabilirsiniz.