Слайд 1Модуль 1:
Знакомство с Windows Communication Foundation
{Спицын Александр Геннадьевич}
Ведущий разработчик
отдела разработки ПО ФТС, MCPD(EA)
{e-mail: sag@acs-it.ru}
Слайд 2Содержание
Проектирование приложений в стиле SOA
Обзор архитектуры WCF
Использование интерфейсов как
сервисных контрактов.
Реализация простого WCF сервиса в Visual Studio 2008
Реализация простого
WCF клиента в Visual Studio 2008
Лабораторная работа: Создание простого WCF сервиса.
Слайд 3Урок 1: Разработка приложений в стиле СОА
Преимущества сервис ориентированной архитектуры
Разработка
SOA приложений
WCF и SOA
WCF в контексте SOA
Слайд 4История развития методологий
Функциональный подход
Объектно-ориентированное программирование
Компонентно-ориентированное программирование
Служебно-ориентированное программирование
Слайд 5Служебно-ориентированные приложения
Приложение
Служба
Служба
Служба
Объекты, компоненты
Слайд 6Преимущества сервис ориентированной архитектуры
Взаимодействие базируется на межотраслевых стандартах.
Служебно-ориентированные программы более
устойчивы к ошибкам.
Избавляют разработчика от возни с вторичным кодом и
позволяет сосредоточиться на бизнес-логике.
Межтехнологическая совместимость. При написании обычно не нужно думать на какой платформе написан клиент.
Беспроблемный переход через границы( границы безопасности, географические, организационные, временные, транзакционные …) благодаря стандарту, основанному на базе обмена сообщениями
Слайд 7WCF & SOA
WCF поддерживает SOA:
Разработчикам нет необходимости изучать WSDL
Множества
функционала реализует среда выполнения
Существуют приложения облегчающие создание сервисов и клиентов.
Однако:
То,
что вы лишь предоставляете функционал службы через Web сервис не означает, что вы создаете приложение в стиле SOA
SOA помогает проектировать сервисы, а WCF предоставляет возможность реализовывать данные сервисы.
Слайд 8Каноны и принципы
Четкие границы служб.
Автономность служб.
Службы предоставляют контракты операций и
схемы данных, а не метаданные, специфические для конкретных типов технологий.
Совместимость
служб определяется политикой.
Слайд 9Практические принципы
Службы должны быть безопасными.
Службы должны оставлять систему в стабильном
состоянии.
Службы должны быть потоково-безопасными.
Службы должны быть надежными.
Службы должны быть устойчивы
к ошибкам.
Слайд 10Необязательные принципы
Службы должны быть совместимы
Службы должны быть масштабно-инвариантны.
Службы должны быть
доступны.
Службы должны обладать доступным временем отклика.
Службы должны работать в нормальных
временных рамках.
Слайд 11WCF в контексте SOA
Пример: приложение для абстрактного заказчика
Уровень языка:
Объекты заказчика,
хранимые в базе данных
Бизнес правила (например хранимые процедуры)
Workflow
Стандартные типы .NET
Framework
Уровень языка:
Объекты заказчика, хранимые в базе данных
Бизнес правила (например хранимые процедуры)
Workflow
Стандартные типы .NET Framework
Уровень службы:
Напоминает бизнес фасад с иными, более дружественными к сервисам типами
Методы службы больше похожи на определенные бизнес функции и скрывают обращение к нескольким функциям уровня языка
Слайд 12Урок 2: Обзор архитектуры WCF
Разработка сервисно-ориентированных приложений с помощью WCF
Отправка
сообщений WCF
ABC конечных точек
Структура сервиса
Единая программная модель
Взаимодействие с не WCF
приложениями
Слайд 13Разработка WCF сервис-ориентированных приложений
WCF позволяет создавать сервисы единообразно, вне зависимости
от сетевого протокола взаимодействия
Клиент обращается к сервису для получения определенного
функционала
Клиенты и сервисы взаимодействуют посредством обмена сообщениями
Предназначение клиентов и сервисов – не предоставлять друг другу единое адресное пространство
Сервис-ориентированная архитектура – концепция и стиль проектирования сервисов
Слайд 14Организация взаимодействия в WCF
Слайд 16Компонентная архитектура
Поведение
Каналы
Слайд 17Взаимодействия клиента и сервиса
Client
Service
Слайд 18Конечные точки Endpoints
Client
Service
Endpoint
Endpoint
Endpoint
Endpoint
Слайд 19Адрес, привязка, контракт
Service
Client
Address
Где?
Contract
Что?
Binding
Как?
Endpoint
Слайд 20ABC конечных точек (Endpoints)
A
B
C
По какому адресу искать сервис
Пример:
Пример:
Пример:
Как взаимодействовать с
сервисом
Что сервис может сделать для меня
Слайд 21Создание точек взаимодействия
Client
Service
ServiceHost
ClientChannel
Слайд 23Единая программная модель
Множество технологий разработки распределенных приложений
Едина программная модель
Слайд 24Взаимодействие с не WCF приложениями
Web сервисы
Старые Web сервисы такие как
ASP.NET ASMX сервисы
Другие Web сервисы, поддерживающие протоколы WS-*
POX (plain old
xml) сервисы
Слайд 25Урок 2: Использование интерфейсов как сервисных контрактов
Пример простого контракта
Атрибут ServiceContract
Атрибут
OperationContract
Данные и сообщения
Контракты, метаданные и артефакты
Слайд 29Данные и сообщения
CLR типы преобразуются к инфонабору XML при сериализации
WCF
позволяет определить собственный способ сериализации
Состав и структура сообщения должна быть
понятна клиенту и серверу
Контракты данных и контракты сообщений предназначены для контроля утверждений
Слайд 30Контракты, метаданные и артефакты
Слайд 31
Proxy.cs
Описываем точки взаимодействия
app/web.config
Client
Service
GetMetadata
WSDL
Слайд 32Урок 4: Создание простого WCF сервиса
Определение сервисного контракта и его
реализация в классе
Хостинг сервиса
Конфигурация сервиса
Демонстрация: создание простого WCF сервиса
Слайд 35Виды хостинг сервиса
class HelloHost
{
static void Main(string[] args)
{
ServiceHost host =
new ServiceHost(typeof(HelloService));
host.Open();
// Wait until done accepting connections
Console.ReadLine();
host.Close();
}
}
<%@ Service Language=“C#” Class=“HelloService” %>
http://localhost/HelloService/HelloService.svc
Внутри процесса
В IIS
Слайд 37Демонстрация
Создание простого WCF сервиса
Слайд 38Занятие 5: Создание простого WCF клиента
Импорт метаданных
Вызов сервиса используя прокси
Демонстрация:
вызов простого WCF сервиса
Слайд 40Вызов сервиса посредством прокси
Слайд 41Реализация клиента
class Client
{
static void Main()
{
IHello proxy = ChannelFactory.
CreateChannel(“HelloEndpoint”);
string r = proxy.Hello(“Beat”);
Console.WriteLine(r);
}
}
address="http://localhost/HelloService"
binding="basicHttpBinding"
contract="IHello" />
Слайд 43Контракты*
Контракты сервисов и операций
Дуплексные, С сохранением сессии
Однонаправленные, Запрос/Ответ, Открытие/Закрытие, Сбои
Версионность
протокола
Контракты сообщений и данных
Схема сообщения
Версионность схемы
Тонкое управление
Действие, Направление, Заголовки, Тело
сообщения, Обертки, Кодировка
Слайд 44Связывание: вид изнутри*
Transport
IPC
MSMQ
Custom
TCP
HTTP
Protocol
Encoders
Binary
Text
Custom
.NET
TX
Custom
Security
RM
Слайд 45Стандартные наборы
T = Transport Security | S = WS-Security |
O = One-Way Only
Слайд 46Связывание: взгляд снаружи
BasicHttpBinding
WsHttpBinding
WsDualHttpBinding
NetTcpBinding
NetNamedPipeBinding
NetMsmqBinding
NetPeerTcpBinding
Интеграция
WCF к WCF
Слайд 47Возможности связывания
Кодировка
Text, Binary, Custom
Транспорт
TCP, HTTP, Named Pipes, P2P, MSMQ, Свой
собственный
Безопасность
Шифрование, подпись
Аутентификация: X509, User/Pwd, Kerberos, SAML, InfoCard, Свой
Гарантированная доставка
Вне зависимости
от выбранного транспорта (по порядку, ровно 1 раз)
Надежная и незаметная проверка доступности
Транзакции
Общие транзакции для “синхронных” операций
Очереди транзакций для “асинхронных” операций
Слайд 48Подведение итогов
В этом модуле рассмотрели:
Проектирование приложений в стиле SOA
Архитектура WCF
Использование
интерфейсов как сервисных контрактов.
Реализация простого WCF сервиса в Visual Studio
2008
Реализация простого WCF клиента в Visual Studio 2008
Слайд 49Лабораторная работа
Написать простой сервис единственный метод которого возвращает клиенту строку
HelloWorld
Разместить сервис в консольном приложении
Предусмотреть возможность получения метаданных сервиса
Реализовать клиента
сервиса
Слайд 50Спасибо за внимание
ЗАО «Эй-Си-Эс»
адрес:620014
Екатеринбург
Радищева, 12
тел: +7 (343) 253-53-00
{ Спицын Александр
Геннадьевич
e-mail: sag@acs-it.ru,
http://www.acs-it.ru}