【问题标题】:Difference between manually creating a client proxy and referencing a MSMQ WCF service?手动创建客户端代理和引用 MSMQ WCF 服务之间的区别?
【发布时间】:2011-12-31 19:59:31
【问题描述】:

在大多数使用 MSMQ 传输的 WCF 服务示例中,始终首选使用 Visual Studio 命令提示符中的 svcutil 手动创建代理,而不是简单地添加服务引用。当您可以通过向 Visual Studio 中的“添加服务引用”对话框提供其端点地址来引用该服务时,为什么要使用 VS 命令提示符创建代理(因为它稍微费力一些)?我在阅读WCF 4 Step by Step时遇到了这个问题:

请注意,您不能在 Visual Studio 添加对使用 MSMQ 的 WCF 服务的引用 运输。

究竟为什么难?引用 WCF 服务的前一种方法究竟有什么好处(如果有的话)?在我看来,手动创建代理只是不必要地使任务复杂化。

【问题讨论】:

  • 我不知道会有什么区别,除非 mex 上的 msmq 有问题。

标签: wcf msmq service-reference


【解决方案1】:

只要您有对定义服务接口、操作和数据协定的程序集的引用,您就不需要预先生成代理。然后,您可以使用 ChannelFactory 动态创建代理。

var factory = new ChannelFactory<IMyServiceInterface>("MyServiceNameInAppConfig");
var proxy = factory.CreateChannel();

这比使用 svcutil 简单得多。但是,如果服务是远程的并且您无法访问类型程序集,那么您别无选择,只能生成代理。

关于您关于为什么使用 svcutil 而不是 VS 生成代理代码更容易的问题,没有看到很难评论的实际书籍,但是在引擎盖下,Visual Studio 无论如何都使用 svcutil 生成代码,所以我可以看不出它会变得更好或更糟。当您手动执行此操作时,您可以更好地控制生成的内容。

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    相关资源
    最近更新 更多