Aracılığıyla paylaş


Temel AJAX Hizmeti

SimpleAjaxService örneği, Temel ASP.NET Zaman Uyumsuz JavaScript ve XML (AJAX) hizmeti (Web tarayıcısı istemcisinden JavaScript kodu kullanarak erişebileceğiniz bir hizmet) oluşturmak için Windows Communication Foundation'ın (WCF) nasıl kullanılacağını gösterir. Hizmet, hizmetin HTTP GET isteklerine yanıt vermesini ve yanıtlar için JavaScript Nesne Gösterimi (JSON) veri biçimini kullanacak şekilde yapılandırıldığından emin olmak için özniteliğini kullanır WebGetAttribute .

WCF'deki AJAX desteği, denetim aracılığıyla ScriptManager ASP.NET AJAX ile kullanım için iyileştirilmiştir. WCF'yi ASP.NET AJAX ile kullanma örneği için bkz . AJAX Örnekleri.

Not

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda bulunur.

Aşağıdaki kodda WebGetAttribute özniteliği, hizmetin HTTP GET isteklerine Add yanıt vermesini sağlamak için işleme uygulanır. Kod, kolaylık sağlamak için GET kullanır (herhangi bir Web tarayıcısından HTTP GET isteği oluşturabilirsiniz). Önbelleğe almayı etkinleştirmek için GET özelliğini de kullanabilirsiniz. HTTP POST, özniteliğin yokluğunda varsayılan değerdir WebGetAttribute .

[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
    [WebGet]
    double Add(double n1, double n2);
    //Other operations omitted…
}

Örnek .svc dosyası, WebScriptServiceHostFactoryhizmete standart bir WebScriptEndpoint uç nokta ekleyen kullanır. Uç nokta, .svc dosyasına göre boş bir adreste yapılandırılır. Bu, hizmetin adresinin, işlem adından başka ek sonek olmadan olduğu http://localhost/ServiceModelSamples/service.svcanlamına gelir.

<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>

WebScriptEndpoint hizmeti bir ASP.NET AJAX istemci sayfasından erişilebilir hale getirmek için önceden yapılandırılmıştır. Web.config'deki aşağıdaki bölüm, uç noktada ek yapılandırma değişiklikleri yapmak için kullanılabilir. Ek değişiklik gerekmiyorsa kaldırılabilir.

<system.serviceModel>
  <standardEndpoints>
    <webScriptEndpoint>
      <!-- Use this element to configure the endpoint -->
      <standardEndpoint name=""  />
    </webScriptEndpoint>
  </standardEndpoints>
</system.serviceModel>

, WebScriptEndpoint hizmetin varsayılan veri biçimini XML yerine JSON olarak ayarlar. Hizmeti çağırmak için, bu konunun devamında gösterilen kurulum ve derleme adımlarını tamamladıktan sonra adresine gidin http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 . Bu test işlevi, HTTP GET isteği kullanımıyla etkinleştirilir.

İstemci Web sayfası SimpleAjaxClientPage.aspx, kullanıcı sayfadaki işlem düğmelerinden birine her tıklayışında hizmeti çağırmak için ASP.NET kod içerir. Denetimi ScriptManager , hizmete JavaScript aracılığıyla erişilebilen bir ara sunucu yapmak için kullanılır.

<asp:ScriptManager ID="ScriptManager" runat="server">
    <Services>
        <asp:ServiceReference Path="service.svc" />
    </Services>
</asp:ScriptManager>

Yerel proxy örneği oluşturulur ve işlemler aşağıdaki JavaScript kodu kullanılarak çağrılır.

// Code for extracting arguments n1 and n2 omitted…
// Instantiate a service proxy
var proxy = new SimpleAjaxService.ICalculator();
// Code for selecting operation omitted…
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);

Hizmet çağrısı başarılı olursa, kod işleyiciyi onSuccess çağırır ve işlemin sonucu bir metin kutusunda görüntülenir.

function onSuccess(mathResult){
     document.getElementById("result").value = mathResult;
}