asp.net 設計模式

qinghuawenkang發表於2011-11-10

asp.net設計模式(Microsoft 首席程式經理,MVP作序推薦)

誰適合讀本書呢?

      本書涵蓋了開發企業級ASP.NET應用程式的知名模式和最佳實踐,如果您熟悉.NET框架,想了解如何改進編碼方式,如何運用設計模式、設計原則和最佳實踐來提高程式碼的可維護性和適應性,請別錯過本書哦!

那些以前已經體驗過設計模式的讀者可能希望跳過本書的第Ⅰ部分,這部分介紹了GoF提出的設計模式以及其他常見設計原則,包括S.O.L.I.D原則和Martin Fowler的企業設計模式。所有的程式碼示例均採用C#語言編寫,但這些概念可以非常輕鬆地用於VB.NET

 

 

內容簡介:

本書涵蓋了開發企業級ASP.NET應用程式的知名模式和最佳實踐。本書用到的模式可以用於從ASP.NET 1.0ASP.NET 4.0的任何版本。不必管模式本身所用的語言,可以將模式用於任何物件導向程式語言。

 

作者介紹:

Scott Millett是一位就職於倫敦Wiggle.co.uk公司的企業軟體架構師,Wiggle.co.uk是一家專門從事腳踏車和鐵人三項體育運動業務的電子商務公司。他從1.0版就開始從事.NET開發,並於2010年被授予稱號。他還是Wrox出版社出版的Professional Enterprise .NET一書的作者之一。在從事.NET寫作和開發工作之餘,他會參加格拉斯頓伯裡音樂節以及夏季英國所有的大型音樂節,放鬆一下,欣賞音樂。如果希望與Scott討論本書或任何與.NET開發有關的話題,或英國音樂節實況,那可以給他的郵箱發郵件,或訪問他的Tweet賬號@ScottMillett

 

結構安排

本書既可以作為一個分步推進的指南,也可以作為閒暇時隨意翻閱的常備參考書。本書分為3個部分。第Ⅰ部分介紹了模式和設計原則。第Ⅱ部分講解如何在ASP.NET應用程式的不同層中使用模式和原則。第Ⅲ部分展示了一個完整的研究案例,用來演示本書涵蓋的多個模式。既可以在閱讀研究案例之前通讀各章內容;也可以首先閱讀研究案例,然後在涉及具體的模式和原則時再回過頭來查閱第Ⅱ部分以獲取更詳細的內容,這種緊密結合實際的方法可能會讓學習過程變得更加輕鬆。

 

第Ⅰ部分  模式與設計原則

本書第Ⅰ部分首先介紹設計模式概念、企業模式及設計原則,包括S.O.L.I.D.設計原則。

1章:成功應用程式的模式

該章研究了專業開發者為何需要理解設計模式和原則,以及(更重要的是)如何在實際的企業級應用程式中加以利用。該章講解了GoF設計模式的起源、它們在當今世界中的關聯性以及與具體程式語言脫鉤。然後瀏覽了一些常見設計原則和S.O.L.I.D.設計原則,最後描述了Fowler的企業模式。

2章:剖析模式的模式

該章介紹了使用模式模板所需的實用知識以及如何利用設計模板來閱讀GoF設計模式。然後將教您如何理解設計模式分類,並講解如何選擇和應用設計模式。最後給出了一個示例來演示如何重構現有的程式碼,以便使用設計模式和原則來提升可維護性。

第Ⅱ部分  剖析ASP.NET應用程式:學習並應用模式

本書的第Ⅱ部分演示如何將前兩章介紹的模式和原則運用到企業級ASP.NET應用程式的各個層次中。

3章:應用程式分層與關注點分離

該章描述了分層設計與傳統的ASP.NET Web表單程式碼隱藏模型相比所具有的優勢。該章繼續講解邏輯分層和應用程式關注點分離的概念。然後定義了企業級ASP.NET應用程式中各個不同層次的職責,這部分的其他幾章將討論這些層次。該章最後是一個練習,將一個Smart UI反模式按照分層體系結構方法進行重構。

