就以一個(gè)簡(jiǎn)單的DirectCenter項(xiàng)目開(kāi)始介紹這個(gè)框架吧,DirectCenter主要分為用戶管理,部門(mén)管理,公司管理三個(gè)模塊。首先先搭建起解決方案DirectCenter:
DirectCenter:
DirectCenter.Model (類庫(kù)項(xiàng)目)實(shí)體類庫(kù),其中包括hibernate映射文件(可以把映射文件放到DAL層,這樣使Model也比較單純,而DAL則只是Nhibernate的完整實(shí)現(xiàn))
DirectCenter.IDAL (類庫(kù)項(xiàng)目)數(shù)據(jù)訪問(wèn)層接口
DirectCenter.DAL (類庫(kù)項(xiàng)目)數(shù)據(jù)庫(kù)訪問(wèn)層實(shí)現(xiàn)(采用NHibernate)
DirectCenter.IBLL (類庫(kù)項(xiàng)目)業(yè)務(wù)層接口
DirectCenter.BLL (類庫(kù)項(xiàng)目)業(yè)務(wù)層實(shí)現(xiàn)(
使用IDAL,通過(guò)spring.net的IOC注入實(shí)際的數(shù)據(jù)訪問(wèn)層
)
DirectCenter.App (類庫(kù)項(xiàng)目)系統(tǒng)的配置,其中包括Nhibernate,Spring.net的一些配置信息,業(yè)務(wù)層的DAL注入.
DirectCenter.UnitTest (類庫(kù)項(xiàng)目) 使用nunit對(duì)業(yè)務(wù)層進(jìn)行單元測(cè)試
DirectCenter.DTO (類庫(kù)項(xiàng)目) data transform object 用于和前臺(tái)UI層交互的實(shí)體。之所以分出來(lái),也是為了考慮不只是為了Web項(xiàng)目,同時(shí)包括WebService等其它UI.
(可能會(huì)有不少人會(huì)問(wèn)已經(jīng)有Model了,為什么還需要DTO?)
DirectCenter.Controllers (類庫(kù)項(xiàng)目) Web控制器。用戶請(qǐng)求和后臺(tái)業(yè)務(wù)層的中轉(zhuǎn),接收并分析用戶請(qǐng)求,調(diào)用業(yè)務(wù)層完成請(qǐng)求,再分發(fā)給用戶。(
注意這里調(diào)用的是IBLL,是業(yè)務(wù)邏輯接口,也是通過(guò)Spring.Net的IOC注入具體的業(yè)務(wù)實(shí)現(xiàn))。
DirectCenter.Web (Web Application) 單純的View層,主要由ExtJs完成界面和Ajax請(qǐng)求。
當(dāng)然,這里也可以加一個(gè)Controllers的單元測(cè)試項(xiàng)目,不過(guò)我覺(jué)得這里很多時(shí)候用處不是很大。因?yàn)檫@里Controllers的工作比較統(tǒng)一和單純了。
首先先設(shè)計(jì)和建立數(shù)據(jù)庫(kù),字段和說(shuō)明如下:
數(shù)據(jù)庫(kù)中沒(méi)有外鍵關(guān)系,因?yàn)橐粚?duì)多,多對(duì)多這些關(guān)系使用NHibernate的持久層建立和維護(hù),每個(gè)表中都有一個(gè)Version字段,這是為了使用Nhibernate內(nèi)置的對(duì)象的版本控制來(lái)解決并發(fā)問(wèn)題。
接下來(lái)的工作就簡(jiǎn)單了許多,因?yàn)榻裉煳覀冎灰瓿蓪?shí)體就行,而實(shí)體類和映射文件的工作有一些輔助工具可以幫我們生成,比如codesmith, Nconstruct,Database2Sharp等,不過(guò)我還沒(méi)有發(fā)現(xiàn)哪個(gè)工具能夠很好的生成關(guān)系映射.這里只把User的類和映射文件放在這里,其 它的兩個(gè)可以在源代碼附件中找到。


<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->













































注:User的表名和實(shí)體名不一致的原因是因?yàn)閁ser是數(shù)據(jù)庫(kù)中的關(guān)鍵字。另外需要注意的是,映射文件中的命名空間要正確,映射文件(*.hbm.xml)不要忘了設(shè)置成Embedded Resource (嵌入式資源)。
數(shù)據(jù)庫(kù)設(shè)計(jì),實(shí)體,映射文件是使用這個(gè)框架開(kāi)發(fā)最關(guān)鍵的,畢竟是轉(zhuǎn)換需求的最重要的一步。如果設(shè)計(jì)的好的話,接下來(lái)的開(kāi)發(fā)相對(duì)容易多了。下次介紹數(shù)據(jù)訪問(wèn)層和業(yè)務(wù)層的實(shí)現(xiàn)。
代碼
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
