Учебный курс Технологии и средства разработки корпоративных систем Лекция 7 Создание веб-сервисов Лекции читает кандидат технических наук, доцент Зыков Сергей Викторович
2 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Содержание 1.Web-сервисы и их использование 2.Пример Web-сервиса 3.Реализация Web-сервисов в.NET 4.Обнаружение Web-сервисов 5.WSDL – язык описания Web-сервисов 6.Протокол SOAP и его поддержка 7.Использование Web-сервисов в приложениях.NET 8.Безопасность Web-сервисов
3 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Что такое Web-сервисы? Web-сервис - особый тип Web-приложения. Задачей Web-сервиса является не генерация html разметки для браузера пользователя, как у традиционных Web-приложений, а предоставление функций, называемых Web-методами, которые можно вызывать по Интернету.
4 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Краеугольные камни Web-сервисов Web-сервисы исполняются на сервере (исполняющей средой в нашем случае служит ASP.NET) Web-сервисы публикуют методы, которые могут быть вызваны внешними клиентами Web-сервисы ожидают поступления http-запросов для вызова методов Web-сервисы исполняют запросы и возвращают http ответы
5 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Использование Web-сервисов B2B решения Доступная клиенту функциональность Интеграция гетерогенных систем Быстрая разработка
6 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Пример Web-сервиса Рассмотрим пример Web-сервис вычисляющий квадратный корень числа В Microsoft Visual Studio.NET 2005 (2008) для создания Web-сервиса необходимо выбрать New Web Site - > ASP.NET Web Service. Назовем Web-сервис RootCalculatorService Среда Microsoft Visual Studio.NET генерирует несколько файлов Service.asmx, Web.config и Service.cs
7 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Пример Web-сервиса (1)
8 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Пример Web-сервиса (2)
9 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Пример Web-сервиса (3)
10 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Пример Web-сервиса (4)
11 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Общие характеристики Web-сервисов: Web-сервисы реализуются как asmx - файлы (данное расширение зарегистрировано в файле Machine.config ) Исполняемый код Web-сервиса может находиться как в самом файле asmx, так и в специальном файле с кодом Asmx- файлы начинаются WebService, эта директива содержит, по крайней мере, атрибут class, задающий класс, из которого состоит Web-сервис Классы Web-сервисов могут иметь необязательные атрибуты WebService Web-методы объявляются путем назначения открытым методам класса сервиса атрибута WebMethod.
12 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Атрибут WebMethod Имя параметраЗначение BufferResponse Включение/отключение буферизации откликов CacheDuration Кэширует отклики данного метода на указанное число секунд Description Описание Web-метода EnableSession Включает/отключает поддержку состояния сеанса MessageName Название Web-метода TransactionOption Параметры обработки транзакций
13 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Наследование от класса WebService Наследование от данного класса позволяет получить прямой доступ к таким свойствам как Application, Session, Context, Server, User Наследование от этого класса позволяет в частности использовать технологию.NET Remoting
14 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Обнаружение Web-сервисов Файловый механизм DISCO – для обнаружения локальных Web-сервисов Служба Universal Description, Discovery and Integration (UDDI) – для глобального поиска Web- сервисов
15 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Язык описания Web-сервисов WSDL Язык WSDL - XML-диалект, позволяющий описывать Web-сервисы и их методы Язык WSDL использует несколько уровней абстракции для описания Web-сервисов в модульном ключе Описание WSDL помещается между тегами базового элемента Definitions и включает разделы: Types, Messages, Operations, Port Types, Bindings, Ports, Services
16 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 SOAP – протокол взаимодействия Web-сервисов SOAP – протокол удаленного вызова, функционирующий поверх http (Simple Object Access Protocol) Каждое сообщение SOAP состоит из следующих частей: Конверт Заголовок Тело SOAP основывается на XML
17 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Настройка представления SOAP Среда.NET позволяет настраивать формат сообщений SOAP отправляемых Web-методом Настраивать это представление позволяют атрибуты: SoapMethodAttribute SoapRpcMethodAttribute
18 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Конфигурация заголовков SOAP Заголовки SOAP настраиваются программно с помощью атрибута SoapHeaderAttribute Для определения своего собственного представления заголовка необходимо наследовать от класса System.Web.Services.Protocols.SoapHeader Для атрибута указывается имя переменной класса заголовка [WebService()] public class Service1 : System.Web.Services.WebService { public Header1 m_foo;... [WebMethod] [SoapHeader("m_foo")] public string Bar() { m_foo.DidUnderstand = true; return m_foo.Header; }
19 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Расширения SOAP Расширения (Extensions) SOAP – предоставляют широкие возможности по настройке и обработке пакетов данных в формате SOAP Для использования расширений SOAP необходимо: создать наследника класса SoapExtension, использовать сопутствующий атрибут SoapExtensionAttribute
20 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Прокси Web-сервисов Прокси Web-сервиса - локальное представление удаленного Web-сервиса в приложении Прокси является объектом класса, созданного.NET Framework SDK на основеWSDL-описания данного Web- сервиса Методы данного класса соответствуют методам Web- сервиса Генерация данных классов встроена в Microsoft Visual Studio.NET, однако их можно генерировать и специальной утилитой wsdl.exe
21 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Асинхронный вызов Web-сервиса Прокси Web-сервисов позволяют осуществлять как синхронный, так и асинхронный вызов методов Асинхронные методы Web-сервиса помечены префиксами Begin и End Сигнализатором окончания вызова служит либо объект возвращаемый методом Begin[MethodName] и реализующий интерфейс IAsyncResult, либо подписка на уведомление о завершении метода путем передачи делегата
22 Корпоративные системы Веб-сервисы и распределенные приложения ИНТУИТ, 2009 Web-сервисы и безопасность Intranet Internet IP Security Firewalls Virtual Private Networks Http Security ASP.NET Authentication SOAP Digital Signatures Application-Specific Authentication