1

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

请注意,您不能轻松地使用 Visual Studio 中的添加服务引用向导来添加对使用 MSMQ 传输的 WCF 服务的引用。

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

4

1 回答 1

1

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

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

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

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

于 2012-01-01T12:44:49.570 回答