Язык описания Web-служб WSDL. Архитектура Web-службы. Пример Web-службы Add (Сложение).
Объекты содержат описание своего состояния и поведения. Схемы описывают данные. Язык описания Web-служб WSDL (Web Services Description Language) описывает Выходящие в состав Web-службы методы и данные. Вскоре мы рассмотрим простой пример, с помощью которого проиллюстрируем, как создать Web-службу, не используя язык PVSDL. Но если вы хотите, чтобы автоматически создавались классы, вызывающие Web-службу или Web-службы выполняли действия, которые могут потребовать автоматического вмешательства машины, тогда без языка WSDL не обойтись [Это напоминает библиотеку типов среды Visual Basic 6, которая упрощает программирование в модели Компонентных объектов Microsoft COM. В отличие от библиотеки типов, которая описывает не все COM-объекты и интерфейсы, язык WSDL обеспечивает исчерпывающее описание Web-служб.]. Ибо в противном случае составлять и отсылать SOAP-сообщения вам придется вручную.
Как вы узнаете из следующего примера, протокол SOAP, который описывает формат пересылаемых Web-службами данных, определен в языке WSDL. В данный момент документ Консорциума W3C, описывающий язык WSDL, имеет статус записки (note).
Архитектура Web-службы
Информационный сервер Internet компании Microsoft (Internet Information Server – HIS) взаимодействует как со страницами ASP.NET так и с Web-службами, которые отсыпают ему запросы по протоколу передачи гипертекстовых файлов HTTP. Запросы кодируются как часть унифицированного указателя информационного ресурса (URL) или представляются в виде XML-текста. В ответ на запрос Web-службы информационный сервер Internet (US) создает запрошенный объект. Затем информационный сервер Internet (US) вызывает метод объекта, который обрабатывает соответствующий запрос. Любые возвращаемые данные преобразуются в XML-формат и возвращаются клиенту как ответ по протоколу передачи гипертекстовых файлов HTTP.
Пример Web-службы Add (Сложение)
Чтобы ознакомиться с архитектурой Web-служб, построенных на базе платформы Microsoft .NET, и протоколами, которые они используют, мы рассмотрим простую Web-службу. Она расположена в каталоге SimpleWebService. Web-служба Add (Сложение) складывает два числа. С целью облегчить восприятие материала, мы создадим Web-службу наиболее простым способом и не будем использовать шаблон проекта Web-службы на управляемом C++ (Managed C++ Web Service project template).
Максимально упрощая реализацию данной службы, мы воспользуемся шаблоном приложения на основе библиотеки классов управляемого C++ (Managed C++ Class Library). Чтобы запустить пример SimpleWebService на выполнение, следуйте пошаговым инструкциям.
Откройте проект SimpleWebService\WebService\WebService.sin в среде Visual Studio .NET. Постройте решение.
Скопируйте полученный в результате этого файл WebService.dll в каталог Simple-WebService\WebService\bin. Несмотря на то, что все эти действия уже сделаны за вас, желательно, чтобы вы проделали их самостоятельно.
В окне проводника Windows (Windows Explorer) щелкните правой кнопкой мыши на каталоге SimpleWebService\WebService и выберите из контекстного меню команду Properties (Свойства). В окне Properties (Свойства) перейдите на вкладку Web Sharing (Совместное использование в Web). Откройте папку для совместного доступа, указав в качестве псевдоимени SimpleWebService. Чтобы закрыть окно Properties (Свойства), щелкните на ОК.
Просмотрите пример, для чего введите следующий унифицированный указатель информационного ресурса (URL) Http://localhost/Simple\VebService/Add.asmx в адресной строке вашего браузера. Его также можно открыть в среде Visual Studio .NET стандартным способом. Данный проект сконфигурирован так, что при этом запустится Internet Explorer (IE).
Дальше необходимо написать код и сохранить его в файле с расширением asmx в подкаталоге или виртуальном подкаталоге корневого каталога информационного сервера Internet (US). Таким образом мы создали простую Web-службу [По умолчанию корневым каталогом является каталог \metpub\wwwroot.]. Информационный сервер Internet (US) использует понятие виртуального каталога. Это означает, что каталог, в котором фактически расположены файлы, необходимые информационному серверу Internet (IIS), не обязательно должен на самом деле находиться в корневом каталоге информационного сервера Internet (IIS). Проще всего создать виртуальный каталог следующим образом.
Выделите нужный каталог в окне Проводника NT (NT Explorer). Щелкните правой кнопкой мыши на каталоге и выберите из контекстного меню команду Sharing (Совместное использование). Перейдите на вкладку WebSharing (Совместное использование в Web) и создайте на базе данного каталога виртуальный каталог информационного сервера Internet (US).
Файл Add.asmx содержит ссылку на класс Test (Тест), с помощью которого реализована Web-служба. Этот файл нужно разместить в каталоге SimpleWebService.
<%@ WebService Class=Test %>
Файл WebService.h содержит класс Test (Тест), который является производным от класса WebService, принадлежащего пространству имен System::Web::Services (Система::Сеть::Службы). Метод, содержащийся в этом классе, может использоваться в качестве метода Web-службы, если он имеет атрибут WebMethod, как показано на примере метода Add (Сложение), реализованного в файле WebService .h.
// WebService.h fusing <mscorlib.dll> fusing <System.dll> fusing <System.Web.dll> fusing <Systern.EnterpriseServices.dll> fusing <System.Web.Services.dll> using namespace System; // использование пространства имен Система; using namespace System::Web; // использование пространства имен Система::Сеть; using namespace System::Web::Services; // использование пространства имен Система::Сеть::Службы; public _gc class Test: public WebService { public: [WebMethod] long Add(long x, long y) { return x + y; } };
Этот файл находится в подкаталоге WebService каталога SimpleWebService данной главы. Создайте на базе каталога WebService виртуальный каталог с псевдоименем (псевдонимом) SimpleWebService [Как указывается в главе 10 "ASP NET и Web-формы", проще всего создать виртуальный каталог с помощью Проводника Windows (Windows Explorer). Щелкните правой кнопкой мыши на нужном каталоге и из контекстного меню выберите команду Properties (Свойства). На вкладке Web Sharing (Совместный доступ в Web), вы можете открыть папку для совместного доступа и присвоить ей псевдоимя (псевдоним).]. После построения службы Add (Сложение) в виртуальном каталоге WebService создайте каталог bin и скопируйте в него сборку WebService.dll. Информационный сервер Internet (US) автоматически ищет требуемые файлы в этом каталоге.