|
應(yīng)廣大網(wǎng)友的要求,我最近抽空基于ASP.NET MVC + WCF + Entity Framework做了一個(gè)案例,該案例以圖書館圖書管理、讀者借書、還書為業(yè)務(wù)背景,以領(lǐng)域驅(qū)動設(shè)計(jì)為思想指導(dǎo),全程采用Microsoft技術(shù)進(jìn)行實(shí)踐,希望能夠給Microsoft技術(shù)的狂熱者以及領(lǐng)域驅(qū)動設(shè)計(jì)的學(xué)者提供實(shí)踐參考。
本案例選用的業(yè)務(wù)邏輯非常簡單,所以項(xiàng)目取名上我選用了“Tiny Library”,在后面一章我將詳細(xì)介紹這個(gè)案例的業(yè)務(wù)邏輯、模型設(shè)計(jì)與系統(tǒng)架構(gòu)。
下載案例
本來打算將項(xiàng)目發(fā)布到codeplex上,便于大家交流,也便于代碼更新與維護(hù),但由于某些原因,我無法在自己的網(wǎng)絡(luò)環(huán)境中連接codeplex的svn/tfs服務(wù),于是,目前只能以壓縮包的形式發(fā)布案例源代碼,希望大家諒解,等以后有機(jī)會更新到codeplex上后再通知大家。
系統(tǒng)需求
- Microsoft Visual Studio 2010
- Microsoft Patterns & Practices 5.0(v5.0.414.0,Runtime v2.0.50727。請自行到Microsoft官方網(wǎng)站下載安裝)
- Microsoft ASP.NET MVC 2
- Microsoft Entity Framework(注意:是Visual Studio 2010自帶的那個(gè)版本,而不是最新發(fā)布的那個(gè)Feature Pack CTP版本)
- Microsoft SQL Express 2008 SP1
- Apworks Application Development Framework
請?jiān)诖蜷_本案例解決方案之前自行安裝上述軟件和組件!
說明:Apworks Application Development Framework是我自己開發(fā)的一套領(lǐng)域驅(qū)動(Domain Driven)的應(yīng)用程序開發(fā)框架,里面提供了對Aggregate Root、Repositories、Specifications以及Transaction Context的支持,基本能夠滿足基于Microsoft.NET技術(shù)的中小型領(lǐng)域驅(qū)動項(xiàng)目的應(yīng)用開發(fā)。目前這個(gè)框架項(xiàng)目正在進(jìn)一步實(shí)現(xiàn)基于CQRS體系結(jié)構(gòu)模式的框架。為了節(jié)約時(shí)間,本系列文章不會對Apworks Application Development Framework做太多介紹。本框架目前也還是under construction,所以讀者朋友也千萬不要將其用在自己的系統(tǒng)開發(fā)中,以免發(fā)生危險(xiǎn)!有關(guān)Apworks Application Development Framework的源代碼以及更多信息,請?jiān)L問項(xiàng)目站點(diǎn):http://apworks.codeplex.com。Tiny Library壓縮包里包含了一個(gè)可被Tiny Library使用的Apworks版本,因此讀者朋友無需自己去Apworks站點(diǎn)上下載并編譯源代碼。當(dāng)然,如果您希望了解Apworks的實(shí)現(xiàn)方式,可以使用上面的站點(diǎn)查看Apworks的源代碼。
安裝部署
- 建立數(shù)據(jù)庫
使用Microsoft Visual Studio 2010提供的Server Explorer功能,在Data Connections上單擊鼠標(biāo)右鍵,選擇Create New SQL Server Database選項(xiàng),此時(shí)出現(xiàn)Create New SQL Server Database對話框,在對話框的Server name中輸入(local)/SQLEXPRESS,在New database name中輸入TinyLibraryDB,之后單擊OK按鈕
- 創(chuàng)建數(shù)據(jù)庫Schema
使用Microsoft Visual Studio 2010打開TinyLibrary解決方案,在TinyLibrary.Domain項(xiàng)目節(jié)點(diǎn)下找到TinyLibrary.edmx.sql腳本文件,打開此腳本文件,在SQL Editor區(qū)域,點(diǎn)擊鼠標(biāo)右鍵,選擇Connection | Connect菜單,此時(shí)彈出Connect to Database Engine對話框,Server選擇SQLEXPRESS,然后單擊OK
再次在SQL Editor區(qū)域點(diǎn)擊鼠標(biāo)右鍵,選擇Execute SQL選項(xiàng),執(zhí)行SQL腳本以創(chuàng)建數(shù)據(jù)庫Schema
- 建立演示數(shù)據(jù)(Demo Data)
以上述同樣的方式,打開TinyLibrary.Domain項(xiàng)目下的TinyLibrary.DemoData.sql腳本并執(zhí)行 - 3722端口
Tiny Library的WCF Service采用3722端口作為其服務(wù)的固定端口,因此在使用本案例錢,確保該端口未被其它應(yīng)用程序占用
運(yùn)行案例
- 在Microsoft Visual Studio 2010的Solution Explorer上,右鍵單擊TinyLibrary Solution然后選擇Rebuild Solution以重新編譯解決方案
- 在TinyLibrary.Services項(xiàng)目下,選中TinyLibraryService.svc,然后單擊右鍵,選擇View in Browser,此時(shí)會自動打開ASP.NET Development Server,端口占用3722,同時(shí)打開WCF Service的頁面。此時(shí)將WCF Service的頁面關(guān)閉,僅留下ASP.NET Development Server
- 右鍵單擊TinyLibrary.WebApp項(xiàng)目,選擇Set as StartUp Project選項(xiàng),然后在Microsoft Visual Studio中按下Ctrl+F5或者Debug | Start Without Debugging選項(xiàng)以啟動應(yīng)用程序
- 應(yīng)用程序啟動后,可以看到主界面如下
登錄賬號
測試需要,Tiny Library默認(rèn)提供三個(gè)用戶賬戶:daxNET、acqy和james。用戶名、密碼如下:
- 登錄名:daxNET;名稱:DaxNET;密碼:daxNET@live.com
- 登錄名:acqy;名稱:Sunny Chen;密碼:acqy@163.com
- 登錄名:james;名稱:james;密碼:james@tinylibrary.com
額外說明
時(shí)間有限,本案例僅僅是一個(gè)基于Microsoft.NET技術(shù)的領(lǐng)域驅(qū)動設(shè)計(jì)實(shí)踐案例,因此,如下內(nèi)容沒有包含在本案例中:
- 基于AOP和Policy Injection的技術(shù)實(shí)踐。這包括:異常處理、數(shù)據(jù)驗(yàn)證與系統(tǒng)日志
- 基于用戶/角色驗(yàn)證的圖書維護(hù)頁面
- ASP.NET MVC的高級應(yīng)用
- WCF的異常捕獲與顯示
- 單元測試
- 其它的一些技術(shù)細(xì)節(jié)
有興趣的朋友可以在本案例源代碼的基礎(chǔ)上進(jìn)行擴(kuò)充,以實(shí)現(xiàn)一套完整的圖書館管理應(yīng)用。
NET技術(shù):領(lǐng)域驅(qū)動設(shè)計(jì)案例:Tiny Library:簡介,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。