Compartir a través de


Agregar compatibilidad de trazas SOAP a aplicaciones cliente

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Al desarrollar aplicaciones cliente web para Servicios web XML nativos en SQL Server dispone de una herramienta útil para solucionar problemas, que consiste en la posibilidad de realizar un seguimiento y analizar los mensajes SOAP intercambiados entre una instancia de SQL Server y su aplicación cliente.

En este tema se presenta una biblioteca de clases de ejemplo que implementa encabezados de extensión SOAP compatibles con el seguimiento SOAP del proyecto de la aplicación cliente desde Visual Studio 2005. Al integrarlas en el proyecto, dichas extensiones realizan un seguimiento del contenido real del mensaje de solicitud y respuesta SOAP y lo muestran.

Esta biblioteca se puede agregar a los proyectos de cliente SOAP Visual Studio 2005 existentes. Incluye las aplicaciones de ejemplo que se muestran en Enviar solicitudes de servicios Web XML nativos mediante aplicaciones de ejemplo. Se recomienda estar familiarizado con la información de conceptos y procedimientos incluida en Establecer el servidor para que escuche solicitudes de servicios Web XML nativos y Escribir aplicaciones cliente.

Si no está familiarizado con el formato de los mensajes SOAP se recomienda consultar también los siguientes temas:

Nota

En el procedimiento siguiente se considera que ha creado una aplicación cliente SOAP mediante Visual Studio 2005 y que ha agregado una referencia web a un extremo HTTP SOAP creado con SQL Server, tal y como se explica en Enviar solicitudes SOAP mediante el cliente Visual Studio 2005 (C#).

Para agregar la biblioteca de ejemplo de trazas SOAP a un proyecto de Visual Studio

  1. Mediante el Bloc de notas, copie y pegue el contenido de Listado de código C# para la biblioteca de clases de ejemplo de seguimiento SOAP SQL y guárdelo con el nombre "SqlSoapTracer.cs" en la misma carpeta que los archivos de proyecto del cliente SOAP.

  2. En el equipo cliente, inicie Microsoft Visual Studio 2005 desde el grupo de programas Microsoft Visual Studio 2005.

  3. Haga clic en Abrir proyecto.

  4. Busque y seleccione el archivo de proyecto del cliente SOAP (.csproj).

  5. En la ventana Explorador de soluciones, lleve a cabo estos pasos:

    1. Seleccione el nombre del proyecto, haga clic con el botón secundario, seleccione Agregar y, a continuación, seleccione Agregar elemento existente.

    2. En el cuadro de diálogo Agregar elemento existente, busque y seleccione el archivo SqlSoapTracer.cs en la ubicación en la que lo guardó en el paso 1.

    3. Seleccione Mostrar todos los archivos, expanda el nodo Referencias Web y seleccione el archivo Reference.cs.

  6. En la ventana Editor de código, actualice el archivo Reference.consola localizando los puntos de entrada de los métodos Web que haya incluido.

    Por ejemplo, si va a agregar la compatibilidad de trazas SOAP al proyecto de ejemplo incluido en Enviar solicitudes SOAP mediante el cliente Visual Studio 2005 (C#), los puntos de entrada del método Web publicado correspondientes a los distintos métodos Web incluidos en el proyecto aparecerán como se indica a continuación:

                    public object[] GetCustomerInfo([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] System.Data.SqlTypes.SqlString CustomerID, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] ref System.Data.SqlTypes.SqlString OutputParam) {
                object[] results = this.Invoke("s2MsgGetCustomerInfoSoapIn", new object[] {
                            CustomerID,
                            OutputParam});
                OutputParam = ((System.Data.SqlTypes.SqlString)(results[1]));
                return ((object[])(results[0]));
            }
    
    ...
    
    public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {
                object[] results = this.Invoke("s1MsgUDFReturningAScalarSoapIn", new object[0]);
                return ((System.Data.SqlTypes.SqlInt32)(results[0]));
            }
    
  7. Para agregar la compatibilidad de trazas SOAP cuando los métodos Web se ejecutan en el código de cliente, agregue la siguiente llamada snoopattribute() en el código de Reference.cs justo delante del punto de entrada correspondiente a cada método Web cuyo seguimiento desee realizar, como se indica en las siguientes líneas de código.

                    [snoopattribute()]
    public object[] GetCustomerInfo(...) {...}
    ...
    [snoopattribute()]
    public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {...}
    

    En este ejemplo se registra una extensión SOAP que invoca el seguimiento SOAP de los métodos Web cuando se ejecutan.

Usar la compatibilidad de trazas SOAP para probar la aplicación

Para utilizar las extensiones de la compatibilidad de trazas SOAP especificadas en el código anterior cuando las aplicaciones cliente SOAP se ejecutan en el entorno de desarrollo de Visual Studio, es preciso llevar a cabo las siguientes acciones:

  1. Mediante SQL Server Management Studio o la utilidad de línea de comandos osql, agregue un método Web que muestre el procedimiento almacenado o función definida por el usuario que desee probar en el extremo.

    Para obtener más información, vea Exponer la programación SQL en la Web.

  2. En Visual Studio, y si todavía no lo ha hecho, codifique, depure y genere un proyecto de aplicaciones cliente SOAP.

    Si lo desea, puede usar el proyecto de ejemplo incluido en Enviar solicitudes SOAP mediante el cliente Visual Studio 2005 (C#).

  3. Agregue la clase SqlSoapTracer.cs al proyecto, tal como se describe en la sección anterior.

  4. Guarde, genere y ejecute la aplicación cliente en el entorno de desarrollo de Visual Studio.

    Al ejecutar la aplicación se crea un objeto del visor en el Portapapeles de Windows. Cuando se ejecuten los métodos Web habilitados para el seguimiento en el paso 3, el objeto del visor mostrará lo siguiente para cada uno de los métodos Web:

    • El mensaje de solicitud del cliente SOAP tal como lo haya generado el código del cliente.

    • El mensaje de respuesta del servidor SOAP tal y como lo hayan devuelto los Servicios web XML nativos para SQL Server.

    Para ver el contenido del Portapapeles después de una actividad de seguimiento, pegue el contenido actual del Portapapeles de Windows en el Bloc de notas.

Cómo funciona la compatibilidad de trazas SOAP

El mecanismo de seguimiento utiliza devoluciones de llamada y eventos predefinidos que forman parte del tipo de implementación que se haya realizado de los Servicios web XML nativos en SQL Server. Incluyen dos eventos: BeforeSerialize y AfterSerialize.

Los eventos y las devoluciones de llamadas permiten capturar la solicitud SOAP y la respuesta SOAP correspondiente desde el servidor y redirigirlas a una secuencia de salida. En el código suministrado, la salida se redirige a un objeto System.Windows.Forms.Clipboard. El objeto Clipboard recibe y muestra los mensajes de solicitud del cliente SOAP y de respuesta del servidor que se intercambian gracias a la ejecución de los métodos Web precedidos directamente por llamadas snoopattribute().

La salida de la solicitud del cliente, y la respuesta que emite SQL Server, aparecen en un formato similar al que aparece en los temas Estructura de los mensajes de solicitud SOAP y Estructura de los mensajes de respuesta SOAP respectivamente. Como respuesta aparece también cualquier resultado que genere el servidor, como la salida XML serializada generada cuando el método Web se ejecuta correctamente. En caso de producirse un error, aparece una estructura de mensaje de error SOAP en lugar de la secuencia XML serializada dentro de la respuesta que devuelve el servidor.