Compartir a través de


Usar la aplicación de WSDL personalizado

Para configurar la aplicación de ejemplo generadora de WSDL personalizado debe llevar a cabo las siguientes tareas:

  • Cree una aplicación controladora de WSDL personalizado que sea compatible con su WSDL específico.
    Para finalizar la tarea, vea Generar la aplicación WSDL personalizada.
  • Configure la instalación de SQL Server 2005 de forma que registre y utilice el controlador de WSDL personalizado.

Esta tarea implica crear una secuencia de comandos de implementación que ejecute las siguientes modificaciones en la instalación de SQL Server 2005:

  • Agrega el ensamblado de WSDL personalizado (CustomWSDL.dll) al servidor y lo registra para su uso con la instrucción ADD ASSEMBLY.
  • Crea los procedimientos almacenados adicionales de los que depende la aplicación controladora de WSDL para un funcionamiento correcto.
  • Crea, o modifica, un extremo HTTP en la instancia de SQL Server para que utilice el controlador de WSDL personalizado y devuelva una respuesta de WSDL personalizada, en lugar de la respuesta de WSDL simple o predeterminada.

Implementar el controlador de WSDL personalizado

El siguiente procedimiento presupone que ha iniciado una sesión como administrador local en un equipo en el que se ejecute SQL Server 2005, o bien que se va a conectar a dicho equipo de forma remota con privilegios de administrador.

Parte 1: Configure el servidor

  1. En SQL Server Management Studio, haga clic en Nueva consulta y conéctese al servidor.

  2. Copie la siguiente secuencia de comandos Transact-SQL en la ventana de consulta.

    USE master 
    GO
    
    -- Drop myWSDL procedure if it exists.
    IF (SELECT count(*) FROM sysobjects WHERE name = 'myWSDL') = 1 
    DROP PROCEDURE myWSDL
    GO
    
    -- Drop CustomWSDL assembly if it exists.
    DROP ASSEMBLY CustomWSDL
    GO
    
    -- Update the path to the compiled assembly as necessary.
    CREATE ASSEMBLY CustomWSDL FROM 'C:\temp\CustomWSDL.dll'
    GO 
    
    -- Create a stored procedure to map to the common lanugage
    -- runtime (CLR) method As with any other SQL Server stored procedure
    -- that maps to a CLR method, the actual stored procedure name 
    -- ('myWSDL') can be arbitrarily specified.
    CREATE PROCEDURE myWSDL
    (
    @endpointID as int,
    @isSSL as bit,
    @host as nvarchar(256),
    @queryString as nvarchar(256),
    @userAgent as nvarchar(256)
    )
    AS EXTERNAL NAME CustomWSDL.[MSSql.CustomWSDL].GenerateWSDL
    GO
    
    -- Follow the security guidelines set up for your environment.
    -- The following example is meant to be used for development or 
    -- testing purposes only.
    GRANT EXEC on myWSDL to [PUBLIC]
    GO
    
    -- The following is a sample stored procedure (InOut) that
    -- demonstrates the configuration of an HTTP endpoint. 
    -- If the InOut stored procedure already exists, it is dropped.
    IF (SELECT count(*) FROM sysobjects WHERE name = 'InOut') = 1 DROP PROC InOut
    GO
    
    CREATE PROC InOut
             @InParam int,
             @OutParam nvarchar(100) output
    AS
    SELECT * FROM syslanguages WHERE langid = @InParam
    SELECT @OutParam = [name] FROM syslanguages WHERE langid = @InParam
    PRINT @OutParam
    SELECT * FROM syslanguages WHERE langid = @InParam FOR XML raw, XMLSCHEMA
    RETURN 1
    GO
    GRANT EXEC on InOut to [PUBLIC]
    
    -- The following creates a sample HTTP endpoint to demonstrate 
    -- the endpoint setup. If the sample endpoint already exists, it
    -- is first dropped.
    IF (SELECT count(*) FROM [msdb].sys.http_endpoints WHERE name = 'sql_endpoint') = 1
    DROP ENDPOINT sql_endpoint
    GO
    
    CREATE ENDPOINT sql_endpoint
             STATE=STARTED
    AS HTTP (
             SITE='*',
             PATH='/sql/WSDL',
             PORTS=(CLEAR),
             CLEAR_PORT=80,
             AUTHENTICATION=(DIGEST, INTEGRATED)
    )
    FOR SOAP
    (
             WEBMETHOD 'http://myNS.com/'.'InOut' ( NAME='master.dbo.InOut' ),
             DATABASE = 'master',
             WSDL='master.dbo.myWSDL',
             Batches=enabled,
             SCHEMA = STANDARD
    )
    
    GRANT CONNECT ON ENDPOINT::sql_endpoint to [PUBLIC]
    
  3. Ejecute la secuencia de comandos.

Parte 2: Probar el controlador

Para asegurarse de que el controlador de WSDL personalizado funciona correctamente, intente utilizar las cadenas de consulta URL modificadas para solicitar un WSDL personalizado. Por ejemplo, si la instancia de SQL Server 2005 a la que está conectado se denomina MyServer y utiliza la secuencia de comandos anterior, debería tener establecida una ruta de extremo en el servidor de sql/WSDL, que será el que responderá mediante el controlador de WSDL personalizado. Por lo tanto, para probar la conexión con dicho extremo y generar una solicitud de WSDL personalizado, debería utilizar una dirección URL como la siguiente en el cliente del explorador Web HTTP:

http://MyServer/sql/WSDL?wsdlargument

El valor de argument puede ser cualquiera de los siguientes identificadores WSDL personalizados compatibles con las cadenas de cada uno de los distintos clientes y tipos de WSDL.

URL de WSDL personalizado Descripción

everett

Para clientes Web simples desarrollados mediante las herramientas de desarrollo de Visual Studio 2003.

jbuilder

Para clientes Web simples desarrollados mediante las herramientas de desarrollo de Borland JBuilder 9.0.

glue

Para clientes Web simples desarrollados mediante las herramientas de desarrollo de webMethods Glue 5.0.1.

Como se muestra en la tabla siguiente, el valor de <argument> devuelve un WSDL simple (todos los tipos nativos XSD) para las tres opciones personalizadas. Sin embargo, puede anexar extended a la cadena de argumentos de la consulta si desea obtener un WSDL extendido.

Identificador de WSDL simple Identificador de WSDL extendido

http://MyServer/sql/WSDL?wsdleverett

http://MyServer/sql/WSDL?wsdleverettextended

http://MyServer/sql/WSDL?wsdljbuilder

http://MyServer/sql/WSDL?wsdljbuilderextended

http://MyServer/sql/WSDL?wsdlglue

http://MyServer/sql/WSDL?wsdlglueextended

Vea también

Tareas

Lista de códigos C# para la aplicación WSDL personalizada

Referencia

Implementar compatibilidad WSDL personalizada
Generar la aplicación WSDL personalizada

Conceptos

Prácticas recomendadas para utilizar servicios Web XML nativos

Ayuda e información

Obtener ayuda sobre SQL Server 2005