【发布时间】:2010-07-26 14:55:22
【问题描述】:
我们正在公司中实施大量服务,并遇到数据合同的版本控制问题。我们遇到的问题之一是我们的数据合约也被用作服务背后的实际应用程序的模型。我想知道其他人在这种情况下采取了什么方法,或者只是一般的服务版本控制。我知道微软最佳实践指南,但想看看是否有人对如何版本有任何其他想法。
【问题讨论】:
标签: wcf versioning
我们正在公司中实施大量服务,并遇到数据合同的版本控制问题。我们遇到的问题之一是我们的数据合约也被用作服务背后的实际应用程序的模型。我想知道其他人在这种情况下采取了什么方法,或者只是一般的服务版本控制。我知道微软最佳实践指南,但想看看是否有人对如何版本有任何其他想法。
【问题讨论】:
标签: wcf versioning
服务的第一条规则,业务对象!=消息对象。基本上,永远不要将您的业务对象公开为数据合同。或者正如我喜欢说的,你不能传真猫。您可以发送猫的传真,但不能通过网络发送猫。这里有一张很棒的图片来提醒你:http://www.humorhound.com/2009/04/demotivational-poster-youre-doing-it-wrong/
用更现代的术语来说,它实际上是 MVVM 模式。域层使用的模型视图不是为客户端构建的,因此您必须为其他层创建单独的模型和视图。是的,这似乎需要更多的工作,但最终它是构建面向服务的应用程序的一种更容易和更好的方法。版本控制只是让生活更轻松的方式之一。另一件重要的事情是,您倾向于构建适合其使用方式的模型,并且最终会得到更多显式代码(不那么疯狂的分支)。
【讨论】:
我们实现这一点的方式是在业务层之上构建一个外观层。
外观层使用数据契约中定义的对象与世界其他地方进行对话。
在将数据发送到业务层之前,外观层将对象映射到内部对象。
这将系统的内部功能与数据合同中使用的对象隔离开来。
【讨论】: