Предисловие

О чем эта книга

Для кого предназначена книга

Необходимое программное обеспечение

Структура книги

Принятые в книге соглашения

Благодарности

Поддержка в Интернете

От издательства

Глава 1 · Знакомство с web-службами

Основные понятия web-службы

Web-ориентированные приложения

Что такое web-служба

Для чего нужны web-службы

Основы web-служб

История развития web-служб

Модель COM/DCOM

Стандарт CORBA/IIOP

Стандарт Java RMI

Недостатки существующих стандартов

Достоинства web-служб NET

Архитектура web-служб NET

Базовые технологии

Спецификация WSDL

Протокол SOAP

Стандарт DISCO

Спецификация UDDI

Web-службы конкурирующих фирм-производителей

Другие технологии

NET MyServices

NET Remoting

XML-RPC

Система обмена сообщениями

Сервер BizTalk

Глава 2 · Создание web-служб ASP NET

Создание web-службы типа «Hello, World»

Разработка web-службы с помощью текстового редактора

Создание службы «Hello, World» в среде Visual Studio NET

Тестирование службы

Описание службы

Вызов web-метода

Атрибут WebService

Атрибут WebMethod

Свойства Description и MessageName

Свойство EnableSession

Свойство CacheDuration

Свойство TransactionOption

Свойство BufferedResponse

Развертывание web-службы

Развертывание web-службы посредством Visual Studio NET

Непосредственное развертывание web-службы

Использование компиляторов NET

Глава 3 · Использование web-служб

Модель использования web-служб

Модель публикация-поиск-привязка

Модель клиент-служба

Доступ к web-службам по протоколу HTTP

Сервер IIS

Работа с HTTP

Метод GET

Метод POST

Использование протокола SOAP

Сравнение доступа по протоколам HTTP и SOAP

Предоставление web-служб

Элементы WSDL

Содержимое WSDL-документа

Вызов web-служб

Создание прокси-клиента

Использование Visual Studio NET

Применение утилиты wsdlexe

Использование прокси-класса

Работа с прокси-классом

Класс WebClientProtocol

Класс HTTPWebClientProtocol

Другие реализации прокси-класса

Использование web-узла посредством службы Screen Scraper

Традиционная технология screen scraping

Регулярные выражения

WSDL-расширения для регулярных выражений

Реализация технологии screen scraping посредством web-службы

Глава 4 · Обработка данных разных типов

Простые типы данных

XML Schema

Базовые типы данных NET

Структуры

Массивы

Работа со сложными типами данных

Сериализация

Формирование выходных XML-данных

Ограниченная и полная сериализация

Использование сложных типов данных в качестве аргументов

Получение web-службой данных сложных типов

Передача web-службе аргументов сложных типов

Передача данных с помощью наборов данных DataSet

Использование наборов DataSet

Возвращение типизированных и нетипизированных наборов данных

Использование двоичных данных

Глава 5 · Управление состоянием

Основные сведения о состоянии

Сравнение проектов с сохранением состояния и без сохранения состояния

Web-службы и процедуры свойств

Web-службы и обработка транзакций

Сценарии управления состоянием

Тонкослойный проект

Проект с сохранением состояния

Проект с агрегированием данных

Состояние сеанса ASP NET

Cookie-файл сеанса

Использование состояния сеанса

Коллекция Items

Доступ к службам с сохранением состояния

Конфигурирование состояния сеанса

Режим использования состояния сеанса

Обработка состояния вне процесса

Обработка состояния службой Windows

Обработка состояния посредством базы данных SQL Server

Тайм-аут

Создание классов, корректно использующих данные сеанса

Пример: управление состоянием сеанса

Состояние приложения

Пользовательские cookie-файлы

Web-службы без сохранения состояния и использование мандатов

Заголовки SOAP

Определение SOAP-заголовка

Прокси-класс

Использование SOAP-заголовков

Проблемы, связанные с применением SOAP-заголовков

Глава 6 · Асинхронные службы

Асинхронный режим работы

Методы Begin и End

Опрос при асинхронных запросах

Одновременный вызов нескольких методов

Использование объекта WaitHandle

Применение обратных вызовов

Использование сложного потокового класса

Асинхронные службы

