WCF:我应该如何在客户端和服务器中维护合同类?

Hem*_*ant 5 .net wcf client-server

我正在使用服务器和客户端(自然)的WCF应用程序.在服务器项目中,我使用契约属性定义了类.

现在,当服务器准备就绪时,我添加了服务引用,并为我创建了代理.我用它,它确实工作正常.

我想问的问题是,如果我创建一个包含带有契约属性的类定义的公共DLL并将其用于服务器和客户端(而不是使用Visual Studio为客户端生成的类),是否可以.如果我使用公共类,我不必担心在自动代码生成时将泛型集合转换为数组.这很傻吗?可能吗?以前有人这样做过吗?这样做可以吗?

部署方案使得安全Intranet中的客户端数量有限(很少),并且只要服务器发生更改,就可以更新现有客户端.

Mar*_*ell 2

只要您控制客户端,这种方法就很好(我经常使用这种方法) 。它(显然)不适用于 java 客户端等。如果您知道永远不需要支持非 .NET 客户端,那么它可能很强大,但它打破了一些纯粹的 SOA 规则。特别是,是的,在内联网场景中我可能会考虑这种方法。

svcutil.exe 和 IDE 都可以选择重用现有程序集中的类型来执行此操作。

编辑这种方法的另一个优点是,如果您想在客户端使用相同的验证逻辑,而不需要对其进行两次编码 - 例如IDataErrorInfo等。