前言:本站為你精心整理了多層架構(gòu)設(shè)計(jì)管理范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢。
在電子商務(wù)應(yīng)用中,越來(lái)越多的使用多層架構(gòu),因?yàn)榛趦蓪蛹軜?gòu)的程序結(jié)構(gòu)只適用于規(guī)模較小的任務(wù),其開(kāi)發(fā)、維護(hù)、成本以及在代碼重用、靈活性、可維護(hù)性等方面都不能讓人滿意。
一、三層架構(gòu)
1.概述
使用多層應(yīng)用程序結(jié)構(gòu),能使用戶界面代碼和業(yè)務(wù)邏輯代碼分離,方便了應(yīng)用程序中代碼的修改,具有良好的解耦性。將業(yè)務(wù)邏輯集中到一個(gè)類庫(kù)中,從而方便了開(kāi)發(fā)和維護(hù)。在數(shù)據(jù)庫(kù)數(shù)據(jù)的操作中,避免了代碼的重復(fù),提高了重用性??梢噪S時(shí)將組件分離到不同的物理計(jì)算機(jī)上。具有靈活的擴(kuò)展性。多層構(gòu)架主要分為:表示層、業(yè)務(wù)層和數(shù)據(jù)層。
(1)表示層(PresentationLayer)。表示層提供應(yīng)用程序的用戶界面(UI),在中頁(yè)面是UI的表現(xiàn)形式,在WindowsForm里,窗體是主要的表現(xiàn)形式。表現(xiàn)層是系統(tǒng)與用戶溝通的惟一渠道,是系統(tǒng)功能的展示。
(2)業(yè)務(wù)層(BusinessLogicLayer)。業(yè)務(wù)層實(shí)現(xiàn)應(yīng)用程序的功能。在.NET中,通常以類庫(kù)的形式封裝系統(tǒng)需要的業(yè)務(wù)邏輯。業(yè)務(wù)邏輯是開(kāi)發(fā)過(guò)程當(dāng)中主要的任務(wù)。
(3)數(shù)據(jù)訪問(wèn)層(DataAccessLayer)。數(shù)據(jù)訪問(wèn)層中包含了與數(shù)據(jù)存儲(chǔ)進(jìn)行交互的類庫(kù)。這些類在功能上和業(yè)務(wù)邏輯層相互獨(dú)立。數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)所有業(yè)務(wù)邏輯所需要的數(shù)據(jù)訪問(wèn)功能。
2.0Framework支持多層構(gòu)架
在.NET2.0中出現(xiàn)了一系列的新的控件來(lái)支持多層構(gòu)架。
二、系統(tǒng)開(kāi)發(fā)目標(biāo)
1.銷(xiāo)售流程實(shí)現(xiàn)SOP
本文以銷(xiāo)售公司為例,SOP(StandardOperationProcedure),即標(biāo)準(zhǔn)作業(yè)程序,就是將某一事件的標(biāo)準(zhǔn)操作步驟和要求以統(tǒng)一的格式描述出來(lái),用來(lái)指導(dǎo)和規(guī)范日常的工作。SOP的精髓,就是將細(xì)節(jié)進(jìn)行量化,用更通俗的話來(lái)說(shuō),SOP就是對(duì)某一程序中的關(guān)鍵控制點(diǎn)進(jìn)行細(xì)化和量化。
優(yōu)化企業(yè)的銷(xiāo)售流程。量化銷(xiāo)售過(guò)程當(dāng)中的每一個(gè)關(guān)鍵因素,增加了銷(xiāo)售過(guò)程的可控性。
三、概要設(shè)計(jì)和業(yè)務(wù)流程分析
1.系統(tǒng)設(shè)計(jì)流程
系統(tǒng)開(kāi)發(fā)的流程如下:
圖1系統(tǒng)開(kāi)發(fā)流程
首先,根據(jù)需求分析,設(shè)計(jì)系統(tǒng)總體架構(gòu);隨后設(shè)計(jì)數(shù)據(jù)庫(kù)、設(shè)計(jì)數(shù)據(jù)表;然后一個(gè)一個(gè)模塊進(jìn)行開(kāi)發(fā)。模塊的開(kāi)發(fā)采用三層B/S結(jié)構(gòu),分層的步驟如下:設(shè)計(jì)數(shù)據(jù)層、建立業(yè)務(wù)邏輯層、設(shè)計(jì)表示層。
2.業(yè)務(wù)流程
為了實(shí)現(xiàn)銷(xiāo)售流程的SOP,首先要對(duì)業(yè)務(wù)流程進(jìn)行分析:
銷(xiāo)售公司將作為網(wǎng)絡(luò)交互的中心,每一個(gè)用戶想使用系統(tǒng)的功能首先必須通過(guò)系統(tǒng)的身份驗(yàn)證。
一般情況下,銷(xiāo)售公司的流程如下:
(1)銷(xiāo)售人員獲得新的業(yè)務(wù)機(jī)會(huì)。如果新的業(yè)務(wù)對(duì)應(yīng)的客戶在客戶關(guān)系管理CRM(CustomerRelationshipManagement)中不存在,銷(xiāo)售人員首先要在CRM中添加該客戶的信息,再創(chuàng)建業(yè)務(wù)機(jī)會(huì)。銷(xiāo)售人員會(huì)根據(jù)和客戶的商談狀況隨時(shí)更改業(yè)務(wù)機(jī)會(huì)的狀態(tài)(進(jìn)行中、失敗或者成功等)。
(2)當(dāng)銷(xiāo)售人員在贏得一個(gè)業(yè)務(wù)機(jī)會(huì)后,需要生成銷(xiāo)售訂單。雖然銷(xiāo)售人員事先已經(jīng)查看了產(chǎn)品庫(kù)存情況,但某些突發(fā)事件可能導(dǎo)致創(chuàng)建銷(xiāo)售訂單時(shí)庫(kù)存不足。只有當(dāng)訂單中的產(chǎn)品庫(kù)存滿足要求時(shí),創(chuàng)建銷(xiāo)售訂單的請(qǐng)求才能被發(fā)送給財(cái)務(wù)人員處理。
(3)財(cái)務(wù)人員會(huì)收到一個(gè)手機(jī)短信,告知他有一個(gè)銷(xiāo)售訂單需要處理,同時(shí)日程表中自動(dòng)添加一項(xiàng)新的事務(wù),要求他處理這個(gè)銷(xiāo)售訂單。如果不滿足要求,則訂單被凍結(jié)。銷(xiāo)售人員被通知不能提交訂單。當(dāng)產(chǎn)品庫(kù)存滿足要求時(shí),系統(tǒng)會(huì)發(fā)短信通知銷(xiāo)售人員重新提交訂單。
3.系統(tǒng)設(shè)計(jì)
系統(tǒng)架構(gòu):銷(xiāo)售公司在銷(xiāo)售流程中,銷(xiāo)售人員是持有移動(dòng)設(shè)備的,可以很方便的攜帶,方便地和公司財(cái)務(wù)系統(tǒng)、庫(kù)存管理系統(tǒng)、生產(chǎn)系統(tǒng)獲得聯(lián)系。財(cái)務(wù)系統(tǒng)、庫(kù)存系統(tǒng)、生產(chǎn)系統(tǒng)使用的都是終端。系統(tǒng)和系統(tǒng)之間可以相互通信。
設(shè)計(jì)數(shù)據(jù)層:
數(shù)據(jù)訪問(wèn)邏輯組件:代表調(diào)用程序提供對(duì)數(shù)據(jù)庫(kù)執(zhí)行以下任務(wù)的方法:
在數(shù)據(jù)庫(kù)中創(chuàng)建記錄(Create)
讀取數(shù)據(jù)庫(kù)中的記錄并把業(yè)務(wù)實(shí)體數(shù)據(jù)返回給調(diào)用程序(Read)
使用調(diào)用程序提供的修改后的業(yè)務(wù)實(shí)體數(shù)據(jù)更新數(shù)據(jù)庫(kù)中的記錄(Use)
刪除數(shù)據(jù)庫(kù)中的記錄(Delete)
執(zhí)行上述任務(wù)的方法通常稱為“CRUD”方法,這是由各項(xiàng)任務(wù)的首字母組成的一個(gè)縮寫(xiě)詞。
數(shù)據(jù)層的實(shí)現(xiàn)我們可以采用MicrosoftApplicationBlock中的DataAccessBlock它提供了封裝好了的數(shù)據(jù)庫(kù)操作功能,實(shí)現(xiàn)了包括Oracle,SQLServer等數(shù)據(jù)庫(kù)的操作。也可以使用一些開(kāi)源(OpenSource)的O/RMapping的框架,如NHibernate等。
表示業(yè)務(wù)實(shí)體:每個(gè)數(shù)據(jù)訪問(wèn)邏輯組件都處理一種特定類型的業(yè)務(wù)實(shí)體。它主要用于表示數(shù)據(jù)存儲(chǔ)中的持久對(duì)象。是對(duì)數(shù)據(jù)庫(kù)的一個(gè)強(qiáng)類型的映射。這些實(shí)體在數(shù)據(jù)層和業(yè)務(wù)邏輯層相互獨(dú)立。
例如在系統(tǒng)中會(huì)有Client(客戶信息表),其數(shù)據(jù)庫(kù)設(shè)計(jì)如下:
那么它的業(yè)務(wù)實(shí)體的類圖就應(yīng)該如下圖,它實(shí)際上就是Client數(shù)據(jù)表的一個(gè)映射。
業(yè)務(wù)邏輯層:業(yè)務(wù)邏輯是任務(wù)的重點(diǎn)。因?yàn)閿?shù)據(jù)層并沒(méi)有對(duì)業(yè)務(wù)實(shí)體進(jìn)行邏輯上的處理,只是實(shí)現(xiàn)了CRUD方法,而業(yè)務(wù)邏輯層則提供對(duì)業(yè)務(wù)實(shí)體的邏輯操作,這些操作完全取決于企業(yè)的業(yè)務(wù)邏輯。這一層也是今后工作最容易更改、升級(jí)的部分。
表現(xiàn)層:本系統(tǒng)采用的是B/S的結(jié)構(gòu),所以在表現(xiàn)層使用,也就是Web頁(yè)面。主要考慮的是用戶的交互問(wèn)題,即系統(tǒng)應(yīng)有,一個(gè)友好的圖形界面,Microsoft提供給用戶豐富的人機(jī)交互手段。用戶可以很容易地使用系統(tǒng)。Microsoft最近推出的MicrosoftAjax(原名:Atlas)提供給開(kāi)發(fā)者方便實(shí)現(xiàn)高效交互的實(shí)現(xiàn)方法,在這種高效的交互下,彌補(bǔ)了B/S結(jié)構(gòu)相對(duì)C/S結(jié)構(gòu)的弱處,加強(qiáng)了用戶的交互體驗(yàn)。
四、單元測(cè)試
在一個(gè)軟件項(xiàng)目中,需要做多種測(cè)試。有些測(cè)試需要用戶的參與;而有些則需要專門(mén)的質(zhì)量保證小組來(lái)進(jìn)行;或者需要其他的昂貴的資源。為了平衡成本和時(shí)間等因素,項(xiàng)目中采用了單元測(cè)試。單元測(cè)試并不是在這個(gè)項(xiàng)目快完成時(shí)才進(jìn)行的,而是在設(shè)計(jì)的過(guò)程中就必須進(jìn)行單元測(cè)試。
在.Net中可以由程序員編寫(xiě)單元測(cè)試的代碼,但是容易出錯(cuò)。為了解決這個(gè)問(wèn)題,有一些開(kāi)源的單元測(cè)試軟件可以供程序員選擇,在.Net中比較常用的單元測(cè)試軟件有NUnit,它提供了一套測(cè)試框架和一個(gè)測(cè)試運(yùn)行程序。
在MicrosoftVisualStudio2005中,VisualStudio2005為開(kāi)發(fā)人員提供了一個(gè)全新的測(cè)試環(huán)境。開(kāi)發(fā)人員可以很輕松的開(kāi)始測(cè)試編碼,調(diào)試測(cè)試編碼,管理測(cè)試用例等。
五、部署和維護(hù)
一個(gè)軟件項(xiàng)目開(kāi)發(fā)完成后需要部署到運(yùn)行環(huán)境當(dāng)中,模塊的數(shù)量多少和復(fù)雜程度就決定了部署的難度。通常需要確定一個(gè)目錄結(jié)構(gòu),哪些目錄下放置哪些文件,這些細(xì)節(jié)都是在開(kāi)發(fā)中必須定義的,運(yùn)行環(huán)境必須嚴(yán)格按照文檔來(lái)部署。如果模塊數(shù)量多、復(fù)雜程度高,那么每一次的部署的工作量都會(huì)很大,而且容易出錯(cuò)。
在.Net中,仍然有很多提供部署功能的軟件產(chǎn)品可以供選擇。比如:NAnt,它是一個(gè)自動(dòng)構(gòu)建、部署的工具,可以根據(jù)用戶的定義,部署多層結(jié)構(gòu)的系統(tǒng)。
在.Net2.0中,F(xiàn)ramework2.0提供了一個(gè)叫MSBuild的工具,MSBuild引入了一種新的基于XML的項(xiàng)目文件格式,這種格式容易理解、易于擴(kuò)展并且完全受Microsoft支持。MSBuild項(xiàng)目文件的格式使開(kāi)發(fā)人員能夠充分描述哪些項(xiàng)需要生成,以及如何利用不同的平臺(tái)和配置生成這些項(xiàng)。另外,項(xiàng)目文件的格式還使開(kāi)發(fā)人員能夠創(chuàng)作可重用的生成規(guī)則,這些規(guī)則可以分解到不同的文件中,以便可以在產(chǎn)品內(nèi)的不同項(xiàng)目之間一致地執(zhí)行生成。
六、結(jié)束語(yǔ)
本文簡(jiǎn)要介紹了在.Net環(huán)境下構(gòu)建多層結(jié)構(gòu)的一種方法,如果讀者對(duì)本文有任何的問(wèn)題和建議,請(qǐng)發(fā)電子郵件與我們聯(lián)系xiaomeizi74@或allenlecn@。(文中源代碼下載請(qǐng)?jiān)L問(wèn):/layerappdemo)
參考文獻(xiàn):
[1]PaulD.Sheriff《設(shè)計(jì).NET應(yīng)用程序》
[2]郝剛等:《2.0開(kāi)發(fā)指南》人民郵電出版社,2006.5
[3]龔赤兵:《2.0網(wǎng)站開(kāi)發(fā)實(shí)例教程》人民郵電出版社2006.7
[4][美]AndrewHunt,DavidThomas著,陳偉柱,陶文譯《單元測(cè)試之道C#版:使用NUnit--程序員修煉三部曲》