翻译:使用 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.现在任务跟踪管理系统已经开发快要结束了,抽一点时间来写一下,想一想自己就有成就感啊!! ...
随机推荐
- 基于Oracle安装Zabbix
软件版本 Oracle Enterprise Linux 7.1 64bit Oracle Enterprise Edition 12.1.0.2 64bit Zabbix 3.2.1 准备工作 上传 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(74)-微信公众平台开发-自定义菜单
系列目录 引言 1.如果不借用Senparc.Weixin SDK自定义菜单,编码起来,工作量是非常之大 2.但是借助SDK似乎一切都是简单得不要不要的 3.自定义菜单无需要建立数据库表 4.自定义菜 ...
- Angular企业级开发(4)-ngResource和REST介绍
一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来 ...
- 8、Struts2 运行流程分析
1.流程分析: 请求发送给 StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 ...
- UVA, 10336 Rank the Languages
难点在于:递归函数和输出: #include <iostream> #include <vector> #include <algorithm> #include ...
- css_02之盒模型、渐变
1.框模型:盒模型,①对象实际宽度=左右外边距+左右边框+左右内边距 + width:②对象实际高度=上下外边距+上下边框+上下内边距 + height: 2.外边距:margin:取值:①top(上 ...
- Android使用静默安装时碰见的问题
升级时碰见的异常 private void installPackage(String appName,final File apk) { if (!apk.exists()) { setHasNew ...
- C#分布式消息队列 EQueue 2.0 发布啦
前言 最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式.到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果. EQueue开源地 ...
- Spring6:基于注解的Spring MVC(上篇)
什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...
- 小丁是怎样入门git的
0x01前言 既然没有华丽的出场,那就平凡的分享,首先我要说明一点本篇文章针对Git初学者,对我自己学Git的资源的整合,其实本篇索引应该在我写Git系列文章的时候就紧跟着放上索引的,由于时间问题没有 ...