原文地址:http://ddmvc4.codeplex.com/
原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockoutjs and Bootstrap
另一种 MVC 应用程序: 简介
站点总是快速成长,一旦开始成长,站点就变得很难开发,组织和维护。所以在我们增加功能或者开发项目的时候,缺乏设计的大型网站会变得失去控制。这里要说的是站点的架构设计必须简单,容易被任何设计者理解 ( 从初级开发者到中级开发者 ),以及搜索引擎。在这篇文章中,我会试着设计一个站点,支持在线维护联系人信息。未来,这个应用可能被用在全球的大型社区站点中,带有增加的功能和模块。所以,站点的设计必须能够轻松地适配未来成长的业务逻辑。
在文章的第一部分,我会使用这种想法来讨论创建和设计用户界面 UI, UI 将会与业务逻辑进行分离,可以被创建但是不依赖任何设计者/开发者。在这一部分,我们将会使用 ASP.NET MVC, knockout Jquery 和 Bootstrap。 在文章的后面,我们将会讨论数据库的设计,以及使用分层的结构来实现业务逻辑,使用的技术包括 SQl Server 2008, Entity Framework, 和 Castle Windsor 以支持依赖注入。
分离关注点: 主要目标
关键是要分离出大部分或者所有的业务逻辑。逻辑不应该与页面绑定在一起。要是在另外一个页面重新使用逻辑怎么办呢?这样,我们将可以复制和粘贴。如果我们做到的话,项目将会变得可维护了。另外一个要点是从业务逻辑分离数据访问,由于我们计划使用 Entiy Framework,这就不是一个问题,因为 EF 已经这样做了。我们可以容易地将我们的 EF 文件从一个项目转移到另外一个项目,简单地添加一些必须的引用就可以,下面是设计图。
最终的解决方案在 Visual Studio 中如下所示:
解决方案中有 7 个项目,有必要吗?
看你怎么想...... 这个设计会带来许多优点,包括:
- 关注点的分离:清晰地分层,意味着应用可以分隔为独立的领域,没有重叠的功能。比如 UI 的设计人员可以专注工作,而不需要被业务逻辑影响 ( Application.Web )。代码的开发人员只需要处理主要的业务逻辑 ( Application.DTO 或者 Application.Manager ).
- 生产力:对现有的软件可以容易地增加功能,因为软件的结构已经到位,新的功能代码可以按部就班,任何复杂的问题可以轻松识别和分离,并实现软件工程要求的质量要素:鲁棒性,可适配,可维护,以及可重用。
- 可维护:容易维护的应用,清晰定义的结构便于理解,很容易发现 Bug 和异常问题,修改的风险也降至最低。
- 适应性:新的技术,例如不同的前端技术,或者增加业务逻辑的引擎也很容易做到,你的应用架构有着清晰的关注点分离。
- 重用性:对于任何应用的设计来说,可重用性都是一个重要的关注点,因为可以降低总体拥有成本 TCO,我们的设计考虑了重用 Web 应用和不同的层,在文章的后面,我们将会详细讨论每个层中的功能。
工具和技术
为了达到最终的目标,我们需要下面的工具:
- Visual Studio 2012
- ASP.NET MVC 4 with Razor View Engine
- Entity Framework 5.0
- Castle Windsor for DI
- SQL Server 2008/2012
- Knockout.js & JQuery
- Castle Windsor for DI
- Bootstrap CSS