翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 1
原文地址: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的更多相关文章
- 使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑
翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑 Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案 ...
- 翻译:使用 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 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑
Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案如下所示: 下面我们讨论整个应用的结构,根据应用中不同组件的逻辑相关性,分离到不同的层中,层与层之间的通讯通过或者不通过限制.分层属于架构 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 4 - 验证
验证: 快要完成我们程序的界面部分了.剩下的事情就是在用户点击 "保存" 的时候管理验证问题了.验证是主要需求,今天就是最无知的应用也不会忽视它.通过正确的验证,用户可以知道应该输 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 5 - 数据库设计
数据库方面我们需要的主要功能如下: 联系人有姓名和电子邮件地址. 联系人可以拥有多个地址. 联系人可以拥有多个电话. 为了实现目标,我们需要在数据库中创建下列表.表与表的关系如下图所示: 数据库的脚本 ...
- 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 2
我们的目标: 需求 Screen 1: 联系人列表 - 查看所有联系人 1.1 这个 screen 将显示数据库中的所有联系人. 1.2 用户可以删除任何联系人.1.3 用户可以编辑任何联系人的详细信 ...
- ASP.NET MVC和EF集成AngularJS开发
参考资料: 如何在ASP.NET MVC和EF中使用AngularJS AngularJS+ASP.NET MVC+SignalR实现消息推送 [AngularJs + ASP.NET MVC]使用A ...
- [翻译] 使用ASP.NET MVC操作过滤器记录日志
[翻译] 使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_ ...
- ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器
ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器一:闲谈一下:1.现在任务跟踪管理系统已经开发快要结束了,抽一点时间来写一下,想一想自己就有成就感啊!! ...
随机推荐
- [转]Patch文件结构详解
N久不来 于是不知道扔在哪儿于是放这里先 如果你觉得碍事的话 帮我扔到合适的版块去.. 导读这是一篇说明文 它介绍了标准冒险岛更新文件(*.patch;*.exe)的格式文章的最后附了一段C#的参考代 ...
- CentOS下mysql数据库常用命令总结
mysql数据库使用总结 本文主要记录一些mysql日常使用的命令,供以后查询. 1.更改root密码 mysqladmin -uroot password 'yourpassword' 2.远程登陆 ...
- [BootStrap] 富编辑器,基于wysihtml5
在我的周围,已经有很多人在使用BootStrap,但对于任何一个带留言.评论.提问.文章编辑功的网站,编辑器永远是重中之重,显然,早期的编辑器完全没考虑过BootStrap的出现,或皮肤跟网站不匹配, ...
- 根据ip判断返回城市名称查询当地天气
<?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...
- const let,console.log('a',a)跟console.log('a'+a)的区别
const 创建一个只读的常量 let块级作用域 const let重复赋值都会报错 console.log('a',a) a console.log('a'+a) a2 逗号的值会有空格:用加号的值 ...
- Eclipse出现"Running Android Lint has encountered a problem"解决方案
安装eclipse for android 时候的错误记录,转载自:http://blog.csdn.net/chenyufeng1991/article/details/47442555 (1)打开 ...
- Android(安卓)-------CardView
1.activity_main.xml <android.support.v7.widget.CardView android:id="@+id/cardView" andr ...
- iOS 原生地图地理编码与反地理编码
当我们要在App实现功能:输入地名,编码为经纬度,实现导航功能. 那么,我需要用到原生地图中的地理编码功能,而在Core Location中主要包含了定位.地理编码(包括反编码)功能. 在文件中导入 ...
- Android之SQLite数据存储
一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...
- Android开发学习—— shape标签的使用
参考这片文章http://www.cnblogs.com/armyfai/p/5912414.html