Предисловие
О чем эта книга
Для кого предназначена книга
Необходимое программное обеспечение
Структура книги
Принятые в книге соглашения
Благодарности
Поддержка в Интернете
От издательства
Глава 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-служб
Транзакции
Безопасность
Описание и поиск
Маршрутизация и управление процессом
Инкапсуляция сообщений
Алфавитный указатель