WCF - разница между поведением и контрактом?

В WCF, в чем разница между Поведением и Контракт? Изучив конфигурационный файл, оба, похоже, указывают на интерфейс функциональности службы. Почему они оба нужны?

Ответы

Ответ 1

Версия Cole Notes:

  • Контракт указывает, что на самом деле делает служба. Другими словами, действительны Операции.

  • Конечная точка указывает фактический исполняемый экземпляр службы. Это фактическая "служба" в том смысле, что она выполняется либо как служба Windows, либо под IIS.

  • Поведение службы определяет, как конечная точка взаимодействует с клиентами. Атрибуты, такие как безопасность, concurrency, кэширование, ведение журнала и т.д. - все это часть поведения.

  • Существует также Operation Behavior, который похож на поведение службы, но применяется только при выполнении конкретной операции.

Для получения дополнительной информации я предлагаю вам начать с Обзор архитектуры WCF.

Ответ 2

Немного поздно для ответа, но

  • поскольку я в настоящее время борется с различием между двумя
  • и поскольку это один из первых результатов в Google
  • и потому, что текущие ответы не дали мне этого момента ахи

следующее в двух словах, что привело меня к свету (cudo к Fred Yang)

ServiceContract

  • влияет на поведение клиентов и сервера
  • может применяться как к интерфейсу, так и к классу
  • влияет на исходящий WSDL.

ServiceBehavior

  • влияет только на поведение сервера.
  • применим только к реализации класса
  • не влияет на WSDL

Из ServiceContract vs ServiceBehavior

В WCF атрибут ServiceContract влияет на поведение обоих клиентов и сервер, в то время как ServiceBehavior влияет только на поведение сервера. ServiceContract может применяться как к интерфейсу, так и к классу, но ServiceBehavior может применяться только к реализации класса. ServiceContract влияет на источник wsdl, но ServiceBehavior не будет влияют на излучение wsdl.

Ответ 3

Контракт - это интерфейс - он определяет сервисные операции, предоставляемые службой WCF, которые могут или не могут соответствовать 1:1 интерфейсу без приложения вашего приложения.

Поведение - это реализация этого интерфейса на хосте - для всех целей и задач "служба".

Ответ 4

Контракт - это договор между клиентом и поставщиком услуг. Он сообщает, какие данные будут отображаться.

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