Использование приложения на пользовательском языке WSDL

Чтобы установить образец приложения генератора пользовательского языка WSDL, необходимо выполнить следующие задачи:

  • Создать приложение обработчика пользовательского языка WSDL для поддержки конкретного языка WSDL.
    Чтобы завершить эту задачу, см. раздел Приложение, формирующее пользовательский WSDL-документ.
  • Настройте установку SQL Server 2005, чтобы зарегистрировать и использовать обработчик пользовательского языка WSDL.

Эта задача включает создание сценария развертывания, который выполняет следующие изменения установки SQL Server 2005:

  • Добавляет сборку пользовательского языка WSDL (CustomWSDL.dll) на сервер и регистрирует ее для использования с инструкцией ADD ASSEMBLY.
  • Создает любые дополнительные хранимые процедуры, от которых зависит правильная работа приложения обработчика пользовательского языка WSDL.
  • Создает или изменяет конечную точку HTTP на экземпляре SQL Server так, чтобы она использовала обработчик пользовательского языка WSDL и возвращала ответ на пользовательском языке WSDL, вместо ответа на языке WSDL по умолчанию или простом языке WSDL.

Развертывание обработчика пользовательского языка WSDL

Следующая процедура предполагает, что вход в систему выполнен под учетной записью локального администратора на компьютер, на котором работает SQL Server 2005, или существует возможность подключиться к нему удаленно с административными правами доступа.

Часть 1. Настройка сервера

  1. В среде SQL Server Management Studio щелкните Создать запрос и подключитесь к серверу.

  2. Скопируйте следующий сценарий на языке Transact-SQL в окно запроса.

    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. Выполните сценарий.

Часть 2. Проверка обработчика

Чтобы убедиться, что обработчик пользовательского языка WSDL работает правильно, попробуйте использовать измененные строки запроса URL для запроса на пользовательском языке WSDL. Например, если экземпляр SQL Server 2005, с которым установлено соединение, назван MyServer и используется предыдущий сценарий, он должен иметь путь конечной точки, установленной на сервере sql/WSDL, который ответит с помощью обработчика пользовательского языка WSDL. Поэтому, чтобы проверить соединение с этой конечной точкой и предоставить запрос на пользовательском языке WSDL, в клиенте HTTP веб-обозревателя необходимо использовать URL-адрес следующего типа:

http://MyServer/sql/WSDL?wsdlargument

Значение параметра argument может быть любым из следующих идентификаторов пользовательского языка WSDL, которые поддерживают строки для каждого клиента и типа языка WSDL.

URL-адрес пользовательского языка WSDL Описание

everett

Для простых веб-клиентов, разработанных с помощью средств разработчика Visual Studio 2003.

jbuilder

Для простых веб-клиентов, разработанных с помощью средств разработчика Borland JBuilder 9.0.

glue

Для простых веб-клиентов, разработанных с помощью средств разработчика webMethods Glue 5.0.1.

Как показано в следующей таблице, значение <argument> возвращает простой язык WSDL (все собственные типы XSD) при всех трех значениях; однако, если необходимо получить полностью расширенный язык WSDL, можно добавить extended к строке параметра запроса.

Простой идентификатор WSDL Расширенный идентификатор WSDL

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

См. также

Задачи

Листинг программного кода C# для пользовательского приложения WSDL

Справочник

Реализация поддержки пользовательского формата WSDL
Приложение, формирующее пользовательский WSDL-документ

Основные понятия

Оптимальные методы использования собственных веб-служб с поддержкой XML

Справка и поддержка

Получение помощи по SQL Server 2005