Почему WCF так важен и в каких случаях он используется?

Я понимаю, что это помогает приложениям взаимодействовать независимо от их местоположения. Почему это важно и каков пример реального использования WCF?

6 ответов

Решение

WCF - это общий механизм связи, который позволяет настроить общий клиент-хост-обмен между двумя сторонами. Отличительной особенностью WCF является то, что она позволяет настраивать такие свойства службы, как транспорт (http/pipe /tcp/Tibco EMS), модели безопасности (любой из стандартов W3C), сжатие, кодирование, тайм-ауты и т. Д., Без изменения ЛЮБОГО кода., Это мощно. Лучше всего, вы можете настроить его так, чтобы у вас была служба на C# и клиент на Java (или на любом другом языке или наоборот), если они оба общаются с использованием одних и тех же механизмов.

Вы можете создать стандартный веб-сервис HTTP SOAP, используя WCF, и однажды решите переключить его, чтобы использовать более быстрые именованные каналы для локальной связи. Вы можете создавать веб-сервисы, которые взаимодействуют по TibcoEMS и имеют простое переключение при сбое на уровне очереди. Вы можете создать веб-сервис потоковой передачи файлов, который распространяет все виды изображений / видео в ваше приложение.

Вот некоторые мозговые свалки, которые, я думаю, могут быть полезны для понимания всего сценария.

Причина создания WCF: история вопроса

При разработке современных приложений [Distributed Application] мы используем различные архитектуры и технологии для общения

то есть:

  • COM +
  • .NET Enterprise Services
  • MSMQ
  • .NET Remoting
  • Веб-сервисы

Как существуют различные технологии. все они имеют разные архитектуры. поэтому учить их все сложно и утомительно.

нужно сосредоточиться на каждой технологии для разработки, а не на бизнес-логике приложения

Таким образом, Microsoft объединяет возможности в единую, общую, ориентированную на сервис модель программирования для Коммуникации. WCF предоставляет общий подход с использованием общего API, который разработчики могут сосредоточить на своем приложении, а не на протоколе связи.

Сейчас мы называем это WCF.

WCF Фон

NB: изображение получено с - http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics


Что именно означает сервис WCF?

WCF позволяет асинхронным сообщениям преобразовывать одну конечную точку службы в другую.

Сообщение может быть простым как

  • Одиночный персонаж
  • Слово

отправлено как XML

  • сложная структура данных как поток двоичных данных

Windows Communication Foundation (WCF) поддерживает несколько языков и платформ.

WCF Предоставляет среду выполнения для ваших сервисов, позволяя вам выставлять типы CLR как сервисы и использовать другие сервисы как типы CLR.


Несколько примеров сценариев включают в себя:

  • Безопасный сервис для обработки бизнес-транзакций.
  • Служба, которая предоставляет текущие данные другим, например, отчет о трафике или другая служба мониторинга.
  • Служба чата, которая позволяет двум людям общаться или обмениваться данными в режиме реального времени.
  • Приложение панели мониторинга, которое опрашивает один или несколько сервисов на предмет данных и представляет их в логическом представлении.
  • Предоставление рабочего процесса, реализованного с использованием Windows Workflow Foundation в качестве службы WCF.
  • Приложение Silverlight для опроса сервиса о последних каналах данных.

С какой стати мы должны использовать WCF?

из статьи проекта кода, благодаря @Mehta Priya я нашел следующие сценарии, иллюстрирующие эту концепцию. Давайте рассмотрим два сценария:

  • Первый клиент использует Java- приложение для взаимодействия с нашим Сервисом. Таким образом, для совместимости этот клиент хочет, чтобы сообщения в формате XML и протокол были HTTP.
  • Второй клиент до сих пор использует.NET с более высокой производительностью. Клиенту нужны сообщения в двоичном формате и протокол TCP.

Без услуг WCF

Теперь для заявленных сценариев, если мы не используем WCF, то что произойдет, давайте посмотрим на следующие изображения:

  • Сценарий 1:

совместимость без WCF

  • Сценарий 2:

совместимость без WCF

Это две разные технологии и имеют совершенно разные модели программирования. Таким образом, разработчики должны изучить различные технологии

так что объединить и объединить все технологии под одной крышей. Microsoft пришла с новой моделью программирования под названием WCF.

Как WCF сделать вещи проще?

один реализует службу, и он / она может настроить столько конечных точек, сколько требуется для поддержки всех потребностей клиента.

Для поддержки вышеуказанных 2 требований клиента - мы настроим 2 конечные точки - мы можем указать протоколы и форматы сообщений, которые мы хотим использовать в конечной точке конфигурации

совместимость без WCF

Рекомендации:

  1. WCF: что, почему и когда https://vishalnayan.wordpress.com/2010/12/31/wcf-what-why-when/
  2. Почему мы используем сервис WCF? http://www.codeproject.com/Tips/815742/Why-We-Use-WCF-Service-and-Sample-of-WCF-Service
  3. Что такое Windows Communication Foundation? https://msdn.microsoft.com/en-us/library/ms731082(v=vs.110).aspx
  4. Основы Windows Communication Foundation http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics

Пока мало что можно добавить к ответам, особенно из "siz".

Одна вещь, которую нужно добавить, это то, что WCF - это современный способ создания веб-сервисов на платформе.NET. Это не "новый" путь, это текущий путь. Веб-сервисы ASMX - это старый и едва поддерживаемый способ. Один сотрудник Microsoft публично заявил, что на платформе ASMX будут сделаны только критические исправления безопасности, поэтому, если вы планируете, чтобы ваши службы были полезны более чем через год, не используйте ASMX.

В дополнение к типичным сценариям использования "веб-службы" WCF обрабатывает нетипичные случаи, такие как двоичное взаимодействие по именованным каналам, очереди сообщений и т. Д. В значительной степени служба, которую вы пишете для поддержки чего-то простого, такого как SOAP поверх SSL, также может поддерживать эти другие протоколы, без изменений в коде.

Чтобы ответить на вопрос "реального мира", я просто заканчиваю систему диспетчеризации, с помощью которой приемник аварийных сигналов доступа Visual Basic 6.0/, система WPF/SQL ERP и приложение iPhone обмениваются информацией для планирования и выполнения заданий.

По сути, в этом случае вы хотите, чтобы два отдельных приложения как-то общались друг с другом, а их местоположение неизвестно (это может быть одна и та же машина (но другой домен приложения), та же сеть или другая сторона интернета).

Вы можете легко встроить его в приложение Windows Forms. Это было приятно узнать. Это намного проще, чем .NET Remoting тоже.

Существует ряд причин, по которым он имеет преимущество перед классическими веб-службами ASP.NET (.asmx).

Вот пара из них с моей головы:

  1. Возможность иметь несколько привязок для одного и того же вызова службы означает, что сообщение не нужно сериализовать в XML и обратно, если вы просто хотите общаться внутри веб-фермы.

  2. Способ определения контрактов гораздо более щадящий, когда речь идет о нескольких версиях одного и того же контракта.

Другие вопросы по тегам