WCF DataContract集中化

时间:2013-07-04 17:50:05

标签: wcf soa

我有几个WCF服务使用相同的dataContracts在它们之间交换数据。

我是否可以使用某种元数据端点来集中管理所有这些模式?

在创建新的WCF服务时,如何使其从Metadata Endpoint加载模式(而不是重新定义它们)以在其operationContracts中使用?

谢谢!

1 个答案:

答案 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的引用,您就可以在其中重用数据合同。