WCF服务设计问题

时间:2010-01-29 11:14:13

标签: wcf service

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

interface ISomeService
{
  IMessageResult Process(IMessageRequest msg);
}

因此,IMessageRequest将提交名为OperationType = OperationTypes.CreateCustomer的字段,其余字段将为服务提供足够的信息,以便它可以在数据库中创建Customer对象或记录等等。并且IMessageResult可以使用一些代码来指示客户是否已创建。

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

那么,您怎么看?这是处理复杂业务流程的好方法吗?什么是pitfals,什么可能更好。

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

2 个答案:

答案 0 :(得分:2)

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

此类方法的一个很好的起点是Davy Brion关于他所谓的request/response layer的帖子。他巩固了他最初的想法和想到一个名为Agatha的非常有用的OSS项目,我在写这篇文章的时候就是在客户网站上提出的。

答案 1 :(得分:1)

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