日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

c#Struts框架理念和自制Struts框架下 复杂版

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

轉(zhuǎn)載于:https://blog.51cto.com/realzjy/165569

總結(jié)

以上是生活随笔為你收集整理的c#Struts框架理念和自制Struts框架下 复杂版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。