编者按

推动设计

Howard Dierking

howardd.ednote.gif

在本期的MSDN Magazine,我们关注我们关注与最佳软件设计中相关的主题。此主题是个人的收藏项,因为很好的设计实践是软件开发的所有 sub-specialties 无处不。我们有从验收测试和 IronRuby 范围在 WPF 中的演示文稿模式的主题的一个令人信服的收集甚至在"奥斯陆平台概述。

我,最大兴趣的相应但是,是 Dave Laribee 是"简介驱动域的设计"。 我已经被一个订阅服务器和域驱动设计 (DDD) 考虑因为我读取 Eric Evans 簿同名的大约四年前,并已增长的最小的问题的考虑这样的 Practitioner。我相信这已很大程度上由于域驱动设计、 丰富的域模型模式和测试驱动开发之间相互补充的关系。

但方面构建软件没有没有银。我监视技术 (如 Windows Workflow Foundation (WF) 和 Windows Communication Foundation (WCF) 继续发展,我看到向服务继续的差值。我不能帮助,但想知道是否某些实践和试探法我拥护遵循导致我重新创建我自己的几个滚轮,并随后破坏好的软件设计目标之一,创建更易于维护的系统。

让我们看 Dave 引用在文章的保险问题域。我,太,一次该行业中工作并生成我认为一个而不是明确的框架用于验证策略配置和计算称为插图的预测。我从外部使用测试驱动方法创建我的域模型将、 我的模型映射到使用流行的对象关系映射器数据库和预计到多个表示层的我的模型。我继续重构我域模型,我注意到几。首先的所有逻辑 (和所有我已生成的测试) 都开始类似于我已见过的内容。并事实上,回分段和在我的域模型时, 我意识到实质上是必须编写自己的向前链接规则引擎。

请记住的最易于维护的代码不必维护,考虑计算策略插图的代码。公司的实际计算逻辑是由 actuarial 科学家使用一个功能通常 symbolic 语言 (如 APL 或 mathematica 创建的。然后,此逻辑已转换到我们的面向对象的域模型。在为我确定可以推导出回归测试期间发现一个很好的许多错误中引入这种转换。

在我自己的体验的根据我想知道我的应用程序将具有查找类似有我重我验证逻辑构到规则引擎采取一种更 polyglot 基于方法用于计算。将我的应用程序仍已"域驱动"?或可以 DDD 理念分隔从其更频繁的、 面向对象的实现吗?

我已经被检查我旧代码最近,希望查看其中将我了解 DDD 原则偏向由我 OO 编码技能,然后重构应用程序以更适合的范例相应部分。到目前为止我已结束是域驱动认为仍设计软件的基本部分。(在实际上,DDD 的某些元素成为 multi-paradigm 的设计中更有意义)。 最后,我的经验已验证的域必须驱动器设计的事实,甚至当它质询是为我们作为开发人员习惯。

请访问我们在msdn.microsoft.com/Magazine. 问题、 注释或 MSDN Magazine 建议?请将其发送到编辑器:mmeditor@Microsoft.com.

由于向以下 Microsoft 技术专家致以的帮助此问题:Surupa 经理、 Mike Calligaro、 John Gossman、 Tim Heuer、 Ed Katibah、 Gaurav Khanna、 Ravi Krishnamurthy,Mike Magruder、 Rick Molloy、 Dave Murray、 Michael Puleio、 Bob Schmidt、 Don Smith 和 Matt Winkler。