Подтвердить что ты не робот

Разница между <endpointBehaviors> и <serviceBehaviors>

Я не уверен, что я понимаю разницу между элементами web.config <endpointBehaviors> и <serviceBehaviors> (и смежными поведением, конечно).

4b9b3361

Ответ 1

От здесь:

  • ServiceBehavior применяется только к сервису, тогда как EndpointBehavior применяется как на клиенте, так и на обслуживании.

  • ServiceBehavior можно указать через config/attribute/code, а endpointbehavior можно указать через config/code.

  • ServiceBehavior имеет доступ ко всем сеансам диспетчеризации ServiceEndpoints и поэтому может изменять время выполнения диспетчеризации во время Endpointbehavior вызывается только с рабочей средой только для этой конечной точки.

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

Также MSDN всегда можно указать, чтобы получить детали:

<endpointBehaviors> Этот раздел конфигурации представляет все поведение, определенное для конкретной конечной точки.

<serviceBehaviors> Это в разделе конфигурации представлены все варианты поведения, определенные для конкретной службы.

Хорошая ссылка MSDN: Настройка и расширение времени выполнения с помощью поведения

Ответ 2

Некоторые различия в удобстве использования:

  • ServiceBehavior применяется только к сервису, тогда как EndpointBehavior применяется как на клиенте, так и на обслуживании.

  • ServiceBehavior можно указать через config/attribute/code, а endpointbehavior можно указать через config/code.

  • ServiceBehavior имеет доступ ко всем сеансам диспетчеризации ServiceEndpoints и поэтому может изменять все время выполнения диспетчеризации, в то время как Endpointbehavior вызывается только с рабочей средой только для этой конечной точки.

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

И, конечно, есть большая разница, если вы хотите настроить конечные точки на клиенте, тогда единственным вариантом является IEndpointBehavior.

Контракт определяет, что фактически делает услуга. Другими словами, какие операции действительны.

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

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

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