本书包括基础篇和项目实战篇两部分内容。基础篇讲述了目前市场上广泛采用的、基于.NET软件开发平台的ASP.NET MVC、JQuery、Castle.NET等软件开发技术,在讲述过程中列举大量的案例和真实的开发场景帮助读者掌握和应用上述技术。
项目实战篇以物流管理的基本业务功能为主线,使用Visual Studio 2013、SQL Server 2008等软件开发工具,综合应用Aspect of Programming(面向切面编程,简称AOP)、Inverse of Control(控制反转,简称IOC)等设计思想搭建具有低耦合度、易扩展、易维护的软件开发框架,并在该框架的基础上描述了物流管理系统子模板(包括角色管理、用户管理、接单、调度、返回车辆的报销、产值分析等功能)的分析、设计及开发过程。
本书适合软件工程师及高等院校计算机相关专业的学生阅读,也是网站设计师的参考用书。
(1)本书以实际商业项目-物流管理系统为主线,以完成接单、派单、送货、财务报帐、报表统计等功能为驱动,培养读者的业务流程理解; (2)本书以工程化软件开发为主要指导思想,在每一个功能实现过程中详细讲解需求分析、设计及实现等软件开发过程,培养读者的工程化软件开发意识; (3)本书在软件实现过程中详细讲解软件设计思路,强调提升读者的技能综合应用能力;
在最近的10年里,信息技术产业的发展速度一直保持着较好的发展态势,对我国经济的快速发展有非常重要的影响。同时,信息技术产业在我国十三五期间被列为重点发展产业,在这样的市场和政策推动下,.NET(软件开发领域最重要的软件开发平台之一)软件工程师的需求量必定大幅增加。 要培养一名合格的软件工程师,不但要掌握大量的计算机基础理论和软件开发专业知识,还必须具备良好的实践动手能力。计算机基础和专业理论知识一般在高等院校的教学过程中获得,实践动手能力则必须在实习、实训或实际工作岗位中才能得到较好地锻炼。目前,我国的高等教育在计算机基础和专业理论知识的教学方面做得非常出色,为软件工程师的人才培养打下了很好的理论基础,但在学生的实践动手能力培养方面,由于受到硬件、师资等各方面的约束,导致各高校无法很好地开展实习、实训环节,使得很大一部分学生的实践动手能力没有得到较好的锻炼,从而导致毕业学生的职位胜任能力低下。另一方面,对于那些即将毕业而又没能接受良好实践动手能力训练的学生来说,如果没有得到合适的、能有效提高实践动手能力的机会,学生无疑只能选择放弃。 软件工程师是一个对逻辑思维要求很强、动手能力要求很高的岗位,要达到软件工程师的任职基本要求,必须要有一本能切实提升实践动手能力的书籍。 本书分为基础篇和项目实战篇两部分。基础篇包括搭建开发环境、ASP.NET MVC、JQuery及ORM等内容,讲解这些知识时列举了大量的案例帮助读者理解基础理论,案例步骤采用Step by Step的方式进行讲解,降低了读者完成案例的难度。在基础篇的基础上,本书的第2部分以实际的商业项目(物流管理系统)开发过程为主线,开发工具使用Visaul Studio 2013,类库采用.NET FrameWork 4.5,并综合应用Castle.NET ORM、Aspect of Programming、Inverse of Control、JQuery、AJAX、MVC等市场上流行的软件开发思想和技术,突出技术与市场需求接轨。 本书不但讲解软件开发技术知识,而且引用了采用面向对象分析与设计和基于框架的软件开发思想,模拟软件公司真实的软件开发平台、环境和开发过程,有利于培养并提高.NET软件工程师的实践动手能力和工程化的软件项目实际操作能力,能较好地解决软件工程师实践动手能力低下的问题。 编写本书的两位作者均具备近10年的软件企业工作经历和6年高校软件工程本科专业人才培养规划、建设和教学实施经验,从技术上能有效地保证本书内容的先进性和实用性,并能从全书的结构组织上保证教学有一定的规律性。本书的第1章、第3~7章和第10章由李发陵编写;第2章、第8~9章、第11~15章由冷亚洪编写;全书由重庆工程学院软件工程专业2014级优秀学生王曾宇同学校稿。 本书的使用对象如下。 (1) 可以作为培训机构、应用型本科或软件类高职人才培养的实训教材。应用型人才培养过程中编程能力模块的学习顺序如下: 面向过程(C语言程序设计基础)软件开发思想面向对象软件开发思想(C#面向对象程序设计)Web应用程序设计框架程序设计。本书基于软件开发框架编制,可作为框架程序设计或实训教学环节的参考书籍。 (2) 可以作为.NET软件工程师的岗前学习教材。本书讲解了市场上广泛应用的软件开发技术,体现了软件企业用人的需求。同时,本书项目实战篇中的功能实现是基于软件企业开发过程而组织的,可以实现软件工程师岗前到上岗阶段的无缝对接。 (3) 可以作为.NET软件工程师能力提升的书籍。目前有大量软件企业为了追求利益最大化,忽视员工技术的可持续性发展与培养,采用的技术仍停留在多年前的水平,员工技能原地踏步,得不到很好的提升。本书使用Castle.NET、AOP、IOC等市场流行的软件开发技术和规范的软件开发过程,辅助读者建立面向对象和框架软件的开发思想,能较好地起到开拓软件、开发思维,建立规范的工程化软件开发意识,提高技术和技能应用能力的作用。 本书提供案例和项目的全部源代码,可访问清华大学出版社的网站(http://www.tup.tsinghua.edu.cn)进行下载或通过作者的邮箱获取(478779961@qq.com)。 在此,感谢为本书出版提供帮助的所有人,特别是感谢作者的家人在编稿过程中提供的精神支持和时间便利。 尽管作者竭尽所能保证正文和代码的质量,但由于时间有限,不当之处在所难免,如果读者在阅读过程中发现问题,请及时发邮件给我们,我们将及时予以回复。
作者2017年1月
第一部分基础篇
第1章搭建开发环境31.1安装Microsoft SQL Server 2008 R23
1.1.1简介3
1.1.2获取安装包3
1.1.3安装步骤3
1.1.4首次运行13
1.2安装Microsoft Visual
Studio 201315
1.2.1简介15
1.2.2获取安装包15
1.2.3安装步骤16
1.2.4首次运行16
1.3Nuget工具19
1.3.1简介19
1.3.2使用方法19
1.4安装Castle.NET19
1.4.1简介19
1.4.2安装步骤20
本章小结21
第2章ASP.NET MVC22
2.1MVC模式22
2.2认识ASP.NET MVC23
2.2.1ASP.NET MVC概述23
2.2.2MVC的优点24
2.2.3MVC 5的新特性24
2.2.4MVC程序的运行原理27
2.3Hello MVC28
2.4MVC Razor视图引擎34
2.4.1Hello Razor34
2.4.2Razor语法34
2.5MVC项目的结构38ASP.NET框架应用程序实战软件开发工程师岗前必备目录2.6路由39
2.6.1理解路由39
2.6.2路由表40
2.6.3添加路由41
2.6.4路由格式43
2.6.5默认路由43
2.6.6在URL模式中处理可变数量的段44
2.6.7添加路由约束45
2.7模型47
2.7.1模型的创建47
2.7.2模型的绑定49
2.7.3模型的验证54
2.8视图58
2.8.1认识视图58
2.8.2视图的类型58
2.8.3视图的创建61
2.8.4强类型视图62
2.8.5资源的引用63
2.9控制器66
2.9.1认识控制器66
2.9.2控制器的动作67
2.9.3控制器的结果67
2.9.4过滤器69
2.9.5MVC中的页面传值76
2.10HTML及URL帮助器80
2.10.1HTML帮助器80
2.10.2URL帮助器95
2.11实现登录97
本章小结102
第3章JQuery103
3.1JQuery简介103
3.2JQuery的基本功能103
3.2.1引用JQuery类库103
3.2.2选择器104
3.2.3将DOM对象转换成JQuery对象105
3.2.4操作DOM元素的集合106
3.3第三方插件及使用方法111
3.3.1校验控件formValidator111
3.3.2日期控件My97DatePicker119
3.4JQuery综合实例120
3.4.1需求描述120
3.4.2分析与实现120
3.5JQuery AJAX125
3.5.1$.get方法126
3.5.2$.post方法127
3.5.3$.AJAX方法129
3.6JQuery AJAX实例133
3.6.1需求描述133
3.6.2分析与实现133
本章小结138
第4章ORM139
4.1简介139
4.2ORM映射机制139
4.2.1实体映射139
4.2.2关系映射140
4.3映射原理141
4.4映射工具142
4.4.1NHibernate142
4.4.2Castle143
4.4.3Ibatis.NET144
4.4.4Entity Framework145
4.5Castle146
4.5.1准备环境146
4.5.2对象关系映射150
4.5.3延迟加载164
4.5.4实体对象的状态165
4.5.5查询表达式166
4.6综合练习168
4.6.1需求描述168
4.6.2分析与实现168
本章小节172
第二部分项目实战篇
第5章需求分析1755.1业务建模175
5.2需求分析176
5.2.1系统管理员176
5.2.2业务员177
5.2.3调度员178
5.2.4财务人员179
5.2.5决策分析人员179
本章小结180
第6章架构设计181
6.1面向对象设计的原则181
6.1.1单一职责原则181
6.1.2开放封闭原则184
6.1.3里氏替换原则188
6.1.4依赖倒置原则194
6.1.5接口隔离原则198
6.2实体对象模型198
6.2.1贫血模型198
6.2.2充血模型199
6.3架构设计原则200
6.3.1分离界面和实现200
6.3.2针对接口编程并降低耦合度200
6.4搭建系统框架203
6.4.1建立实体层204
6.4.2建立数据访问层205
6.4.3建立业务逻辑层211
6.4.4建立系统核心调试类215
6.4.5搭建UI层217
6.4.6添加项目的引用224
6.4.7配置Castle224
6.4.8建立生成数据库功能的页面227
6.4.9搭建单元测试228
本章小结228
第7章登录(强类型对象生成视图)229
7.1需求描述229
7.2功能设计229
7.3功能实现230
7.3.1模型映射的实现230
7.3.2数据访问层的实现232
7.3.3服务层的实现232
7.3.4业务逻辑层的实现232
7.3.5IOC映射配置233
7.3.6表示层功能的实现233
本章小结239
第8章系统的主页面240
8.1需求描述240
8.2功能设计240
8.3功能实现241
8.3.1创建公用样式241
8.3.2创建布局视图242
8.3.3计算内容区域的宽度和高度244
8.3.4加载功能菜单245
本章小结254
第9章角色权限管理255
9.1需求任务257
9.2功能设计257
9.3功能实现258
9.3.1模型映射的实现258
9.3.2数据访问层的实现260
9.3.3服务层的实现260
9.3.4事务逻辑层的实现261
9.3.5IOC映射的配置261
9.3.6表示层功能的实现261
本章小结286
第10章用户管理287
10.1需求描述287
10.2功能设计287
10.3功能实现288
10.3.1业务逻辑的实现288
10.3.2表示层功能的实现290
本章小结304
第11章接单管理305
11.1需求任务305
11.2功能设计306
11.3功能实现306
11.3.1模型映射的实现306
11.3.2数据访问层的实现315
11.3.3服务层的实现315
11.3.4事务逻辑层的实现316
11.3.5IOC映射的实现317
11.3.6表示层功能的实现318
本章小结330
第12章调度管理331
12.1需求任务331
12.2功能设计331
12.3功能实现332
12.3.1模型映射的实现332
12.3.2数据访问层的实现337
12.3.3服务层的实现337
12.3.4事务逻辑层的实现338
12.3.5IOC映射的实现339
12.3.6表示层功能的实现339
本章小结347
第13章返回车辆的报销348
13.1需求任务348
13.2功能设计348
13.3功能实现349
13.3.1模型映射的实现349
13.3.2数据访问层的实现353
13.3.3服务层的实现354
13.3.4事务逻辑层的实现354
13.3.5IOC映射的实现355
13.3.6表示层功能的实现356
本章小结364
第14章产值分析365
14.1需求任务365
14.2功能设计365
14.3功能实现366
14.3.1模型映射的实现366
14.3.2数据访问层的实现366
14.3.3服务层的实现368
14.3.4事务逻辑层的实现368
14.3.5表示层功能的实现369
本章小结377
第15章软件测试378
15.1软件测试的概念378
15.1.1单元测试任务379
15.1.2软件测试的类型381
15.1.3软件测试过程中的模型384
15.1.4测试步骤387
15.2测试驱动开发387
15.3常用的单元测试工具389
15.3.1NUnit389
15.3.2TestDriven.NET390
15.3.3Visual Studio Test Edition391
15.4VSTS单元测试391
15.4.1添加单元测试项目391
15.4.2配置运行环境391
15.4.3创建单元测试类394
15.4.4测试的断言方法397
15.4.5测试操作399
15.4.6代码覆盖率的结果401
15.5本章小结402
参考文献403