Вызов без получения ответа

Создание асинхронных web-служб на основе компонентов

Другие подходы к созданию асинхронных служб

Глава 7 · Кэширование

Кэширование в среде ASP NET

Цель кэширования

Тестирование web-служб с кэшированием

Простое кэширование результатов

Блокировка кэширования

Выбор выходных данных для кэширования

Время кэширования

Кэширование данных

Помещение элементов в кэш

Абсолютное и скользящее время хранения

Другие члены класса Cache

Приоритеты кэширования

Простой пример кэширования данных

Клонирование

Кэш-зависимости

Создание файловых зависимостей

Создание зависимостей от других кэшированных элементов

Делегат CacheItemRemovedCallback

Кэширование вместо сохранения состояния

Определение производительности web-служб

Среда тестирования

Счетчики производительности

Наиболее важные счетчики для среды ASP NET

Глава 8 · Отладка, трассировка и регистрация

Отладка в среде Visual Studio NET

Создание решения служба-клиент в среде VS NET

Задание точек останова в коде web-службы

Использование исключений

Свойство Message

Свойство StackTrace

Создание собственных исключений

Регистрация ошибок в среде NET

Регистрация при помощи журнала приложения

Получение регистрационной информации

Регистрация при помощи электронной почты

Трассировка

Расширения SOAP

Классы SOAP-расширений

Создание класса SoapExtention

Обработка сообщений

Создание атрибута SoapExtentionAttribute

Простое расширение регистрации

Усовершенствованные SOAP-расширения

Инициализация данных

Метод ChainStream

Усовершенствованное средство регистрации

Прокси-расширения

Глава 9 · Безопасность и аутентификация

Потенциальная уязвимость

Аутентификация web-службы

Особенности защиты сервера IIS

Аутентификация пользователя и сертификаты клиента

Базовая аутентификация и SSL

IP-адрес и ограничения имен доменов

Ограничения сопоставлений приложений

Организация безопасности IIS

Защита ASP NET

Файлы конфигурации mashineconfig и webconfig

Провайдеры аутентификации ASP NET

Использование проверки подлинности Windows

Недостатки аутентификации посредством форм

Недостатки Passport-аутентификации

Программируемая защита

Идентификации, роли и доверители

Объекты WindowsPrincipal и WindowsIdentity

Использование объектов WindowsPrincipal и WindowsIdentity

Имперсонация

Пользовательские методы аутентификации

Проектирование производительности и масштабируемости

Реализация метода аутентификации при помощи SQL

Мандатная система

Пользовательский провайдер аутентификации

Защита процесса

Глава 10 · Публикация и поиск служб

Публикация

UDDI

История UDDI

Что такое UDDI

Зачем нужен UDDI

UDDI-регистры предприятий

Содержимое регистра

Классификация деятельности

Доступ к регистру

Регистрация записи о предприятии

Система классификации

WSDL и UDDI

WSDL и структуры данных UDDI

WSDL и t-модели

Связывание web-службы с предприятием

Связывание службы с t-моделью

Visual Studio NET и UDDI

Обмен UDDI-сообщениями

SOAP и UDDI

Интерфейс Inquiry API

Интерфейс Publish API

Доступ к UDDI средствами NET

UDDI SDK

Порядок использования UDDI SDK

WS-Inspection как альтернатива UDDI

Настройка тестовой страницы IE

Глава 11 · Совместимость

Текущее состояние спецификаций

Различия между реализациями

Форматы SOAP-сообщений

Кодирование в SOAP

Проблема совместимости для SOAP

Общие проблемы

Группа SOAPBuilders

Тест на совместимость для SOAP

Проблема совместимости для WSDL

Совместимость HTTP и M-Post

Известные проблемы совместимости

Протокол Apache SOAP v22

Пакет SOAP::Lite 051

Пакет MS SOAP Toolkit v30

Обеспечение максимальной совместимости

Приложение А · Краткий обзор пространств имен

Пространство имен SystemWebServices

Пространство имен SystemWebServicesProtocols

Приложение Б · Технологии организации web-служб

Транзакции

Безопасность

Описание и поиск

Маршрутизация и управление процессом

Инкапсуляция сообщений

Алфавитный указатель