領域驅動設計案例:Tiny Library:簡介

作者: dax.net  來源: 博客園  發布時間: 2010-10-18 21:19  閱讀: 2899 次  推薦: 1   原文鏈接   [收藏]  
摘要:基于ASP.NET MVC + WCF + Entity Framework做了一個案例,該案例以圖書館圖書管理、讀者借書、還書為業務背景,以領域驅動設計為思想指導,全程采用Microsoft技術進行實踐,希望能夠給Microsoft技術的狂熱者以及領域驅動設計的學者提供實踐參考。

  應廣大網友的要求,我最近抽空基于ASP.NET MVC + WCF + Entity Framework做了一個案例,該案例以圖書館圖書管理、讀者借書、還書為業務背景,以領域驅動設計為思想指導,全程采用Microsoft技術進行實踐,希望能夠給Microsoft技術的狂熱者以及領域驅動設計的學者提供實踐參考。

本案例選用的業務邏輯非常簡單,所以項目取名上我選用了“Tiny Library”,在后面一章我將詳細介紹這個案例的業務邏輯、模型設計與系統架構。

  下載案例

  本來打算將項目發布到codeplex上,便于大家交流,也便于代碼更新與維護,但由于某些原因,我無法在自己的網絡環境中連接codeplex的svn/tfs服務,于是,目前只能以壓縮包的形式發布案例源代碼,希望大家諒解,等以后有機會更新到codeplex上后再通知大家。

【請單擊此處下載案例源代碼】

 

  系統需求

  • Microsoft Visual Studio 2010
  • Microsoft Patterns & Practices 5.0(v5.0.414.0,Runtime v2.0.50727。請自行到Microsoft官方網站下載安裝)
  • Microsoft ASP.NET MVC 2
  • Microsoft Entity Framework(注意:是Visual Studio 2010自帶的那個版本,而不是最新發布的那個Feature Pack CTP版本)
  • Microsoft SQL Express 2008 SP1
  • Apworks Application Development Framework

  請在打開本案例解決方案之前自行安裝上述軟件和組件!

  說明:Apworks Application Development Framework是我自己開發的一套領域驅動(Domain Driven)的應用程序開發框架,里面提供了對Aggregate Root、Repositories、Specifications以及Transaction Context的支持,基本能夠滿足基于Microsoft.NET技術的中小型領域驅動項目的應用開發。目前這個框架項目正在進一步實現基于CQRS體系結構模式的框架。為了節約時間,本系列文章不會對Apworks Application Development Framework做太多介紹。本框架目前也還是under construction,所以讀者朋友也千萬不要將其用在自己的系統開發中,以免發生危險!有關Apworks Application Development Framework的源代碼以及更多信息,請訪問項目站點:http://apworks.codeplex.com。Tiny Library壓縮包里包含了一個可被Tiny Library使用的Apworks版本,因此讀者朋友無需自己去Apworks站點上下載并編譯源代碼。當然,如果您希望了解Apworks的實現方式,可以使用上面的站點查看Apworks的源代碼。

 

  安裝部署

  1. 建立數據庫
    使用Microsoft Visual Studio 2010提供的Server Explorer功能,在Data Connections上單擊鼠標右鍵,選擇Create New SQL Server Database選項,此時出現Create New SQL Server Database對話框,在對話框的Server name中輸入(local)\SQLEXPRESS,在New database name中輸入TinyLibraryDB,之后單擊OK按鈕
  2. 創建數據庫Schema
    使用Microsoft Visual Studio 2010打開TinyLibrary解決方案,在TinyLibrary.Domain項目節點下找到TinyLibrary.edmx.sql腳本文件,打開此腳本文件,在SQL Editor區域,點擊鼠標右鍵,選擇Connection | Connect菜單,此時彈出Connect to Database Engine對話框,Server選擇SQLEXPRESS,然后單擊OK
     
    再次在SQL Editor區域點擊鼠標右鍵,選擇Execute SQL選項,執行SQL腳本以創建數據庫Schema
  3. 建立演示數據(Demo Data)
    以上述同樣的方式,打開TinyLibrary.Domain項目下的TinyLibrary.DemoData.sql腳本并執行
  4. 3722端口
    Tiny Library的WCF Service采用3722端口作為其服務的固定端口,因此在使用本案例錢,確保該端口未被其它應用程序占用


運行案例

  1. 在Microsoft Visual Studio 2010的Solution Explorer上,右鍵單擊TinyLibrary Solution然后選擇Rebuild Solution以重新編譯解決方案
  2. 在TinyLibrary.Services項目下,選中TinyLibraryService.svc,然后單擊右鍵,選擇View in Browser,此時會自動打開ASP.NET Development Server,端口占用3722,同時打開WCF Service的頁面。此時將WCF Service的頁面關閉,僅留下ASP.NET Development Server
  3. 右鍵單擊TinyLibrary.WebApp項目,選擇Set as StartUp Project選項,然后在Microsoft Visual Studio中按下Ctrl+F5或者Debug | Start Without Debugging選項以啟動應用程序
  4. 應用程序啟動后,可以看到主界面如下

     

 

登錄賬號

測試需要,Tiny Library默認提供三個用戶賬戶:daxnet、acqy和james。用戶名、密碼如下:

  1. 登錄名:daxnet;名稱:DaxNet;密碼:daxnet@live.com
  2. 登錄名:acqy;名稱:Sunny Chen;密碼:acqy@163.com
  3. 登錄名:james;名稱:james;密碼:james@tinylibrary.com

 

額外說明

時間有限,本案例僅僅是一個基于Microsoft.NET技術的領域驅動設計實踐案例,因此,如下內容沒有包含在本案例中:

  1. 基于AOP和Policy Injection的技術實踐。這包括:異常處理、數據驗證與系統日志
  2. 基于用戶/角色驗證的圖書維護頁面
  3. ASP.NET MVC的高級應用
  4. WCF的異常捕獲與顯示
  5. 單元測試
  6. 其它的一些技術細節

有興趣的朋友可以在本案例源代碼的基礎上進行擴充,以實現一套完整的圖書館管理應用。

1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()