WCF – это технология, предназначенная для проектирования, построения, сопровождения и модификации распределенных приложений.
WCF – полностью построена на базе .NET Framework, написана с использованием языка C# и является частью .NET
SOA — Service Oriented Architecture
Сервис-ориентированная архитектура — это модульный подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами.
Принципы SOA
- Архитектура, не привязана к определённой технологии.
- Независимость организации системы от используемой вычислительной платформы (платформ).
- Независимость организации системы от применяемых языков программирования.
- Использование сервисов, независимых от конкретных приложений, с единообразными интерфейсами доступа к ним.
- Организация сервисов как слабо-связанных компонентов для построения систем.
Сообщения
Сервис-ориентированные приложения – называют приложениями обмена сообщениями.
SOAP — Simple Object Access Protocol
Сервис (Служба)
Функциональный модуль, доступный для обращения к нему из других модулей.
Конечная точка (Endpoint) Конечная точка – представляет собой совокупность адреса, контракта и привязки.
Простой пример использовании WCF отправка сообщения и получения ответа:
У нас будет создано два проекта один клиентская часть, другая серверная.
В обоих проектах будет общий интерфейс, приведённый ниже:
Интерфейс IContract
[ServiceContract]
interface IContract
{
[OperationContract]
string Say(string input);
}
В клиентской части будет реализован лишь метод Main
Класс Client
class Client
{
static void Main(string[] args)
{
Console.Title = "CLIENT";
// Указание, где ожидать входящие сообщения.
Uri address = new Uri("http://localhost:4000/IContract");
// Указание, как обмениваться сообщениями.
BasicHttpBinding binding = new BasicHttpBinding();
// Создание Конечной Точки.
EndpointAddress endpoint = new EndpointAddress(address);
// Создание фабрики каналов.
ChannelFactory<IContract> factory = new ChannelFactory<IContract>(binding, endpoint);
// Использование factory для создания канала (прокси).
IContract channel = factory.CreateChannel();
// Использование канала для отправки сообщения получателю и приема ответа.
string response = channel.Say("Hello WCF!");
Console.WriteLine(response);
// Задержка.
Console.ReadKey();
}
}
Серверная часть
В ней находится 2 класса и представленный выше интерфейс.
Класс Service
class Service : IContract
{
// Реализация контракта - IContract.
public string Say(string input)
{
Console.WriteLine("Сообщение получено, Тело содержит: {0}", input);
// Ответ клиенту.
return "OK!";
}
}
Класс Server
class Server
{
static void Main()
{
Console.Title = "SERVER";
// Указание адреса, где ожидать входящие сообщения.
Uri address = new Uri("http://localhost:4000/IContract"); // ADDRESS. (A)
// Указание привязки, как обмениваться сообщениями.
BasicHttpBinding binding = new BasicHttpBinding(); // BINDING. (B)
// Указание контракта.
Type contract = typeof(IContract); // CONTRACT. (C)
// Создание провайдера Хостинга с указанием Сервиса.
ServiceHost host = new ServiceHost(typeof(Service));
// Добавление "Конечной Точки".
host.AddServiceEndpoint(contract, binding, address);
// Начало ожидания прихода сообщений.
host.Open();
Console.WriteLine("Приложение готово к приему сообщений.");
Console.ReadKey();
// Завершение ожидания прихода сообщений.
host.Close();
}
}
Привязка
BasicHttpBinding binding = new BasicHttpBinding();
Клиент должен использовать точно такие же параметры привязки, что и служба.
URI
Uniform Resource Identifier – Уникальный Идентификатор Ресурса
URI = URL + URN
URL Uniform Resource Locator – Уникальный указатель Расположения Ресурса
URN Uniform Resource Name – Уникальный указатель Имени Ресурса
Возможности WCF
Основная функциональность WCF разделяется на 10 категорий:
- Независимая модификация. Возможность изменять отдельные части системы и добавлять новые, не затрагивая при этом другие её части.
- Асинхронный однонаправленный обмен сообщениями. Возможность написания приложений с применением вызовов функций типа «Запрос-Ответ».
- Платформенная консолидация. Объединение возможностей многих предыдущих технологий в единую программную модель.
- Безопасность. (Аутентификация, Авторизация, Конфиденциальность, Целостность, Безопасность на уровне транспорта, Безопасность на уровне сообщений) Основные концепции безопасности, с помощью которых обеспечивается безопасность сервисов, описаны спецификацией WS-Security.
- Надежность. В распределенных вычислениях, надежная доставка сообщений называется гарантированной. WCF содержит механизмы, обеспечивающие три вида гарантии надежной доставки сообщений: Не более одного раза, Хотя бы один раз, По порядку.
- Поддержка транзакций. Транзакцией называется набор операций. Сбой одной операции приводит к сбою всего набора.
- Сетевое взаимодействие (Interoperability) Способность системы менять программную или аппаратную платформу, не затрагивая других участников сценария распределенных вычислений.
- Производительность.
- Расширяемость. WCF — предоставляет возможности для расширения своей архитектуры. WCF позволяет создавать свои собственные: Транспорт, Каналы, Привязки, Кодировки, Архитектурные парадигмы.
- Возможности конфигурирования. WCF — предоставляет возможности конфигурирования посредством конфигурационных файлов на базе XML. Возможность конфигурирования позволяет сотрудникам, не
- являющимся разработчиками, сопровождать приложение и изменять порядок его действий без привлечения команды разработчиков.
