WCF代理创建

WCF代理创建,wcf,proxy,Wcf,Proxy,我有一个关于WCF代理创建的问题,它可能是初学者的水平,但必须问。我使用VS add service reference在客户端中创建了wcf服务的代理。现在,由于该服务中的某些方法可能需要更长的时间来执行和阻止所有可用的代理连接,因此我希望使用来自客户端的同一服务的不同代理来调用每个方法 现在的问题是: 我的方法正确吗?我的意思是这能解决我的目的吗 为了使用不同的代理,我是否需要添加多个具有不同名称的服务引用 作为第2点的一个选项,我可以只添加一次服务引用,然后在配置中用不同的名称复制相同的端

我有一个关于WCF代理创建的问题,它可能是初学者的水平,但必须问。我使用VS add service reference在客户端中创建了wcf服务的代理。现在,由于该服务中的某些方法可能需要更长的时间来执行和阻止所有可用的代理连接,因此我希望使用来自客户端的同一服务的不同代理来调用每个方法

现在的问题是:

  • 我的方法正确吗?我的意思是这能解决我的目的吗
  • 为了使用不同的代理,我是否需要添加多个具有不同名称的服务引用
  • 作为第2点的一个选项,我可以只添加一次服务引用,然后在配置中用不同的名称复制相同的端点吗?所以每次我想创建一个新的代理时,我都会在代理的构造函数中将不同端点的名称传递给同一个服务
  • 还有(多个代理=代理的多个实例)

  • 关于

    我认为最好的方法是对单个代理实例使用异步操作。
    它就像网络浏览器——你可以在许多选项卡中看到相同的网页。它们都独立工作,但使用相同的端点资源。请尝试阅读

    您可以对单个配置和单个端点使用单个服务引用。要并行调用服务上的多个方法,可以在不同的线程中创建多个代理实例,或者在标记为
    async

    的不同方法中创建多个代理实例。我认为这不是一个好主意。如果某个代理实例出现问题,所有异步调用都将失败,因为代理处于失败状态。为什么代理会失败?应用程序错误是可以处理的,并且没有问题。如果通道失败,我想其他实例也会失败。即使只在失败时重新创建实例,也比每次服务调用都要便宜。如果您有一些智能代理可以重新创建通道,那么公平应该不会有问题。但代理可能会因为许多原因而失败,这就是为什么它们内置了失败的状态。@dandrejvv是的。谢谢你的评论。嗨,史蒂夫,谢谢你的回复。我不仅关心并行呼叫,还关心连接池的耗尽。因此,如果我的代理设置为say maxconnection=10,并且如果阻塞的方法获得前10个请求,那么我的连接将耗尽。现在,如果对另一个没有阻塞的方法的请求传入,该请求将不会传递到服务,因为连接数已经超过10。希望我说的有道理,如果我遗漏了一点,请纠正我。这是有道理的,但是如果您将maxConnections设置的值和WCF服务的可用资源基于服务必须处理的负载,您可以避免这种情况发生。您还可以考虑设置适当的发送和接收超时,并将系统设置为在某些事情花费太长时间时正常失败。