Partilhar via


Usando o aplicativo WSDL personalizado

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

Para configurar o aplicativo gerador de exemplo da linguagem WSDL personalizado, você tem que executar as seguintes tarefas:

  • Crie um aplicativo manipulador WSDL personalizado para oferecer suporte à linguagem WSDL específica.

    Para concluir a tarefa, consulte Criando o aplicativo WSDL personalizado.

  • Configure a instalação do SQL Server para registrar e usar o manipulador WSDL personalizado.

Essa tarefa envolve a criação de um script de implantação que executa as seguintes modificações na instalação do SQL Server:

  • Adiciona o assembly WSDL personalizado (CustomWSDL.dll) ao servidor e o registra para ser usado com a instrução ADD ASSEMBLY.

  • Cria qualquer procedimento armazenado adicional do qual o aplicativo manipulador WSDL personalizado depende tendo em vista a operação correta.

  • Cria ou modifica um ponto de extremidade HTTP da instância do SQL Server para que ele use o identificador WSDL personalizado e retorne uma resposta WSDL, e não a resposta WSDL padrão ou simples.

Implantando o manipulador WSDL personalizado

O seguinte procedimento supõe que você esteja conectado como um administrador local em um computador com o SQL Server em execução, ou que seja possível se conectar a ele remotamente com privilégios administrativos.

Parte 1: Configure o servidor

  1. No SQL Server Management Studio, clique em Nova Consulta e se conecte ao servidor.

  2. Copie o seguinte script Transact-SQL para a janela 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. Execute o script.

Parte 2: Testando o manipulador

Para ter certeza de que o manipulador WSDL personalizado esteja funcionando corretamente, tente usar cadeias de caractere da consulta de URL modificadas para solicitar uma WSDL personalizada. Por exemplo, se a instância do SQL Server à qual você está se conectando se chamar MyServer e o script anterior for usado, ele deverá contar com um caminho do ponto de extremidade estabelecido no servidor de sql/WSDL, que responderá usando o identificador WSDL personalizado. Por isso, para testar a conexão com esse ponto de extremidade e fornecer uma solicitação WSDL personalizada, você usaria uma URL como, por exemplo, a seguinte no cliente do navegador da Web HTTP:

http://MyServer/sql/WSDL?wsdlargument

O valor de argument pode ser um dos seguintes identificadores WSDL personalizados que oferecem suporte a cadeias de caractere de cada um dos tipos de cliente e WSDL diferentes.

URL de WSDL personalizada

Descrição

everett

Para clientes Web simples desenvolvidos usando ferramentas de desenvolvedor do Visual Studio 2003.

jbuilder

Para clientes Web simples desenvolvidos usando ferramentas de desenvolvedor Borland JBuilder 9.0.

glue

Para clientes Web simples desenvolvidos usando ferramentas de desenvolvedor webMethods Cole 5.0.1.

Como mostrado na seguinte tabela, o valor <argument> retorna uma WSDL simples (todos os tipos nativos XSD) para todas as três opções personalizadas; no entanto, caso queira a WSDL totalmente estendida, você pode acrescentar extended à cadeia de caracteres do argumento de consulta.

Identificador de WSDL simples

Identificador de WSDL estendida

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