После создания типа агента для взаимодействия с Web-сервисом XML клиент может вызывать доступные методы. Как уже подчеркивалось, соответствующие данные передаются с помощью сетевого протокола HTTP. В частности, для обмена информацией между потребителями и Web-сервисами можно использовать HTTP-методы GET и POST или SOAP.
В общем, основным вариантом выбора обычно оказывается SOAP, поскольку, как вы вскоре убедитесь, сообщения SOAP могут содержать XML-описания сложных типов (включая пользовательские типы и типы из библиотек базовых классов .NET), При использовании HTTP-протоколов GET и POST вам придется ограничиться более узким множеством типов XML-схемы.
Пространства имен .NET для Web-сервисов XML
Теперь, когда у вас есть база для понимания принципов функционирования Web-сервисов XML, мы с вами можем заняться построением такого объекта в рамках платформы .NET. Библиотеки базовых классов определяют целый ряд пространств имен, обеспечивающих взаимодействие с любой из доступных технологий использования Web-сервисов (табл. 25.1).
Таблица 25.1. Пространства имен для работы с Web-сервисами XML
Пространство имен |
Описание |
System.Web.Services |
Содержит базовые типы (включая очень важный атрибут [WebMethod]), необходимые для построения любого Web-сервиса XML |
System.Web.Services.Configuration |
Содержит типы, позволяющие настроить поведение Web-сервиса XML в среде выполнения ASP.NET |
System.Web.Services.Description |
Содержит типы, обеспечивающие программное взаимодействие с WSDL-документом, предлагающим описание данного Web-сервиса |
System.Web.Services.Discovery |
Содержит типы, позволяющие потребителям Web-сервисов выполнять программный поиск Web-сервисов на соответствующей машине |
System.Web.Services.Protocols |
Определяет ряд типов, представляющих "атомы" различных протоколов связи Web-сервисов XML (HTTP-методы get и POST, а также SOAP) |
Замечание.Все пространства имен, связанные с Web-сервисами XML, содержатся в компоновочном блоке System.Web.Services.dll.
Пространство имен System.Web.Services
Несмотря на богатые функциональные возможности, обеспечиваемые всеми пространствами имен .NET, связанными с Web-сервисами XML, подавляющее большинство ваших приложений потребует непосредственного взаимодействия только с типами, определенными в System.Web.Services. Как становится ясно из табл. 25.2, количество таких типов достаточно невелико (что уже хорошо).
Таблица 25.2.Члены пространства имен System.Web.Services
Тип |
Описание |
WebMethodAttribute |
Добавление атрибута [WebMethod] в метод или свойство типа класса Web-сервиса обозначает возможность вызова соответствующего члена средствами HTTP и сериализацию в формате XML |
WebService |
Опциональный базовый класс построения Web-сервисов XML в .NET. При использовании этого класса производный Web-сервис XML будет иметь возможность "аккумулировать" информацию состояния (например, переменные сеанса и приложения) |
WebServiceAttribute |
Атрибут [WebService] может использоваться для добавления в Web-сервис информации, например, такой как строка с описанием функциональных возможностей сервиса и соответствующих пространств имен XML |
WebServiceBindingAttribute |
Этот атрибут (появившийся в .NET 2.0) объявляет связывающий протокол, реализуемый данным методом Web-сервиса (HTTP-протоколы get и POST или SOAP), и уровень функциональной совместимости (WSI) Web-сервиса |
WsiProfiles |
Этот перечень (появившийся в .NET 2.0) используется для описания спецификаций WSI (Web Services Interoperability – функциональная совместимость Web-сервисов), которым должен удовлетворять данный Web-сервис |
Остальные пространства имен, показанные в табл. 25.1, могут быть полезны вам только в том случае, если вы захотите вручную взаимодействовать с WSDL-документом, службами поиска или соответствующими сетевыми протоколами. Все подробности можно найти в документации .NET Framework 2.0 SDK.
Создание Web-сервиса XML вручную
Как и любое другое приложение .NET, Web-сервисы XML можно создавать вручную, без использования интегрированной среды разработки, такой как, например, Visual Studio 2005. Чтобы прояснить возможности использования Web-сервисов XML, давайте построим пример простого Web-сервиса XML вручную. С помощью текстового редактора создайте новый файл с именем HelloWorldWebService.asmx (по умолчанию для обозначения файлов Web-сервисов .NET используется расширение *.asmx). Сохраните файл в подходящем месте на своем жестком диске (например, в папке C:\HelloWorldWebService), добавив следующее определение типа.
Читать дальше