创建WCF服务引用的正确方法?

时间:2009-06-25 13:48:23

标签: wcf wcf-client

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

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

如果某个机构可以就消费返回实体类型及其遵循的最佳实践的WCF服务提供一些建议,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

我们发现添加服务引用会创建大量不需要的代码,这些代码会比它有所帮助。

我们已经尝试了一种手动设置方法,这里有一个介绍这种方法的方法:

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

答案 1 :(得分:2)

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

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

现在如果你真的想避免重复数据合同等,可以将它们编译成自己的程序集,然后在调用svcutil时使用/ r :(程序集名称)开关告诉它重新使用代码并且在该集会中签订合同。

马克