原文地址: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. mybatis_常用标签

    1.<where></where>标签的作用 可以动态的添加where关键字 可以自动去掉第一个拼接条件的and关键字 <where> <if test=&q ...

  2. 使用C/C++写Python模块

    最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...

  3. VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答

    用VS15 preview 5打开文件夹(详情查看博客http://www.cnblogs.com/zsy/p/5962242.html中配置),文件夹下多一个slnx.VC.db文件,如下图: 本文 ...

  4. bzoj1584--DP

    题目大意:有N头奶牛,每头那牛都有一个标号Pi,1 <= Pi <= M <= N <= 40000.现在Farmer John要把这些奶牛分成若干段,定义每段的不河蟹度为:若 ...

  5. maven-sprigmvc-mybatis配置

    pom.xml配置 <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.ap ...

  6. 【SAP业务模式】之ICS(七):IDOC配置

    这是ICS业务模式系列的最后一篇了,主要讲解IDOC的配置. 一.指定EDI传输的供应商逻辑地址 事务代码:WEL1 注意:上面逻辑地址是生产公司+内部客户.有以下两种情形: 1.如果内部客户都是纯数 ...

  7. (资源整理)带你入门Spark

    一.Spark简介: 以下是百度百科对Spark的介绍: Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方 ...

  8. mysql 大表拆分成csv导出

    最近公司有一个几千万行的大表需要按照城市的id字段拆分成不同的csv文件. 写了一个自动化的shell脚本 在/home/hdh 下面 linux-xud0:/home/hdh # lltotal 1 ...

  9. WebAPI 2参数绑定方法

    简单类型参数 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public ...

  10. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记

    前言 网购已经不再是现在的时髦,而变成了我们每天的日常生活.上网已经和买买买紧密地联系在了一起,成为了我们的人生信条.而逛街一词,越来越多地变成了一种情怀.有时候我们去逛街,要么是为了打发时间,要么是 ...