Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF数据契约集中化_Wcf_Soa - Fatal编程技术网

WCF数据契约集中化

WCF数据契约集中化,wcf,soa,Wcf,Soa,我有几个WCF服务使用相同的DataContract在它们之间交换数据 我可以有一种元数据端点来集中管理所有这些模式吗 在创建新的WCF服务时,如何使其从元数据端点加载架构(而不是重新定义它们)以在其operationContracts中使用 谢谢 正如我在评论中所说,我不确定我是否理解您的问题(至少是关于需要元数据端点的问题),但听起来您希望能够在多个不同的服务中重用现有的数据契约 最简单的方法是将数据协定放在一个单独的程序集中(类库-DLL),然后让服务引用该程序集-它们不必在服务本身中定义

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

我可以有一种元数据端点来集中管理所有这些模式吗

在创建新的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的引用,就可以在其中重用数据契约。

我不确定是否理解您的问题,但如果您希望在多个服务之间使用相同的数据契约,只需将它们放入一个单独的程序集中,并让每个服务引用该程序集。您所说的元数据端点是什么意思?集中管理所有这些模式?你的模式是什么?什么是集中化管理?同意,然后从客户美国ChannelFactory[1]获得共享程序集中的合同,并避免完全添加服务引用。[1] @kellyb-是,如果服务合约在共享程序集中。数据契约不应该考虑ChannelFactory。谢谢!我在使用WCF kewyord时犯了一个错误。假设您有一个团队用wcf实现服务,另一个团队用Java实现服务。共享dll方法不起作用。我希望能够以独立于平台的方式集中合同定义。