Глава 1. Основные понятия
Почему именно WCF? Введение Реализация WCF-службы Всего лишь АПК Полностью программная реализация службы Реализация службы с помощью кода и конфигурационных файлов Еще о конфигурационных файлах Еще о размещении служб Включение оконечной точки обмена метаданными (MEX) Реализация клиента WCF-службы Реализация клиента целиком в коде Реализация клиента с помощью кода и конфигурационного файла Размещение службы в IIS Обсуждение Реализация WCF-клиента для ASMX-службы Инструментальная поддержка Генерация прокси-класса и конфигурационного файла для клиента
Глава 2. Контракты
Синхронные операции запрос-ответ Асинхронные операции запрос-ответ Односторонние операции Дуплексные операции Сравнение парного одностороннего и дуплексного обмена Реализация серверной части дуплексного контракта о службе Реализация клиентской части дуплексного контракта Службы с несколькими контрактами и оконечными точками Имена операций, типов, действий и пространств имен в WSDL Контракты о данных Определение XSD-схемы для класса .NET Определение иерархий классов Включение дополнительных типов в WSDL с помощью атрибута Known Type Контроль версий контрактов о данных Эквивалентность контрактов о данных Работа с наборами Контракты о сообщениях Типизированные сообщения Нетипизированные сообщения Использование заголовков SOAP в сочетании с нетипизированными сообщениями
Глава 3. Каналы
Канальные формы Односторонняя коммуникация Дуплексная коммуникация Коммуникация запрос-ответ
Изменение формы Контракт об операциях и канальные формы Прослушиватели каналов Фабрики каналов Класс ChannelFactory Интерфейс ICommunicationObject
Глава 4. Привязки
Выбор подходящей привязки Пример приложения Коммуникация между .NET-приложениями на разных машинах Привязка netTcpBinding Коммуникация между .NET-приложениями на одной машине Привязка netNamedPipeBinding Коммуникация с использованием Web-служб Привязка basicHttpBinding Коммуникации с помощью продвинутых Web-служб Привязка wsHttpBinding Привязка ws2007HttpBinding Привязка wsDualHttpBinding Сравнение производительности и масштабируемости привязок Коммуникация со службами на базе очередей Привязка netMsmqBinding Привязка msmqIntegrationBinding Создание заказной привязки
Привязки, определяемые пользователем Элементы привязки Безопасность Раскрытие контракта о службе с помощью нескольких привязок
Глава 5. Поведения
Параллелизм и создание экземпляров (поведение службы) Параллелизм и создание экземпляров по умолчанию для безсеансовых привязок Многопоточность в одном экземпляре Реализация синглета
Сеансовые экземпляры Управление количеством одновременно работающих экземпляров Управление количеством одновременных вызовов Управление количеством одновременных сеансов Экспорт и публикация метаданных (поведение службы) Реализация транзакций (поведение операции) Поток транзакций, пересекающий границы операций Выбор транзакционного протокола – OleTx или WS_AT Поведения транзакционных служб Реализация заказных поведений Реализация инспектора сообщений для поведения оконечной точки Раскрытие инспектора параметров для поведения операции
службы в виде атрибута Задание поведения службы в конфигурационном файле Поведения, касающиеся безопасности
Глава 6. Сериализация и кодирование
Сравнение сериализации и кодирования Сравнение вариантов сериализации, имеющихся в WCF Класс DataContractSerializer Класс NetDataContractSerializer Класс XmlSerializer Класс DataContractJsonSerializer Выбор сериализатора Сохранение ссылок и циклических ссылок Обобществление типов с помощью класса NetDataContractSerializer Обратимая сериализация с применением интерфейса IExtensibleDataObject Сериализация типов с помощью суррогатов Потоковая отправка объемных данных Использование класса XmlSerializer для нестандартной сериализации Нестандартная сериализация с применением атрибутов Нестандартная сериализация с применением интерфейса IXmlSerializable Выбор кодировщика Текстовое и двоичное кодирование Отправка двоичных данных в кодировке MTOM Знакомство с кодировщиком WebMessageEncoder
Глава 7. Размещение
Размещение службы в Windows Process Activation Services Размещение службы в IIS 7 Включение функций ASMX в службе, размещенной в IIS Авторазмещение внутри управляемой службы Windows Размещение нескольких служб в одном процессе Определение адресов службы и оконечных точек
Глава 8. Безопасность
Концепции безопасности в WCF Аутентификация Авторизация Конфиденциальность Целостность Безопасность на уровне транспорта и сообщений Шифрование на базе сертификатов Основные идеи Подготовка Безопасность на транспортном уровне Шифрование по SSL Идентификация службы Безопасность на уровне сообщений Аутентификация для привязки wsHttpBinding Обеспечение безопасности служб с помощью интегрированных в Windows средств Описание демонстрационной среды
Аутентификация пользователей средствами Windows Авторизация пользователей средствами Windows
Авторизация с использованием AzMan Олицетворение пользователей Обеспечение безопасности служб, работающих через Интернет Интеграция с ASP.NET Аутентификация с помощью поставщика информации
о членстве Авторизация по роли с использованием поставщика информации о ролях Аутентификация с помощью форм Протоколирование и аудит
Глава 9. Диагностика
Демонстрационное WCF-приложение Трассировка Сквозная трассировка Деятельности и корреляция Включение трассировки Рекомендации по выбору уровня детализации Протоколирование сообщений
Включение протоколирования сообщений Дополнительные конфигурационные параметры Обобществление прослушивателей Фильтры сообщений Автоматический сброс источника трассировки Счетчики производительности Windows Management Instrumentation (WMI) Редактор конфигурации служб Параметры трассировки Параметры протоколирования Конфигурирование источников Конфигурирование прослушивателей Инструмент просмотра трассы службы Режим просмотра деятельностей Режим просмотра проекта Режим просмотра сообщений Режим просмотра графа Анализ протоколов из различных источников Фильтрация результатов
Глава 10. Обработка исключений
Введение в обработку исключений в WCF Передача исключений по протоколу SOAP Пример необработанного исключения Обнаружение и восстановление отказавшего канала Передача информации об исключении Управление исключениями в службе с помощью класса FaultException Использование FaultCode и FaultReason для расширения FaultException Ограничения класса FaultException Создание и обработка строго типизированных отказов Объявление отказов с помощью класса FaultContract Определение контракта об отказе Возбуждение исключения FaultException, параметризованного контрактом об отказе Реализация обработчиков отказов на стороне клиента Прикладной блок обработки ошибок Экранирование исключений
Глава 11. Потоки работ
Точки интеграции Использование операции Send Написание заказной операции WF Раскрытие службы из WF Определение интерфейса Операция Receive Задание конфигурации в файле app.config Размещение потока работ, наделенного возможностями службы Авторазмещение потока работ, наделенного возможностями службы Размещение потока работа, наделенного возможностями службы, в IIS 12
Корреляция и долговечность Протяженный поток работ Обработка контекста Сохранение состояния потока работ на сервере Управление доступом к потокам работ, наделенным возможностями службы Декларативный контроль доступа Программный контроль доступа
Глава 12. Пиринговые сети
Подходы к построению распределенных приложений Клиент_серверные приложения N_ярусные приложения
Пиринговые приложения Сравнение подходов к построению распределенных приложений Пиринговые приложения Ячеистые сети Разрешение имен в ячеистой сети Массовое и направленное вещание Создание пиринговых приложений Привязка netPeerTcpBinding Обнаружение участников с помощью протокола PNRP Процедура начальной загрузки PNRP Имена компьютеров в Windows Internet Класс PnrpPeerResolver Аутентификация в ячеистой сети Регистрация имен по протоколу PNRP Пространство имен System.Net.Peer Реализация нестандартного распознавателя Ограничение количества передач сообщения Технология People Near Me Технология Windows Contacts Приглашения Пространство имен System.Net.PeerToPeer.Collaboration Организация направленного вещания с помощью заказной привязки
Глава 13. Средства программирования Web
Все, что вы хотели знать о URI Вездесущий GET Формат имеет значение Программирование для Web с помощью WCF Классы Uri и UriTemplate Построение URI Разбор URI Создание операций для Web Размещение с привязкой webHttpBinding Атрибуты WebGet и WebInvoke Атрибут WebGet Атрибут WebInvoke Программирование для Web с использованием AJAX и JSON Интеграция с ASP.NET AJAX Класс WebOperationContext Размещение в Web Класс WebScriptServiceHost Класс WebScriptServiceHostFactory
Синдицирование контента с помощью RSS и ATOM
Приложение. Дополнительные вопросы
Публикация метаданных с помощью оконечных точек Привязка mexHttpBinding Привязка mexNamedPipe Binding Привязка mexTcpBinding Привязка mexHttpsBinding Создание клиентов на основе метаданных
Создание Silverlight_клиентов на основе метаданных Обобществление портов несколькими службами Конфигурирование квот для службы Конфигурирование http-соединений Рециркуляция простаивающих соединений Изменение времени жизни соединения Отключение механизма HTTP Keep_Alive Увеличение количества соединений Конфигурирование TCP-соединений Рециркуляция простаивающих соединений
Изменение времени жизни соединения Увеличение количества соединений LINQ и WCF Представление реляционных данных с помощью LINQ_to_SQL