c#Struts框架理念和自制Struts框架下 复杂版
生活随笔
收集整理的這篇文章主要介紹了
c#Struts框架理念和自制Struts框架下 复杂版
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在上文中,我提到了一個“簡單的zjy框架”的數(shù)據(jù)流程,但是那只是很少的一部分,用法和功能也比較簡單,他能夠完成的只是把一個數(shù)據(jù)庫顯示到頁面(或者窗體)上。在這個第四章節(jié)中,我想將這個自制的框架提升一個層次,加大他的復(fù)雜程度,并且能和一些比較抽象的內(nèi)容相結(jié)合,最后我在舉一個例子說明一下。 首先再復(fù)習(xí)一下“簡單的zjy框架”,主要的流程是這樣子的: (1)首先我先點(diǎn)擊查詢按鈕,觸發(fā)一個Action請求。 (2)將Conditionform條件對象填充好。 (3)從Action中帶著Conditionform參數(shù)調(diào)用Lbean中,進(jìn)行數(shù)據(jù)的處理,生成所要顯示的Resultform。 (4)從Action中帶著Resultform進(jìn)入窗體,窗體進(jìn)行展開。 現(xiàn)在我要將這個流程復(fù)雜化流程進(jìn)行逆向細(xì)化展開: 在這里我還是要用“簡單zjy框架中”的推理方式。倒推方法進(jìn)行推理。(建議各位沒看過標(biāo)題三的讀者先看標(biāo)題三的內(nèi)容,再來看本節(jié)內(nèi)容,因?yàn)槲疫@里提到的一些對象是標(biāo)題三中提到的,這里我不再做解釋)。 逆流程一、我假設(shè)已經(jīng)得到了Resultform對象,這個環(huán)節(jié)要進(jìn)行內(nèi)容填充。(我總結(jié)為窗體顯示)在這里我將這個窗體(或者換成頁面也是同理,后文的窗體里都包括頁面)的后臺處理函數(shù)進(jìn)行分類,主要分為四大類: 1、窗體展開——主要是在進(jìn)入窗體的時候進(jìn)行“控件展開”函數(shù)的調(diào)用。 2、控件展開——通過Resultform對象中的具體屬性,將相應(yīng)的控件進(jìn)行其內(nèi)容的填充。(需要控件的填充寫成公共函數(shù),由各個窗體根據(jù)不同情況在“控件展開”函數(shù)中進(jìn)行調(diào)用)。 3、窗體相應(yīng)事件——窗體上所有按鈕的事件。 4、相應(yīng)事件的函數(shù)——窗體上所有按鈕的事件對應(yīng)的函數(shù)。 逆流程二(后綴為“Action”的流程)、我們將Conditionform對象作為參數(shù),進(jìn)行Action的處理,返回值為Resultform對象的實(shí)例。Action只用來做窗體的判斷和窗體的指向操作,不管任何具體數(shù)據(jù)的處理(我總結(jié)為指向窗體)。在逆流程二中,如果窗體復(fù)雜還可以分成“本窗體的全局填充”、“本窗體的局部填充”兩大類。這個的構(gòu)思來源于ajax,有點(diǎn)類似網(wǎng)頁中的局部刷新。當(dāng)然,也可以根據(jù)不同的情況將“窗體的局部填充”分成“單一局部填充”和“多局部填充”兩類。具體填充是要在“逆流程一”中進(jìn)行控制的。 逆流程三(后綴為“Lbean”的流程)、我們將Conditionform對象進(jìn)行處理,轉(zhuǎn)換成Resultform對象再傳遞給逆流程二。這里要做的是具體的數(shù)據(jù)處理,也是數(shù)據(jù)組成的重點(diǎn),我來著重說說。我們來先一步一步的說說數(shù)據(jù)組成,一般來講數(shù)據(jù)來源由幾個方面組成: 1、通過本地數(shù)據(jù)庫獲取數(shù)據(jù)——和本地數(shù)據(jù)庫進(jìn)行交互可以通過NHibernate框架,也可以根據(jù)Struts 框架中Lbean層、dao層和date層,也可以ado.net等等,都可以,這要看不同項目進(jìn)行不同調(diào)整,但是這個流程不變。 2、通過webservice服務(wù)獲取數(shù)據(jù) 3、通過config文件獲取數(shù)據(jù)(appconfig、webconfig等等) 4、一些內(nèi)部的特定數(shù)據(jù)(如果可以盡量用配置文件處理)——一些開發(fā)人員為了方便需要使用的一些內(nèi)部數(shù)據(jù)。 5、一些內(nèi)部數(shù)據(jù)處理(也可以通過使用“通用方法”進(jìn)行處理)——一些開發(fā)人員為了方便需要使用的一些通用方法。 6、其余處理(對我沒提到的處理加以補(bǔ)充)。 好,現(xiàn)在我們將整個流程進(jìn)行順序處理,希望方便大家理解: 流程一(后綴為“Action”的流程)、我們通過任意一個事件進(jìn)入Action對象的實(shí)例(Conditionform對象實(shí)例作為參數(shù))。 流程二(后綴為“Lbean”的流程)、我們將Conditionform對象進(jìn)行處理,轉(zhuǎn)換成Resultform對象再傳回給Action對象的實(shí)例。這里要做的是具體的數(shù)據(jù)處理,也是數(shù)據(jù)組成的重點(diǎn),一般來講數(shù)據(jù)來源由6個方面組成:(在上面的“逆流程三”中有過說明)。 流程三、已經(jīng)得到了Resultform對象,這個環(huán)節(jié)要進(jìn)行內(nèi)容填充。(在上面的“逆流程一”中有過說明)。 剛才我將我設(shè)計的框架做了一個詳細(xì)的整體介紹。現(xiàn)在我來給各位讀者說明一下為什么我要這么設(shè)計,也就是這么設(shè)計了理由和原因: 首先我們要知道我們應(yīng)將開發(fā)軟件設(shè)計的盡量具有可擴(kuò)展性、靈活性、可讀性、可合成性等一些特點(diǎn),這些都是為了我們在以后對此軟件進(jìn)行可持續(xù)發(fā)展的一些有利條件。我主要圍繞這幾個特點(diǎn)來說: 一、可擴(kuò)展性——我這里可以擴(kuò)展的是功能模塊,添加新的模塊其原理就是添加新的方法、對象、函數(shù),這樣一來,我們只需要添加一些方法對象并在在后綴為“Lbean”的對象中引入這些方法,再后綴為“Action”的對象中使用即可。 二、靈活性——我們主要是增加系統(tǒng)的復(fù)用性,用于各個流程、功能模塊間均是分開的,所以復(fù)用比較好。 三、可讀性——只要理解數(shù)據(jù)庫處理的流程,我們就可以在相應(yīng)環(huán)節(jié)預(yù)覽所需功能即可。 四、可合成性——我們可以根據(jù)系統(tǒng)需用添加新的對象或者對象集合,只要不覆蓋以前的功能就不會對其造成影響。 五、上面四個特點(diǎn)都有了以后,我在添加一個新的特點(diǎn),就是對日志的管理。我們在給系統(tǒng)加入日志的時候可以根據(jù)各個不同環(huán)節(jié)加入我們想看的日志,比如說:我們可以在后綴為“Lbean”的對象加入一些數(shù)據(jù)庫處理的日志;我們可以在后綴為“Action”的對象加入一些用戶操作的流程日志;在配置文件的只讀靜態(tài)對象中加入一些重要配置的日志記錄;也可以加入一些比較重要的初始化數(shù)據(jù)日志記錄。這么做的目的很簡單,就是能有目標(biāo)的去看日志。總之,電腦是死的,而我們程序開發(fā)者是活得,如何用最簡單的方法來完成我們要做的事情是每個程序開發(fā)者都要思考的事。我希望我這一節(jié)能給各位讀者一點(diǎn)點(diǎn)提示。其實(shí)在寫程序方面我是個“懶”人,我認(rèn)為如何以不變應(yīng)萬變還是才是根本之道,我是所以說這么多有關(guān)自己設(shè)計的框架,就是希望各位讀者在看過我的文章后能在以后自己寫程序的時候犯點(diǎn)“懶”。
轉(zhuǎn)載于:https://blog.51cto.com/realzjy/165569
總結(jié)
以上是生活随笔為你收集整理的c#Struts框架理念和自制Struts框架下 复杂版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国平民百姓与富翁的五大差距
- 下一篇: 数据源管理 | PostgreSQL环境