WCF和多个名称空间的问题 - 跨多个服务引用共享对象类型

Roa*_*rel 5 silverlight wcf types namespaces sharing

我有两个网络服务.一个具有用户功能,一个具有管理功能.

两种服务都可以有效地使用相同的对象类型,例如:

  • AdminService提供删除/修改Customer对象的功能
  • UserService提供列出/读取Customer对象的功能

现在在客户端我有两个服务引用,Webservices.Admin和Webservices.User.

如果我使用UserService来检索Customer对象,我无法通过AdminService操作它们,因为UserService检索Webservices.User.Customer类型的对象,但是AdminService使用Webservices.Admin.Customer类型的对象.

在服务器端,两种类型都相同,只是属于客户端中的不同命名空间.

现在的问题是:我如何在不同的服务引用之间共享类型?

mar*_*c_s 1

如果您控制通信的两端,并且两端均为 .NET,则可以执行以下操作:

  • 将所有合同(包括数据合同)放入单独的“合同”程序集中
  • 在服务器端实现代码以及客户端代码中引用该程序集

如果这样做,则在添加服务引用时,WCF 将查找并使用该共享程序集,而不是为实体创建新类型。就你而言,你只会有一种类型Contracts.Customer或你正在处理的任何类型。

当您控制线路的两端并且两端都有 .NET 时,此操作才有效!但在这种情况下,这是在服务器和任意数量的客户端之间共享合同(尤其是数据合同)的好方法。