Compartir a través de


Servicio AJAX básico

Este ejemplo muestra cómo utilizar Windows Communication Foundation (WCF) para crear un servicio básico asincrónico de ASP.NET de JavaScript y XML (AJAX) (un servicio al que pueda tener acceso utilizando el código JavaScript de un cliente del explorador web). El servicio utiliza el atributo WebGetAttribute para asegurarse de que el servicio responde a las solicitudes HTTP GET y de que está configurado para utilizar el formato de datos de Notación de objeto de JavaScript (JSON) para las respuestas.

La compatibilidad de AJAX en WCF se optimiza para su uso con AJAX de ASP.NET a través del control ScriptManager. Para obtener un ejemplo del uso de WCF con AJAX de ASP.NET, vea AJAX Samples.

Bb410778.note(es-es,VS.100).gifNota:
El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

En el código siguiente, el atributo WebGetAttribute se aplica a la operación Add para asegurarse de que el servicio responde a las solicitudes HTTP GET. El código usa GET por simplicidad (puede construir una solicitud HTTP GET desde cualquier explorador web). También puede utilizar GET para habilitar el almacenamiento en caché. HTTP POST es el valor predeterminado en la ausencia del atributo WebGetAttribute.

[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{

    [WebGet]
    double Add(double n1, double n2);
    //Other operations omitted…
}

El archivo .svc de ejemplo utiliza WebScriptServiceHostFactory, que agrega un extremo estándar WebScriptEndpoint al servicio. El extremo se configura en una dirección vacía relativa al archivo .svc. Esto significa que la dirección del servicio es https://localhost/ServiceModelSamples/service.svc, sin los sufijos adicionales excepto el nombre de la operación.

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

WebScriptEndpoint se preconfigura de modo que el servicio esté accesible desde una página de cliente AJAX de ASP.NET. La siguiente sección de Web.config se puede utilizar para realizar cambios de configuración adicionales en el extremo. Se puede quitar si no se necesita ningún cambio adicional.

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

WebScriptEndpoint establece el formato de datos predeterminado para el servicio en JSON en lugar de XML. Para invocar el servicio, navegue hasta https://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 después de completar los pasos de configuración y compilación que se muestran más adelante en este tema. El uso de una solicitud HTTP GET habilita esta funcionalidad de la prueba.

La página web del cliente SimpleAjaxClientPage.aspx contiene el código de ASP.NET para invocar el servicio siempre que el usuario haga clic en uno de los botones de operación en la página. El control ScriptManager se utiliza para hacer que un proxy al servicio sea accesible a través de JavaScript.

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

Se crean instancias del proxy local y las operaciones se invocan utilizando el siguiente código de JavaScript.

// 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);

Si la llamada del servicio es correcta, el código invoca el controlador onSuccess y el resultado de la operación se muestra en un cuadro de texto.

function onSuccess(mathResult){
     document.getElementById("result").value = mathResult;
}
Bb410778.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (predeterminado) antes de continuar.

<InstallDrive>: \WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Ajax\SimpleAjaxService