Отправка запросов SOAP с помощью клиента Visual Studio 2005 (Visual Basic)

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

Пример в этом подразделе похож на пример в подразделе «Отправка запросов SOAP с помощью клиента Visual Studio 2005 (C#)». Единственное различие состоит в том, что этот пример написан на языке Visual Basic. Поэтому в подразделе приводится только необходимый исходный код и шаги для создания примера.

Создание рабочего образца

Так как создание этого образца содержит много шагов, приложение разделено на четыре части:

  • Часть 1. Выполнение хранимой процедуры.

  • Часть 2. Выполнение SQL-запроса без параметров.

  • Часть 3. Выполнение SQL-запроса с параметрами.

  • Часть 4. Выполнение пользовательской функции.

В каждой части содержится набор инструкций. В конце каждой части работу приложения можно проверить.

Создание необходимого класса учетных записей-посредников

  1. Создайте папку на компьютере для этого приложения.

  2. На клиентском компьютере из группы программ Microsoft Visual Studio 2005 запустите Microsoft Visual Studio 2005.

  3. Выберите Создать проект.

  4. Выберите Visual Basic Projects в качестве типа проекта Project Type.

  5. В текстовом поле Name укажите NativeSOAPApp2.

  6. В текстовом поле Location укажите путь к папке, куда необходимо сохранить проект.

  7. Выберите Windows Application в качестве шаблона и нажмите кнопку ОК.

  8. В окне обозревателя решений щелкните правой кнопкой мыши элемент Ссылки и выберите пункт Добавить веб-ссылку. Другим способом добавления веб-ссылки является выбор из меню Project пункта Add Web Reference.

  9. В окне Address введите https://Server/sql?wsdl, где Server — это имя сервера, и нажмите клавишу ВВОД. Если формирование WSDL-документа завершилось успешно, можно увидеть описание конечной точки. В этот момент выберите AddReference. Это действие создает необходимые классы-посредники, позволяющие вызывать методы в WSDL-документе.

Часть 1. Выполнение хранимой процедуры.

В этой части приложение запрашивает веб-метод GetCustomerInfo.

  1. Добавьте на форму Form1 текстовое поле (textBox1), кнопку (button1) и список (listBox1).

  2. Щелкните правой кнопкой мыши текстовое поле и выберите пункт Свойства. Измените значение Text с textBox1 на 1. Это значение идентификатора клиента по умолчанию.

  3. Щелкните правой кнопкой мыши кнопку button1 и выберите пункт Свойства.

    1. Измените значение свойства Text с button1 на ExecSP.

    2. Измените значение свойства (name) на ExecSP.

  4. Щелкните правой кнопкой мыши список listBox1 и выберите пункт Свойства. Измените значение свойства HorizontalScrollbar на True.

  5. Дважды щелкните ExecSP.

  6. Скопируйте код из раздела «Листинг кода Visual Basic для ExecSP» в эту функцию.

  7. Обновите код. Замените ссылки на server именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT.

  8. Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем разделе «Компиляция кода»

Часть 2. Выполнение SQL-запроса без параметров.

В этой части клиентское приложение выполняет нерегламентированный запрос (запрос FOR XML), который получает имена трех работников из таблицы Employee в базе данных База данных AdventureWorks2008R2.

  1. На вкладке [Design] на форму Form1 добавьте еще одну кнопку (button1).

  2. Щелкните правой кнопкой мыши эту кнопку и выберите пункт Свойства.

    1. Измените значение свойства Text с button1 на ExecBatchFindAllEmps.

    2. Измените значение свойства (name) на ExecBatchFindAllEmps.

  3. Дважды щелкните ExecBatchFindAllEmp.

  4. Скопируйте код из раздела «Листинг кода Visual Basic для FindAllEmps7» в эту функцию.

  5. Обновите код. Замените ссылки на server именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT.

  6. Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем разделе «Компиляция кода»

Часть 3. Выполнение SQL-запроса с параметрами.

Эта часть аналогична предыдущей, за исключением того, что SOAP-запрос для нерегламентированного запроса включает параметр запроса. Запрос FOR XML запрашивает сведения о сотруднике по указанному идентификатору.

  1. На вкладке [Design] на форму Form1 добавьте еще одну кнопку (button1).

  2. Щелкните правой кнопкой мыши эту кнопку и выберите пункт Свойства.

    1. Измените значение свойства Text с button1 на ExecBatchFindAnEmp.

    2. Измените значение свойства (name) на ExecBatchFindAnEmp.

  3. Дважды щелкните ExecBatchFindAnEmp.

  4. Скопируйте код из раздела «Листинг кода Visual Basic для FindAnEmp» в эту функцию.

  5. Обновите код. Замените ссылки на server именем узла, определенным во время создания конечной точки с помощью инструкции CREATE ENDPOINT.

  6. Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем разделе «Компиляция кода».

Часть 4. Выполнение пользовательских функций.

В этой части клиентское приложение отправляет SOAP-запрос к веб-методу UDFReturningScalar. Веб-метод соответствует определяемой пользователем функции, отправляющей целочисленное значение.

  1. На вкладке [Design] на форму Form1 добавьте еще одну кнопку (button1).

  2. Щелкните правой кнопкой мыши эту кнопку и выберите пункт Свойства.

    1. Измените значение свойства Text с button1 на ExecUDFReturningScalar и

    2. измените значение свойства (name) на ExecUDFReturningScalar.

  3. Дважды щелкните ExecUDFReturningScalar.

  4. Скопируйте код из раздела «Листинг кода Visual Basic для ExecUDF» в эту функцию.

  5. Обновите код. Измените ссылки на сервер по имени узла, определенного во время создания конечной точки с помощью инструкции CREATE ENDPOINT.

  6. Сохраните и скомпилируйте проект. Дополнительные сведения см. в предыдущем разделе «Компиляция кода».

Так как конечная точка задает встроенную проверку подлинности, в коде появляется следующая строка: proxy.Credentials = System.Net.CredentialCache.DefaultCredentials.

При использовании проверки подлинности SQL Server рекомендуется удалить эту строку и заменить ее кодом, который реализует заголовки WS-Security для предоставленных учетных данных проверки подлинности SQL Server. Дополнительные сведения см. в разделе Проверка подлинности SQL Server по протоколу SOAP.

ПримечаниеПримечание

При использовании проверки подлинности SQL Server или обычной проверки подлинности SQL Server требует использования протокола SSL, чтобы обеспечить безопасную зашифрованную передачу учетных данных пользователя, которые в противном случае будут передаваться открытым текстом. Дополнительные сведения о включении использования протокола SSL с конечными точками HTTP см. в разделе Настройка сертификата для использования протоколом SSL.

Компиляция кода

При установке SQL Server устанавливается платформа .NET Framework 2.0. Эти инструкции компиляции используют последнюю версию платформы .NET Framework (наибольший номер в папке \WINDOWS\Microsoft.NET\Framework).

Компиляция кода

  • Сохраните весь проект.
  1. Откройте командную строку и перейдите в папку, где был сохранен проект.

  2. Из этой папки скопируйте файл Reference.vb из подпапки Web Reference\Server (например, «Web Reference\Server\Reference.vb»). Файлы Form1.vb и Reference.vb должны быть в одной папке.

  3. Скомпилируйте код и укажите имя исполняемого EXE-файла. Например, если имя исполняемого файла NativeSOAPApp2.exe, командная строка будет такой:

    \WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb

    xxxxx является номером папки, который соответствует версии платформы .NET Framework.

    В результате в текущем каталоге создается исполняемый объект (NativeSOAPApp2.exe).

    ПримечаниеПримечание

    При использовании более ранней версии платформы .NET Framework возможно возникновение ошибки времени выполнения. В этом случае попытайтесь обновить хранимую процедуру GetCustomerInfo путем добавления предложения FOR XML AUTO в конец инструкции SELECT следующим образом.

    SELECT TOP 3 SalesOrderID, OrderDate FROM   SalesOrderHeaderWHERE  CustomerID = @CustomerIDFOR XML AUTO
    

Результаты выполнения хранимой процедуры отображаются в списке.