开始一个新项目 - 我从哪里开始?

问题描述:

我要开始自己的项目,这将是ASP.NET MVC + Fluent NHibernate。我想尽可能多地使用测试优先方法。那么,我从哪里开始呢?数据库模式?领域模型?将域模型类映射到数据库?开始一个新项目 - 我从哪里开始?

+1

最近我开始走这条路,我会建议http://jasondentler.com/blog/2009/08/how-to-using-the-n-stack-part-1/为smoe排序的起点。尽管我不同意它,但它给了我一些想法 – 2010-04-01 22:18:57

+0

你忘了敏捷,依赖注入和DDD。如果你不使用这些项目,我就不会看到你的项目如何取得成功。 – 2010-04-01 22:20:58

+0

我打算使用DI和DDD,但我不太了解它们,并会一直在研究它们 – chester89 2010-04-01 22:26:56

如果您在编写测试方面经验不足,那么从域模型(或UI下面的更高层)开始是最容易的。当您使用TDD驱动域模型的设计时,您将知道数据库模式需要如何。推迟向系统中引入数据库可能是件好事,因为处理数据库模式迁移会增加开发的开销。而且这也将导致更好的设计,因为这样域模型将更好地与数据库层分离。

如果您擅长编写测试和TDD,从端到端测试开始(在这种情况下,它们将针对Web UI编写)并生成一小段功能触及系统的所有建筑部分(如GOOS中所建议的)。换句话说,创建一个walking skeleton。这种方法的好处是:(1)您一开始就能够解决和解决集成问题,(2)当端到端测试用于驱动设计时,它可以帮助您避免实施(3)编写端到端测试的难度迫使您改进体系结构并添加监控挂钩,这对监控生产系统也可能有用。 (集中的单元测试仍然是需要的,因为它们提供了课程级别的设计压力,加上它们运行得更快,从而提供更快的反馈。)

我已经在Design for Integrability上写了更多关于后一种方法。

需求收集。

从应用程序的模拟/原型(例如Balsamiq Mocks)开始,然后编写视图,随着模拟控制器,随后编写控制器逻辑,嘲笑DAO/Repositorys。当你开始编写你的DAO/Repositories时,你将会很好地了解你所需的域对象。将它们敲出来并使用Fluent Nhibernate来构建数据库。

至少,这是他们的方式,我试图做的事情。

我建议你使用相结合的最佳实践S#arp Architecture项目:

  • NHibernate的
  • FluentNhibernate
  • TDD/DDD与模型firts使用SQLite数据库的方法进行单元测试
  • 惩戒
  • 库图案

您也可以安装S#arp arch。 Visual Studio IDE的模板。