1

我有一个基于 TCP 的自托管 WCF 服务。我现在正在构建一个使用该服务的项目,但似乎至少有两种方法可以将服务引用添加到项目中,并且两者都会产生截然不同的代理。首先,我使用项目菜单中的“添加服务引用”,但这会生成相当多的文件,甚至是核心 .Net 类型的一些 XML 模式。然后我尝试了只生成两个文件的 SvcUtil,一个代理和一个包含服务引用和绑定参数的配置文件,这要好得多但是......

在这两种情况下,VS 工具似乎都重现了类型定义,即使我提供了对包含服务及其使用的所有类型的程序集的引用。例如,我的一些服务方法返回实体类的通用集合。所有实体类都是在我直接从消费项目引用的程序集中定义的,那么为什么要再次重新定义这些类型呢?

如果有人可以就使用返回实体类型的 WCF 服务以及它们遵循的任何最佳实践提供一些建议,我将不胜感激。

4

2 回答 2

2

是的,在您的具体情况下,这可能看起来像重复 - 但请考虑一下:WCF 也被设计为可互操作的,并且在大多数情况下,特别是如果您有一个非 .NET 客户端调用您的代码,您将不会拥有程序集合同和接口可用。

所以除了创建一个包含所有信息的完整代理之外,真的没有什么可以在所有可能的情况下工作的。

现在如果你真的想避免重复数据契约等,你可以将它们编译成自己的程序集,然后在调用 svcutil 时使用 /r:(assembly name) 开关告诉它重用代码和契约那个大会。

马克

于 2009-06-25T14:30:46.560 回答
2

我们发现添加服务引用创建了很多不需要的代码,这些代码阻碍了它的帮助。

我们已经过手动设置它的方法,这里有这个方法的介绍:

http://perseus.franklins.net/dnrtvplayer/player.aspx?ShowNum=0103

于 2009-06-25T13:59:40.303 回答