проф. В.К.Толстых, Web-службы (Web-сервисы) Введение, протоколы, архитектура, создание Web- служб в среде Visual Studio.NET Из цикла лекций «Internet-технологии разработки приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета
– отдельные независимые приложения многократного использования, которые представляют свои функции через Web-интерфейс. Для связи с внешним миром, вместо протокола удаленного вызова процедур (RPC), используют протокол HTTP. Любой клиент и любой сервер (потребители) могут использовать службы независимо от языка их реализации и устройства на котором они установлены. Web-службы основаны на открытых стандартах (используется XML), ими легко овладеть, и эти стандарты широко поддерживаются на всех платформах Unix и Windows. Web-службы позволяют приложениям или другим Web-службам совместно использовать данные и функции таким способом, при котором не имеет значения, как именно эти приложения выполняются, какую платформу, операционную систему или устройство они используют. Что это такое?
SOAP (Simple Object Access Protocol) – простой протокол доступа к объектам. Основан на XML для дистанционного вызова процедур по Intranet и Internet.Определяет формат запроса и параметров, передаваемых в запросе. WSDL (Web Service Description Language) – протокол описания Web-служб. Он позволяет предоставить описание и расположение всех методов Web- службы, а также их параметры на XML. UDDI (Universal Description, Discovery, and Integration) – универсальное описание, обнаружение и интеграция. Это открытый системный реестр, предназначенный для хранения информации о Web-службах. UDDI доступен по адресу Visual Studio.NET, Delphi 6, 7, for.NET – это инструментальные средства, которые могут быть использованы для разработки Web-служб Протоколы Web-служб
Пример работы протокола SOAP Сообщения между Web-службой и его пользователем пакуются в SOAP-конверты (SOAP envelopes). Вот как выглядит простой SOAP-запрос, который отправляется через HTPP к Web-службе: WC1A8GH UK Ключевые элементы SOAP-конверта узнать достаточно просто: это два параметра ("почтовый индекс") и ("страна"), которые содержатся внутри элемента под названием. Этот элемент является названием Web-службы к которой мы обращаемся с запросом: верный ли почтовый код для указанной страны? Название Web-службы Параметры запроса
Yes Элемент в запросе поменялся на элемент в ответе. В этом элементе содержится только один элемент, значение которого обозначает, что почтовый индекс правильный. Ответ Web-службы Параметры ответа Ответ:
Как это все работает Как это все работает автор: Patrick Cooney и A List ApartA List Apart Представим себе, что я - разработчик сайта, и мой клиент попросил меня добавить к сайту новую функцию: необходимо добавить проверку правильности почтового индекса в регистрационной форме. Для осуществления этой проверки мне понадобилось бы создавать базу данных всех почтовых индексов всех 30 стран, где наша компания ведет бизнес, а потом проверять при регистрации соответствие почтового индекса указанному в регистрации городу. Но у меня этих данных нет, и я думаю, что на сбор подобных данных придется потратить ощутимую сумму денег. Вместо того, чтобы раскошеливаться на покупку базы данных, писать самому код, следить за целостностью и правильностью всех данных и отлаживать работу скриптов, я просто иду в каталог UDDI и ищу, нет ли там веб-сервиса, который мог бы сделать эту работу за меня. Придя на сайт я запускаю поиск и нахожу прекрасный сервис от компании XYZ Corp. Я внимательно рассматриваю определение формата веб-сервиса (определение записано на языке WSDL, убеждаюсь, что сервис делает именно то, что мне нужно. Затем справляюсь у своих коллег о репутации компании XYZ Corp, узнаю, что она солидная, и затем обращаюсь к компании XYZ с вопросом о цене. Если цена на доступ к сервису доступна для моего бюджета, я пишу простую Web-страницу для своего сайта, которая вызывает веб-сервис компании XYZ Corp, и опля, на сайте появляется моментальная проверка почтового индекса.
Архитектура Web-сервисов Потребитель Web-службы Клиентское приложение Прокси-класс Посредник Общения с Web-службой Web-сервер Реестр UDDI Поиск службы (выполняется в ручную) Получение ссылки на службу Получение WSDL- документа Вызов метода через SOAP Получение результата посредством SOAP WSDL-документ Метод 1 Метод 2 Метод 3 Web-служба
Реализация Web-служб для.NET приложений 1. Вы разрабатываете web-службу как.NET-класс с атрибутами, которые идентифицируют его как web-службу с некоторыми функциями. 2. В среде.NET автоматически создается документ WSDL, где описывается, как клиент должен взаимодействовать с web-службой. 3. Потребитель находит вашу web-службу и, решив воспользоваться ею, добавляет соответствующую web-ссылку в проект Delphi.NET или Visual Studio.NET (или запускает утилиту wsdl.exe). 4. В среде.NET осуществляется автоматическая проверка документа WSDL и генерируется прокси-класс, который позволяет потребителю взаимодейство- вать с web-службой. 5. Потребитель вызывает один из методов вашего класса web-службы. С его точки зрения этот вызов не отличается от вызова метода любого другого класса, но в действительности потребитель взаимодействует с прокси- классом, а не с web-службой. 6. Прокси-класс преобразует переданные параметры в сообщение SOAP и отправляет его web-службе. 7. Вскоре прокси-класс получает SOAP-ответ, преобразует таковой в соответствующий тип данных и возвращает его как обычный тип данных.NET. 8. Потребитель использует возвращенную ему информацию.
Разработка Web-службы с помощью текстового редактора Код Web-службы HelloWorldService на языке С#: Файл HelloWorldService.asmx помещаем в папку IIS, где инсталлирована.NET Framework Метод HelloWorld() Метод NextMethod() Директива ASP.NET, говорящая, что это – Web-служба Новый класс HelloWorldServices описан в пользовательском пространстве имен ProgWS Помещаем новый класс в пространство имен ProgWS Подключить стандартное пространство имён System.Web.Services Описание доступного всем класса HelloWorldService на основе System.Web.Services.WebService
Просмотр Web-службы Просмотр Web-службы См. пример HelloWorldService.asmxHelloWorldService.asmx Имя службы = класс страницы System.Web.Services.WebService.HelloWorldService Имена методов службы: HelloWorld() и NextMethod() XML-описание службы Содержимое страниц Web-служб не предназначено для отображения в браузере..NET предоставляет браузерам стандартную тестовую страницу, которая отображается при обращении к файлам *.asmx.
XML-описание и тестирование метода HelloWorld Результат работы метода HelloWorld – возвращена строка Hello Worl! Тестирование методов службы возможно только на локальной машине
Создание Web-службы в среде Visual Studio.NET Смотрите пример Пример - Web-служба Калькулятор Web-служба Калькулятор
...проблемы веб-сервисов К сожалению, за великий потенциал веб-сервисов приходится платить определенную цену: Использование XML в качестве формата передачи данных приводит к тому, что ваши сообщения будут очень большими по размеру. Так как мы используем удаленные компьютеры для выполнения определенных функций, мы полностью полагаемся на Интернет, что создает слишком много ненадежных звеньев в цепи между нашим веб-сервером и веб-сервисом. Система лицензирования и взимания платежей за пользование веб-сервисами еще должна быть принята разработчиками. Из-за того, что веб-сервисов еще слишком мало, большинство компаний пытается провести на своих потенциальных клиентов хорошее впечатление намеренно снижая стоимость услуг и предлагая благоприятные условия лицензирования. Должно еще пройти какое-то время, прежде чем будет выяснена реальная стоимость услуг веб-сервисов.
Дальнейшее развитие – переход к WCF службам Особенности версии.NET 3.0
Windows Communication Foundation (WCF) предоставляет единую инфраструк- туру разработки, повышающую производительность и снижающую затраты на создание безопасных, надёжных и транзакционных Web-служб нового поколения. Windows Presentation Foundation графическая (презентационная) подсистема. Оно включает новое ядро, которое должно заменить GDI и GDI+. Сейчас его можно назвать альтернативным вариантом Adobe Flash и Java-апплетам.GDIGDI+Adobe FlashJava-апплетам Windows CardSpace патентованная технология единого входа от Microsoft. WCS это способ простой и безопасной идентификации пользователей при перемещении между ресурсами Интернета без необходимости повторного ввода имен и паролей. Windows Workflow Foundation (WF) представляет собой технологию для определения, выполнения и управления рабочими процессами. Данная технология представляет новый, более высокий, уровень абстракции в программировании под.NET. По сути – это визуальные (в VS 2008) блок-схемы с возможность вставки кодов, Windows-сервисов, веб-сервисов, приложений-серверов, IIS- приложений…