Creación de servicios WCF para AJAX de ASP.NET

AJAX de ASP.NET de Microsoft le permite crear rápidamente páginas web para que la experiencia del usuario sea más satisfactoria gracias a elementos de la interfaz de usuario más familiares y receptivos. AJAX de ASP.NET proporciona bibliotecas de scripts de cliente que incorporan las tecnologías ECMAScript (JavaScript) y HTML dinámico (DHTML) para varios exploradores, y las integra en la plataforma de desarrollo para servidores de ASP.NET 2.0. Gracias a las características de AJAX de ASP.NET puede mejorar la experiencia del usuario y la eficacia de sus aplicaciones web.

AJAX de ASP.NET consta de bibliotecas de scripts de cliente y de componentes de servidor que se integran para proporcionar un marco de desarrollo robusto. Para tener acceso a un servicio desde una página ASP.NET: una vez que se agrega la URL de servicio al control del administrador de scripts de ASP.NET en la página, las operaciones de servicio se pueden invocar usando código JavaScript que tiene la misma apariencia que una llamada de función de JavaScript normal.

La mayoría de los servicios de Windows Communication Foundation (WCF) se pueden exponer como servicios compatibles con AJAX de ASP.NET agregando un punto de conexión AJAX de ASP.NET adecuado.

Si está usando Visual Studio, puede usar una plantilla precompilada para servicios WCF habilitados para AJAX, disponible en el cuadro de diálogo Agregar nuevo elemento al trabajar con sitios web o aplicaciones web de ASP.NET.

Si no está utilizando las plantillas Visual Studio, hay dos maneras de crear un punto de conexión de AJAX de ASP.NET:

El modelo de programación web descrito en Introducción al modelo de programación web HTTP de WCF se puede utilizar con servicios AJAX de ASP.NET. Concretamente:

  • Puede utilizar los atributos WebGetAttribute y WebInvokeAttribute para seleccionar entre los verbos HTTP GET y HTTP POST. Si se utiliza correctamente, esto podría mejorar significativamente el rendimiento de la aplicación. Para más información, consulte Elección entre solicitudes HTTP POST y HTTP GET para puntos de conexión AJAX de ASP.NET.

  • Puede usar las propiedades ResponseFormat y ResponseFormat para que su servicio devuelva datos XML en lugar de hacerlo en el formato Javascript Object Notation (JSON) predeterminado. Si hace esto con el marco de AJAX de ASP.NET, el cliente JavaScript va a recibir un objeto DOM XML.

    Advertencia

    La operación debe establecer el tipo de contenido en texto o xml para que funcione. De lo contrario, el cliente JavaScript recibirá una cadena que contiene el XML en vez de un objeto DOM XML.

    A continuación se muestra un ejemplo de una operación que devuelve datos XML con el tipo de contenido establecido adecuadamente:

    [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)]
    public XElement GetData()
    {
        XElement x;
        //Get some data here...
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        return x;
    }
    
  • No se pueden cambiar otras propiedades de los atributos de las clases WebGetAttribute y WebInvokeAttribute si es necesaria la compatibilidad con AJAX de ASP.NET. Se pueden utilizar otros aspectos del modelo de programación web con tal de que no se infrinjan las convenciones de llamada de AJAX de ASP.NET.

En escenarios más avanzados, es necesario comprender algunos detalles adicionales de la compatibilidad de AJAX en WCF:

  • Para entender cómo se transfieren los datos entre un cliente de página de AJAX y un servicio WCF utilizando JavaScript y para más información sobre cómo se asignan los tipos de .NET Framework a los tipos de JavaScript, consulte Compatibilidad con JSON y otros formatos de transferencia de datos.

  • Para aprovecharse de las características de ASP.NET, como, por ejemplo, la autenticación basada en URL y obtener acceso a la información de sesión de ASP.NET, puede que desee habilitar el modo de compatibilidad de ASP.NET mediante configuración.

Los puntos de conexión AJAX en WCF se pueden utilizar incluso sin el marco de AJAX de ASP.NET. Para ello, es necesario comprender la arquitectura de compatibilidad de AJAX en WCF. Se puede encontrar una explicación de esta arquitectura en Modelo de programación de objetos web HTTP de WCF. Para ver un ejemplo de código que muestre este enfoque, consulte Servicio AJAX con JSON y XML.

Consulte también