我有几个WCF服务使用相同的dataContracts在它们之间交换数据。
我是否可以使用某种元数据端点来集中管理所有这些模式?
在创建新的WCF服务时,如何使其从Metadata Endpoint加载模式(而不是重新定义它们)以在其operationContracts中使用?
谢谢!
答案 0 :(得分:0)
正如我在评论中所说,我不确定我理解你的问题(至少在想要元数据端点方面),但听起来你希望能够在多种不同的服务中重用现有的数据合同
最简单的方法是将数据协定放在一个单独的程序集(类库 - DLL)中,然后让服务引用该程序集 - 它们不必在服务本身内定义。
这是一个简单的例子(代码仅供参考,不是为了实际做任何事情或是一个完整的样本):
MyDataContracts assembly
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的引用,您就可以在其中重用数据合同。