我有几个 WCF 服务,它们使用相同的 dataContracts 在它们之间交换数据。
我可以有一种元数据端点来集中管理所有这些模式吗?
在创建新的 WCF 服务时,我怎样才能使它从元数据端点加载架构(而不是重新定义它们)以在其 operationContracts 中使用?
谢谢!
正如我在评论中所说,我不确定我是否理解您的问题(至少关于想要一个元数据端点),但听起来您希望能够在多个不同的服务中重用现有数据合同。
最简单的方法是将数据契约放在单独的程序集(类库 - DLL)中,然后让服务引用该程序集 - 它们不必在服务本身内部定义。
这是一个简单的示例(代码仅用于说明,不打算实际做任何事情或成为完整示例):
MyDataContracts 程序集
namespace MyDataContracts
{
[DataContract]
public class DataContract1
{
}
[DataContract]
public class DataContract2
{
}
}
MyService1 程序集
using MyDataContracts;
namespace MyService1
{
[ServiceContract]
public interface IMyService1
{
[OperationContract]
DataContract1 GetSomeData(string someParm);
}
}
MyService2 程序集
using MyDataContracts;
namespace MyService2
{
[ServiceContract]
public interface IMyService2
{
[OperationContract]
void SendSomeData(DataContract1 dc);
[OperationContract]
DataContract2 GetSomeOtherData(int parm);
}
}
当然,每个 WCF 服务项目还需要包含对 MyDataContracts 程序集的引用。
现在,每当您创建新服务时,您只需添加对 MyDataContracts.dll 的引用,您就可以在其中重用您的数据合同。