4章:業務邏輯層:組織

該章涵蓋了為組織業務邏輯層而設計的模式。該章首先描述了Transaction Script模式;然後是Active Record模式,並利用一個使用Castle Windsor專案的練習來演示該模式;最後一個模式是Domain Model模式,用NHibernate練習進行演示。該章最後評論了領域驅動設計(domain-driven designDDD)方法學,以及如何運用該方法學將精力集中在業務邏輯而非基礎設施。

5章:業務邏輯層:模式

5章與第4章類似,仍然介紹業務層,但該章關注的是構建物件時可以使用的模式和原則,以及如何確保構建可伸縮、可維護的應用程式。該章涉及的模式包括FactoryDecoratorTemplateStateStrategyComposite。所涉及的企業模式包括SpecificationLayer Supertype。最後介紹了一些能夠改進程式碼可維護性和靈活性的設計原則,包括Dependency InjectionInterface SegregationLiskov Substitution原則。

6章:服務層

該章介紹了服務層在企業ASP.NET應用程式中扮演的角色。該章首先簡要地介紹了Service Oriented Architecture及其必要性。然後討論了Façade設計模式。接著討論了Document MessageRequest-ResponseReservationIdempotent模式等Messaging模式。最後給出了一個WCF實體的練習,來演示本章涵蓋的所有模式。

7章:資料訪問層

如何利用資料儲存來使業務物件狀態持久化是應用程式體系結構的關鍵部分。該章將學習該層中使用的設計模式,以及如何將它們整合在一起。這裡演示了兩種幫助組織持久層的資料訪問策略:RepositoryData Access Object。接著,介紹了一些有助於優雅地滿足資料訪問需求的企業模式和原則,包括Lazy LoadingIdentity MapUnit of WorkQuery Object。之後介紹了Object Relational Mapper以及它們解決的問題。最後,給出了一個企業Domain Driven練習,它的POCO業務實體同時使用了NHibernateMS Entity Framework

8章:表示層

該章介紹了一些為了組織表示層邏輯並讓其與應用程式中的其他層保持分離狀態的模式。該章首先解釋如何使用Structure MapInversion of Control容器將鬆散耦合的程式碼連線起來。然後描述了幾種表示層模式,包括利用Model-View-Presenter模式和ASP.NET Web表單實現檢視,利用CommandChain of Responsibility模式實現Front Controller表示模式,以及利用ASP.NET MVC框架和WindsorCastle Monorail框架來實現Model-View-Controller模式。最後討論的表示層模式是ASP.NET Web表單中使用的PageController。該章最後講解一種可與組織模式一起使用的ViewModel模式,以及如何利用AutoMapper自動地把領域實體對映到ViewModel

9章:使用者體驗層

在第Ⅱ部分的最後一章介紹使用者體驗層。該章首先講解什麼是Ajax及其所依賴的技術。然後講解了JavaScript庫,說明如何使用jQuery等強大程式碼庫來簡化JavaScript處理。該章主要描述了一些常見的Ajax模式:Ajax Periodic RefreshTimeout模式,用於維護歷史的Unique URL模式,用於實現客戶端資料繫結的Jtemplate模式,以及Ajax Predictive Fetch模式。

第Ⅲ部分  案例研究:線上電子商務商店

本書最後一部分使用一個完整的示例應用程式來演示在第Ⅱ部分中介紹的眾多模式。

10章:需求和基礎設施

這是關於案例研究的第1章,介紹了將在其餘4章中構建的Agatha電子商務商店。該章描述了該網站的需求,以及將要用到的基礎設施和總體架構。表示層採用ASP.MVC,中間層的組織採用領域模型,利用NHibernate使業務實體持久化並從資料庫中檢索業務實體。

11章:建立商品目錄

該章構建了商店的商品目錄瀏覽功能。大量使用jQuery來提供豐富的Web 2.0觀感。利用JSON來實現控制元件和ASPX檢視之間的通訊以提供Ajax功能。使用ViewModel為控制元件提供扁平的領域檢視。採用AutoMapper自動地把領域實體轉換成ViewModel

