WCF - разница между поведением и контрактом? - PullRequest
15 голосов
/ 25 января 2010

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

Ответы [ 4 ]

32 голосов
/ 25 января 2010

Версия Cole's Notes:

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

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

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

  • Существует также Поведение операции , которое аналогично поведению службы, но применяется только при выполнении определенной операции .

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

8 голосов
/ 15 июля 2012

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

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

Следующее - в двух словах, что зажгло свет для меня (привет Фреду Яну)

ServiceContract

  • влияет на поведение как клиента, так и сервера
  • может применяться как к интерфейсу, так и к классу
  • влияет на излучаемый WSDL

ServiceBehavior

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

С ServiceContract против ServiceBehavior

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

7 голосов
/ 25 января 2010

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

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

0 голосов
/ 10 декабря 2015

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...