手动创建客户端代理和引用MSMQ WCF服务之间的区别?

时间:2011-12-31 19:59:31

标签: wcf msmq service-reference

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

  

请注意,您无法轻松使用“添加服务引用向导”   Visual Studio添加对使用MSMQ的WCF服务的引用   运输。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

关于为什么使用svcutil而不是VS来生成代理代码更容易的问题,没有看到实际的书籍就很难评论,但是在幕后,visual studio使用svcutil来生成代码,所以我可以看看它会变得更好还是更糟。当您手动执行此操作时,您可以更好地控制生成的内容。