来自这里:
ServiceBehavior仅应用于服务,而EndpointBehavior应用于客户端和服务。
ServiceBehavior可以通过config/attribute/code指定,而endpointbehavior可以通过config/code指定。
ServiceBehavior可以访问所有ServiceEndpoints分派运行时,因此可以修改所有分派运行时,而 Endpointbehavior仅针对该端点调用运行时。
这样看待它,ServiceBehavior允许您访问所有端点的运行时参数,而Endpointbehavior仅允许您访问该端点的运行时组件。因此,如果您需要扩展生成整个契约(或多个契约)的功能,请使用ServiceBehavior;如果您想要扩展一个特定的端点,请使用Endpointbehavior。
同时,MSDN始终可以提供详细信息:
<endpointBehaviors>
此配置部分表示特定端点定义的所有行为。
<serviceBehaviors>
此配置部分表示特定服务定义的所有行为。
一个很好的MSDN参考:使用行为配置和扩展运行时
一些可用性差异如下:
ServiceBehavior仅适用于服务,而EndpointBehavior适用于客户端和服务端。
ServiceBehavior可以通过配置/属性/代码指定,而endpointbehavior可以通过配置/代码指定。
ServiceBehavior可以访问所有ServiceEndpoints分派运行时,并因此可以修改所有分派运行时,而Endpointbehavior仅使用该端点的运行时调用。
这样看来,ServiceBehavior允许您访问所有端点的运行时参数,而Endpointbehavior仅允许您访问该端点的运行时组件。因此,如果您需要扩展生成整个合同(或多个合同)的功能,则使用ServiceBehavior;如果您想要扩展一个特定的端点,则使用Endpointbehavior。
当然,最大的区别是,如果您想在客户端上自定义端点,则唯一的选择是IEndpointBehavior。
合同指定了服务实际执行的操作。换句话说,哪些操作是有效的。
端点指定了服务的实际运行实例。它是实际的“服务”,因为它执行,可以作为Windows服务或在IIS下运行。
服务行为定义了端点与客户端的交互方式。安全、并发、缓存、日志记录等属性都是行为的一部分。
还有一个操作行为,类似于服务行为,但仅在运行特定操作时应用。