WCF Введение в технологию Windows Communication Foundation

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. Возможность конфигурирования позволяет сотрудникам, не
  • являющимся разработчиками, сопровождать приложение и изменять порядок его действий без привлечения команды разработчиков.
Обновлено: 24.06.2021 — 17:00

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.