原文地址: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

文章转载于:http://www.cnblogs.com/haogj/

翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 1的更多相关文章

  1. 使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑

    翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑 Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案 ...

  2. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 3

    原文地址:http://ddmvc4.codeplex.com/ 原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockout ...

  3. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑

    Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案如下所示: 下面我们讨论整个应用的结构,根据应用中不同组件的逻辑相关性,分离到不同的层中,层与层之间的通讯通过或者不通过限制.分层属于架构 ...

  4. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 4 - 验证

    验证: 快要完成我们程序的界面部分了.剩下的事情就是在用户点击 "保存" 的时候管理验证问题了.验证是主要需求,今天就是最无知的应用也不会忽视它.通过正确的验证,用户可以知道应该输 ...

  5. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 5 - 数据库设计

    数据库方面我们需要的主要功能如下: 联系人有姓名和电子邮件地址. 联系人可以拥有多个地址. 联系人可以拥有多个电话. 为了实现目标,我们需要在数据库中创建下列表.表与表的关系如下图所示: 数据库的脚本 ...

  6. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 2

    我们的目标: 需求 Screen 1: 联系人列表 - 查看所有联系人 1.1 这个 screen 将显示数据库中的所有联系人. 1.2 用户可以删除任何联系人.1.3 用户可以编辑任何联系人的详细信 ...

  7. ASP.NET MVC和EF集成AngularJS开发

    参考资料: 如何在ASP.NET MVC和EF中使用AngularJS AngularJS+ASP.NET MVC+SignalR实现消息推送 [AngularJs + ASP.NET MVC]使用A ...

  8. [翻译] 使用ASP.NET MVC操作过滤器记录日志

    [翻译] 使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_ ...

  9. ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器

    ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器一:闲谈一下:1.现在任务跟踪管理系统已经开发快要结束了,抽一点时间来写一下,想一想自己就有成就感啊!!  ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)

    系列目录 前言: 回顾上一节,我们利用webapi简单的登录并进行了同域访问与跨域访问来获得Token,您可以跳转到上一节下载代码来一起动手. 继续上一篇的文章,我们接下来演示利用拿到的Token来访 ...

  2. 动手做第一个Chrome插件

    Chrome插件是令人惊讶的简单,一旦你弄懂它的工作和实现原理.它是由一部分HTML,一部分Js,然后混合了一个叫做manifest.json的Json文件组合而成的整体.这意味着你可以使用你最擅长的 ...

  3. php注册审核

    通过注册审核,判断刚创建的账户是否可以使用. 后台管理员审核通过后,账号可以使用. 通过session 设置只能通过登录入口进入网页. 原理:通过数据库设置账号的一个字段状态,例: isok:1, i ...

  4. CentOS下mysql数据库常用命令总结

    mysql数据库使用总结 本文主要记录一些mysql日常使用的命令,供以后查询. 1.更改root密码 mysqladmin -uroot password 'yourpassword' 2.远程登陆 ...

  5. ASP.NET Core 中文文档 第四章 MVC(4.1)Controllers, Actions 和 Action Results

    原文:Controllers, Actions, and Action Results 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:许登洋(Seay) Action 和 acti ...

  6. JavaScript事件代理和委托(Delegation)

    JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...

  7. 超详细mysql left join,right join,inner join用法分析

    下面是例子分析表A记录如下: aID        aNum 1           a20050111 2           a20050112 3           a20050113 4   ...

  8. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

  9. Linux模块编程框架

    Linux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable ...

  10. pycharm2016.3.1激活及汉化

    pycharm快捷键 PyCharm设置python新建文件指定编码为utf-8 Python | 设置PyCharm支持中文 0, 注册码 43B4A73YYJ-eyJsaWNlbnNlSWQiOi ...