Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

и откомпилируем метод.

Можно проверить, как это будет работать, направляя браузер Web на файл

Service1.asmx
:

Щелчок на имени метода предоставляет нам информацию о запросе и ответе SOAP, а также примеры того, как запрос и ответ будут выглядеть с помощью методов HTTP GET и HTTP POST. Можно также протестировать метод, нажимая на предоставленную кнопку Invoke (если метод требует простых параметров, их также можно ввести в этой форме). Если сделать это, мы увидим код XML, возвращаемый вызовом метода:

<?xml version="1.0" ?>

<string xmlns="http://tempuri.org/">Yes we can!</string>

Это показывает, что метод работает прекрасно.

Следование по ссылке Service Description, показанной на экране браузера выше, позволяет увидеть описание WSDL службы Web. Наиболее важной частью, имеющей к нам отношение, является описание типов элементов для запросов и ответов:

<types>

 <s:schema attributeFormDefault="qualified" elementFormPefault="qualified"

targetNamespace="http://tempuri.org/">

<s:element name="CanWeFixIt">

<s:complexType />

</s:element>

<s:element name="CanWeFixItResponse">

<s:complexType>

<s:sequence>

<s:element name="CanWeFixItResult" nullable="true" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

<s:element name="string" nullable="true" type="s:string" />

 </s:schema>

</types>

Это описание содержит также описание типов данных, требуемых для запросов и ответов, а также различных соединений для службы, делая его достаточно длинным файлом.

Типы данных, доступные для служб Web

Службы Web могут использоваться для обмена любыми из следующих типов данных:

String Char Byte

Boolean Int16 Int32

Int64 UInt16 UInt32

UInt64 Single Double

Guid Decimal DateTime

XmlQualifiedName class struct

XmlNode DataSet

Массивы всех приведенных выше типов данных также допустимы. Отметим, также, что маршализуются только открытые свойства и поля типов

class
и
struct
.

Использование служб Web

Теперь, когда мы знаем, как создавать службы Web, пришло время разобраться, как они используются. Чтобы сделать это, необходимо создать в коде класс прокси, который знает, как общаться с заданной службой Web. Любые обращения из кода к службе Web будут проходить через этот прокси, который выглядит идентично службе Web, создавая в коде иллюзию, что имеется локальная копия службы Web. В реальности существует большой объект коммуникации HTTP, но мы защищены от деталей. Для этого существуют два способа. Можно пользоваться либо утилитой командной строки

WSDL.exe
, либо пунктом меню Add Web Reference в VS.NET.

При использовании утилиты

WSDL.exe
создается файл
.cs
, содержащий класс прокси на основе описания WSDL службы Web. Мы определяем это с помощью URL, например:

WSDL http://localhost/PCSWebSrv1/Service1.asmx?WSDL

Для примера из последнего раздела эта утилита создаст файл с именем

Service1.cs
класса прокси. Класс называется по имени cлужбы Web, в данном случае
Service1
, и будет содержать методы, которые вызывают идентично названные методы службы. Чтобы использовать этот класс, мы просто добавляем файл
.cs
, созданный для проекта, и используем следующий код:

Service1 myService = new Service1;

String result = myService.CanWeFixIt;

По умолчанию созданный класс будет помещен в корневое пространство имен, поэтому не нужен никакой оператор

using
, но можно определить для использования другое пространство имен с помощью параметра командной строки /n<namespace> утилиты WSDL.exe.

Эта техника хорошо работает, но может оказаться неудобным непрерывно переделывать код, если служба разрабатывается и постоянно изменяется. Конечно, можно было бы делать это в режиме сборки проекта, чтобы автоматически обновлять созданный прокси перед каждой компиляцией, но существует способ лучше.

  • Читать дальше
  • 1
  • ...
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: