【发布时间】:2015-12-30 09:04:18
【问题描述】:
我不确定我是否理解 web.config 元素 <endpointBehaviors> 和 <serviceBehaviors> 之间的区别(当然还有相邻的行为)。
【问题讨论】:
我不确定我是否理解 web.config 元素 <endpointBehaviors> 和 <serviceBehaviors> 之间的区别(当然还有相邻的行为)。
【问题讨论】:
来自here:
ServiceBehavior 仅适用于服务,而 EndpointBehavior 同时适用于客户端和服务。
ServiceBehavior 可以通过config/attribute/code 指定,endpointbehavior 可以通过config/code 指定。
ServiceBehavior 可以访问所有 ServiceEndpoints 调度运行时,因此可以修改所有调度运行时,同时 仅使用该端点的运行时调用 Endpointbehavior。
这样看,ServiceBehavior 允许您访问所有端点的运行时参数,而 Endpointbehavior 允许您仅访问该端点的运行时组件。因此,如果您需要扩展生成整个合约(或多个合约)的功能,请使用 ServiceBehavior,如果您有兴趣扩展一个特定端点,请使用 Endpointbehavior。
也可以随时参考MSDN了解详情:
<endpointBehaviors>这个配置部分代表了所有 为特定端点定义的行为。
<serviceBehaviors>这个 配置部分表示为一个定义的所有行为 具体服务。
一个很好的 MSDN 参考:Configuring and Extending the Runtime with Behaviors
【讨论】:
一些可用性差异是
ServiceBehavior 仅适用于服务,而 EndpointBehavior 同时适用于客户端和服务。
ServiceBehavior可以通过config/attribute/code指定,endpointbehavior可以通过config/code指定。
ServiceBehavior 可以访问所有 ServiceEndpoints 调度运行时,因此可以修改所有调度运行时,同时仅使用该端点的运行时调用 Endpointbehavior。
这样看,ServiceBehavior 允许您访问所有端点的运行时参数,而 Endpointbehavior 允许您仅访问该端点的运行时组件。因此,如果您需要扩展生成整个合约(或多个合约)的功能,请使用 ServiceBehavior,如果您有兴趣扩展一个特定端点,请使用 Endpointbehavior。
当然还有最大的不同,如果你想在客户端自定义端点,那么唯一的选择就是 IEndpointBehavior。
合同规定了服务的实际作用。换句话说,什么操作是有效的。
端点指定服务的实际运行实例。它是实际的“服务”,无论是作为 Windows 服务还是在 IIS 下执行。
服务行为定义端点如何与客户端交互。安全性、并发性、缓存、日志记录等属性 - 这些都是行为的一部分。
还有一个操作行为,它类似于服务行为,但仅在运行特定操作时应用。
【讨论】: