【问题标题】:WCF service design questionWCF服务设计问题
【发布时间】:2010-01-29 11:14:12
【问题描述】:

根据您的实际经验,是否可以使用一种方法定义服务合同,该方法将接受某个对象作为请求形式,并作为该请求的结果返回某个其他对象。我的意思是,我没有创建、删除、编辑和搜索客户的方法,而是将这些活动封装在 DataContracts 中,并且在收到此类 DataContract 后服务会采取相应的措施。但是服务接口就这么简单:

interface ISomeService
{
  IMessageResult Process(IMessageRequest msg);
}

所以 IMessageRequest 将提交命名为 OperationType = OperationTypes.CreateCustomer ,其余字段将为服务提供足够的信息,以便它可以创建客户对象或在数据库中记录或其他任何内容。并且 IMessageResult 可以包含一些代码以指示是否创建了客户。

我试图通过这种设计来实现将 IMessageRequest 轻松委托给客户端甚至不知道的其他内部服务的能力。我看到的另一个好处是,如果我们必须对客户添加一些操作,我们只需为此操作提供额外的 DataContract 并且不必在服务接口方面进行任何更改(我想不惜一切代价避免这种情况,我的意思是不是新的操作但改变服务接口:)

那么,你怎么看?这是处理复杂业务流程的好方法吗?什么是陷阱,什么可以更好。

如果我复制了一些其他线程并且我的问题有一些答案,请提供链接,因为我没有找到它们。

【问题讨论】:

    标签: wcf service


    【解决方案1】:

    简短回答:是的,这可能是一个非常好的主意(我已经以一种或另一种形式实施了几次)。

    这种方法的一个很好的起点是Davy Brion 在他所谓的request/response layer 上的帖子。他将他最初的想法和想法整合到一个非常有用的 OSS 项目中,名为Agatha,我在写这篇文章时正在一个客户网站上提出这个建议。

    【讨论】:

    • 感谢这些链接,戴维似乎准确地描述了我打算做什么
    【解决方案2】:

    这正是我们在我工作的地方所做的。它工作得很好,所有开发人员都很容易理解,并且非常容易连接新的方法/类/等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多