12章:實現購物車

該章實現了顧客購物車。使用顧客Cookie來存放購物車內容摘要,建立一項服務將訪問Cookie儲存的邏輯抽象出來。為了保持Web 2.0觀感,購物車上執行的所有動作均透過Ajax呼叫進行。

13章:顧客會員

該章解決顧客會員資格和身份驗證問題。使用ASP.NET使用者憑據提供者進行就地身份驗證;但也使用了第二種身份驗證方法,讓顧客使用其現有的基於Web的賬號(比如FacebookGoogle賬號)來進行身份驗證。本章還會開發顧客賬號螢幕。

14章:

在案例研究練習的最後一章中,將研究該網站的支付和結賬功能。本章選中的支付機制是PayPal,但把邏輯程式碼抽象出來,這樣就可以輕易地將其替換成任何其他支付手段。最後向顧客的賬號部分中新增訂單歷史記錄功能。

   

 

 


 

第Ⅰ部分  模式與設計原則

1  成功應用程式的模式.. 3

1.1  設計模式釋義... 3

1.1.1  起源... 4

1.1.2  必要性... 4

1.1.3  有效性... 4

1.1.4  侷限性... 5

1.2  設計原則... 5

1.2.1  常見設計原則... 5

1.2.2  S.O.L.I.D.設計原則... 6

1.3  Fowler的企業設計模式... 7

1.3.1  分層... 7

1.3.2  領域邏輯模式... 7

1.3.3  物件關係對映... 8

1.3.4  Web表示模式... 9

1.3.5  基本模式、行為模式和結構模式... 9

1.4  其他有名的設計實踐... 10

1.4.1  測試驅動設計... 10

1.4.2  領域驅動設計... 10

1.4.3  行為驅動設計... 10

1.5  小結... 11

2  剖析模式的模式.. 13

2.1  如何閱讀設計模式... 13

2.1.1  GoF模式模板... 13

2.1.2  簡化模板... 14

2.2  設計模式分組... 14

2.2.1  建立型... 14

2.2.2  結構型... 15

2.2.3  行為型... 15

2.3  如何選擇和運用設計模式... 16

2.4  快速模式示例... 17

2.4.1  根據設計原則進行重構... 19

2.4.2  根據Adapter模式進行重構... 21

2.4.3  利用企業模式... 24

2.5  小結... 25

 

第Ⅱ部分  剖析ASP.NET應用程式:
 
學習並應用模式

3  應用程式分層與關注點分離.. 29

3.1  應用程式體系結構與設計... 29

3.1.1  反模式:智慧UI 29

3.1.2  分離關注點... 35

3.2  小結... 51

4  業務邏輯層:組織.. 53

4.1  理解業務組織模式... 53

4.1.1  Transaction Script 53

4.1.2  Active Record. 55

4.1.3  Domain Model 65

4.1.4  Anemic Domain Model 86

4.1.5  領域驅動設計... 88

4.2  小結... 91

5  業務邏輯層:模式.. 93

5.1  應用設計模式... 93

5.1.1  Factory Method模式... 93

5.1.2  Decorator模式... 97

5.1.3  Template Method模式... 103

5.1.4  State模式... 107

5.1.5  Strategy模式... 113

5.2  應用企業模式... 117

5.2.1  Specification模式... 117

5.2.2  Composite模式... 119

5.2.3  Layer Supertype模式... 124

5.3  應用設計原則... 127

5.3.1  依賴倒置原則和依賴注入模式... 127

5.3.2  介面分離原則... 133

5.3.3  里氏替換原則... 137

5.4  小結... 147

6  服務層.. 149

6.1  服務層介紹... 149

6.1.1  SOA.. 149

6.1.2  SOA4項信條... 152

6.1.3  Facade設計模式... 152

6.2  應用Messaging模式... 153

6.2.1  Document Message
Request-Response
模式... 154

6.2.2  Reservation模式... 155

6.2.3  Idempotent模式... 156

