本書包括基礎篇和項目實戰篇兩部分內容。基礎篇講述了目前市場上廣泛采用的、基于.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