我们正在使用 WCF 和 Visual Studio 2008 构建一个大型的分布式应用程序。我们在 WCF 方面没有太多经验,因此我们正在投入一些时间来设计客户端和服务器之间的 WCF 通信原型。我们观察到,我们的服务器子系统中的 WCF 服务作为参数或返回类型引用的任何类都被 Visual Studio 通过生成的代码“复制”到客户端代理中。令我惊讶的是,在执行此操作时,Visual Studio 会更改类的命名空间。例如,假设我有以下代码:
namespace MyLibrary
{
class MyClass
{
//...
}
}
想象一下,我将它编译成MyLibrary.dll
,我的 WCF 服务对此有参考。我的一些 WCF 服务MyLibrary.MyClass
用作返回类型。当我查看生成的客户端代理代码时,我发现MyClass
它是自动可用的(这很酷),但它不再在MyLibrary
命名空间中,而是在 Visual Studio 生成的命名空间中。
我们计划拥有一个复杂的域对象模型,其中包含分布在多个程序集中的数百个类,我担心这将如何在 Visual Studio 所做的代码生成中“移植”。另外,我担心我们设计的所有良好的命名空间层次结构可能会丢失。我们最初的愿景是为这个领域对象模型创建类库,并在服务器和客户端上部署它。但由于 WCF 魔法似乎为必要的类生成代码,我想如果我们在客户端部署我们自己的库会发生冲突。
那么我有两个具体问题:
- 有没有办法让 Visual Studio 在生成客户端代理代码时使用原始命名空间方案而不是它自己的?如果没有,这会影响我们“复制”库在客户端上的可用性吗?
- 我可以在客户端上部署原始库吗?我想不会,但这会导致什么样的冲突?
谢谢你。