WCF服务设计问题

3

从您的实际经验来看,定义一个只接受某些对象作为请求形式并返回其他对象作为请求结果的服务契约是否可行?我的意思是,不是为创建、删除、编辑和搜索客户端分别创建方法,而是将这些活动封装在DataContract中,当服务收到这样的DataContract时,服务将根据其采取某些操作。但服务接口只需简单如下:

interface ISomeService
{
  IMessageResult Process(IMessageRequest msg);
}

所以IMessageRequest将拥有名为OperationType = OperationTypes.CreateCustomer的字段,其余字段将提供足够的信息,使服务能够创建客户对象或在数据库中创建记录等。IMessageResult可以具有一个带有某些代码的字段,用于指示是否已创建客户。
我通过这样的设计试图实现的目标是能够轻松地将IMessageRequest委托给其他客户端不知道的内部服务。我看到的另一个好处是,如果我们必须对客户进行一些操作,我们只需为此操作提供附加的DataContract,而无需在服务接口方面进行任何更改(我想尽可能避免这种情况,我的意思是不是新的操作,而是改变服务接口:)
那么,你觉得呢?这是处理复杂业务流程的好方法吗?有什么缺陷,有什么可以改进的地方。
如果我重复了其他线程,并且有关于我的问题的答案,请向我提供链接,因为我没有找到它们。
2个回答

2

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

这种方法的一个很好的起点是Davy Brion的文章,他称之为请求/响应层。他将自己最初的想法和思路整合成了一个非常实用的开源项目,叫做Agatha,我正在撰写本文时向客户介绍此项目。


谢谢提供这些链接,Davy似乎描述了我想要做的事情。 - grapkulec

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接