为什么我应该使用Visual Studio服务引用而不是svcutil?

12

在将WCF服务代理代码引入Visual Studio项目时,似乎有几个主要的选择:

  1. 使用Visual Studio内置工具进行Service References

  2. 使用类似于 svcutil http://[my endpoint] /namespace:[my namespace] /noconfig 这样的简单的svcutil命令(由于我跨项目使用了一些标准绑定),然后将生成的文件拖入到我的项目中(或直接升级)。

需要明确的是,第二种选项似乎是最好的选择,尽管没有内置的更新工具。但是Service References对话框会生成大量文件。我是否忽略了VS Service References可能存在的任何微不足道的优势?


3
它们基本上是同一件事情。 - John Saunders
1
Visual Studio基本上在幕后调用svcutil。然而,许多程序员害怕打开命令提示符并运行命令行工具 - 这就是为什么Visual Studio有“添加服务引用”对话框的原因... - marc_s
我知道它们在底层是相同的,但它是否使用一些/厉害的开关来生成所有这些XSD和其他文件以获得某些好处呢? - Brandon Linton
所以,这最初是关于为什么VS服务引用会添加所有那些疯狂的文件(如disco等),但这些答案和一些谷歌搜索让我相信实际上并没有令人信服的好处。因此...我们将通过NuGet共享代理和/或契约。 - Brandon Linton
可能是“Visual Studio 2008是否使用SvcUtil.exe,如果不使用是否有任何缺点?”的重复问题。https://dev59.com/GEbRa4cB1Zd3GeqPxSG6 - Michael Freidgeim
我有一个与此问题相关的紧急问题。使用WF4工作流服务“添加服务引用”时,情况如何? Svcutil是否真的在幕后被调用? 我看不到XAMLX活动是如何由svcutil生成的。 我需要找出更多信息,因为我在使用WF4 WF Service项目Add Service Reference针对第三方WSDL时遇到了错误。 - Sentinel
2个回答

21

和使用命令行手动编译 .net 项目相比,为什么要使用 VS 呢?IDE 中的 I 代表 Integrated(集成),它会为你完成一些任务,从而避免你需要手动从多个分离的位置和过程中进行操作。

虽然通常可以使用文本编辑器和命令提示符手工完成许多这样的操作,但是让我们更加高效生产吧 :-)


2
UI工具与命令行达成一致。那么你是在说可用性是唯一的好处吗? - Brandon Linton

14
如果您也拥有该服务,我建议不要使用任何一个。相反,将您的合同、实体和客户端代理分解为不同的程序集,以便在服务端和客户端都可以使用。
就像WCF手动模式...正确的方式中所描述的那样。

我在很多地方听说过这个问题,我认为甚至在某个iDesign文档中也有提到(也许是一个单独的问题),但是我是否还需要一个重量级的管理策略来下载和更新这些程序集呢?我已经尝试了svn:externals并考虑使用NuGet,但除了更容易更新之外(而且svn:externals几乎太容易将代码意外地混入构建中),我不确定我能得到什么好处,除了稍微更DRY的代码。 - Brandon Linton
1
如果您拥有所有的代码,这应该不是问题。您不必引用程序集;您可以引用服务引用相同的项目。每次构建时,您的客户端也将得到更新。 - Esteban Araya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接