none
服务(endpoint)个数与WCF效率的关系? RRS feed

  • 问题

  • 服务(endpoint)个数与WCF效率有什么关系吗?比如需要暴露30个借口,是做成30个服务(endpoint)每个服务(endpoint)一个借口呢?还是做成一个服务(endpoint)一个借口,然后通过参数再调用不同的方法。主要考虑效率上的问题。
    2010年11月11日 8:00

答案

  • 服务(endpoint)个数与WCF效率有什么关系吗?比如需要暴露30个借口,是做成30个服务(endpoint)每个服务(endpoint)一个借口呢?还是做成一个服务(endpoint)一个借口,然后通过参数再调用不同的方法。主要考虑效率上的问题。


    我没测试过,推测一下。具体需要你自己验证.

    服务的服务终结点(endpoint):包含ABC,也就是地址、绑定、契约(接口)。

    1.30个接口,也就需要提供30个Endpoint,至少是30个。

    2.如果全部放到一个EndPoint上,你就要合并这些接口,这个可能导致违反接口设计的原则。

    3.性能,在不调用服务的时候,多一个Endpoint,就需要一个线程来侦听这个Endpoint。

    4.Endpoint上有个分发器,负责把消息分发给特定的服务实例。WCF会自己控制。调用什么实例的什么分发。另外和你的服务实例模式也有关系。

       EndPoint的个数会对服务的性能产生影响,因为侦听也需要资源。尤其几个服务同时在一个服务进程里。或者同一台机器上。

    这都会有影响。但是这些影响应该不是主要的。相比之下,你更应该考虑服务并发、或者数据访问,序列化等方面的问题。


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    • 已标记为答案 Feihong.Yi 2010年11月12日 2:45
    2010年11月12日 2:30
    版主

全部回复

  • 服务(endpoint)个数与WCF效率有什么关系吗?比如需要暴露30个借口,是做成30个服务(endpoint)每个服务(endpoint)一个借口呢?还是做成一个服务(endpoint)一个借口,然后通过参数再调用不同的方法。主要考虑效率上的问题。


    我没测试过,推测一下。具体需要你自己验证.

    服务的服务终结点(endpoint):包含ABC,也就是地址、绑定、契约(接口)。

    1.30个接口,也就需要提供30个Endpoint,至少是30个。

    2.如果全部放到一个EndPoint上,你就要合并这些接口,这个可能导致违反接口设计的原则。

    3.性能,在不调用服务的时候,多一个Endpoint,就需要一个线程来侦听这个Endpoint。

    4.Endpoint上有个分发器,负责把消息分发给特定的服务实例。WCF会自己控制。调用什么实例的什么分发。另外和你的服务实例模式也有关系。

       EndPoint的个数会对服务的性能产生影响,因为侦听也需要资源。尤其几个服务同时在一个服务进程里。或者同一台机器上。

    这都会有影响。但是这些影响应该不是主要的。相比之下,你更应该考虑服务并发、或者数据访问,序列化等方面的问题。


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    • 已标记为答案 Feihong.Yi 2010年11月12日 2:45
    2010年11月12日 2:30
    版主
  • 服务(endpoint)个数与WCF效率有什么关系吗?比如需要暴露30个借口,是做成30个服务(endpoint)每个服务(endpoint)一个借口呢?还是做成一个服务(endpoint)一个借口,然后通过参数再调用不同的方法。主要考虑效率上的问题。


    我没测试过,推测一下。具体需要你自己验证.

    服务的服务终结点(endpoint):包含ABC,也就是地址、绑定、契约(接口)。

    1.30个接口,也就需要提供30个Endpoint,至少是30个。

    2.如果全部放到一个EndPoint上,你就要合并这些接口,这个可能导致违反接口设计的原则。

    3.性能,在不调用服务的时候,多一个Endpoint,就需要一个线程来侦听这个Endpoint。

    4.Endpoint上有个分发器,负责把消息分发给特定的服务实例。WCF会自己控制。调用什么实例的什么分发。另外和你的服务实例模式也有关系。

       EndPoint的个数会对服务的性能产生影响,因为侦听也需要资源。尤其几个服务同时在一个服务进程里。或者同一台机器上。

    这都会有影响。但是这些影响应该不是主要的。相比之下,你更应该考虑服务并发、或者数据访问,序列化等方面的问题。


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站 】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    非常感谢Frank的回复。O(∩_∩)O~
    2010年11月12日 2:44