6.3  SOA示例... 156

6.3.1  領域模型和資源庫... 157

6.3.2  服務層... 166

6.3.3  客戶端代理... 180

6.3.4  客戶端... 183

6.4  小結... 187

7  資料訪問層.. 189

7.1  DAL介紹... 189

7.2  資料訪問策略... 189

7.2.1  Repository模式... 190

7.2.2  Data Access Objects模式... 191

7.3  資料訪問模式... 191

7.3.1  Unit of Work模式... 191

7.3.2  資料併發控制... 198

7.3.3  Lazy LoadingProxy模式... 201

7.3.4  Identity Map模式... 206

7.3.5  Query Object模式... 208

7.4  使用物件關係對映器... 218

7.4.1  NHibernate. 219

7.4.2  MS Entity Framework. 219

7.4.3  ORM程式碼示例... 219

7.5  小結... 280

8  表示層.. 283

8.1  反轉控制... 283

8.1.1  Factory Method設計模式... 283

8.1.2  Service Locator 285

8.1.3  IoC容器... 286

8.1.4  StructureMap. 286

8.2  Model-View-Presenter 290

8.3  Front Controller 313

8.3.1  Command模式... 314

8.3.2  Chain of Responsibility模式... 336

8.4  Model-View-Controller 344

8.4.1  ViewModel模式... 344

8.4.2  ASP.NET MVC框架... 345

8.4.3  利用AutoMapper對映ViewModel 357

8.4.4  Castle MonoRail 362

8.5  Page Controller模式... 369

8.6  小結... 370

9  使用者體驗層.. 371

9.1  什麼是AJAX.. 371

9.2  使用JavaScript... 372

9.3  理解AJAX模式... 372

9.3.1  Periodic RefreshTimeout 372

9.3.2  Unique URL. 390

9.3.3  利用JavaScript. Template實現資料
繫結... 390

9.3.4  Predictive Fetch. 408

9.4  小結... 414

 

第Ⅲ部分  案例研究:
             
線上電子商務商店

10  需求和基礎設施.. 417

10.1  Agatha服裝店需求... 417

10.1.1  Product CatalogBasket截圖... 418

10.1.2  顧客賬號螢幕... 420

10.1.3  結賬螢幕... 422

10.1.4  快取和日誌... 423

10.2  架構... 423

10.3  小結... 443

11  建立商品目錄.. 445

11.1  建立產品目錄... 445

11.1.1  Product Catalog模型... 445

11.1.2  Product Catalog資料表... 450

11.1.3  Product Catalog資源庫... 451

11.1.4  Product服務... 465

11.1.5  控制器... 480

11.1.6  Product Catalog檢視... 490

11.1.7  設定IoC. 513

11.2  小結... 516

12  實現購物車.. 519

12.1  實現購物車... 519

12.1.1  Basket領域模型... 519

12.1.2  建立購物車資料表... 529

12.1.3  NHibernate對映... 530

12.1.4  購物車服務... 533

12.1.5  購物車控制器和購物車檢視... 543

12.2  小結... 565

13  顧客會員.. 567

13.1  顧客會員... 567

13.1.1  Customer模型... 568

13.1.2  Customer資料表... 573

13.1.3  Customer NHibernate對映... 573

13.1.4  Customer服務... 576

13.1.5  身份驗證服務... 585

13.1.6  Customer控制器... 593

13.1.7  Account控制器... 597

13.1.8  顧客關係檢視... 607

13.1.9  身份驗證檢視... 611

13.2  小結... 617

14  訂購和支付.. 619

14.1  結賬... 619

14.1.1  Order模型... 620

14.1.2  Order資料表... 635

14.1.3  Order NHibernate對映... 636

14.1.4  Order服務... 639

14.1.5  利用PalPay進行支付... 648

14.1.6  OrderPaymentCheckout
控制器... 657

14.1.7  OrderCheckout檢視... 666

14.2  小結... 676

 


 

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26421423/viewspace-710766/,如需轉載,請註明出處,否則將追究法律責任。

相關文章