Web應(yīng)用架構(gòu):錯(cuò)誤統(tǒng)一處理, 和事務(wù)統(tǒng)一處理
因?yàn)榍捌?重點(diǎn)放在業(yè)務(wù)分析上,這兩塊一直認(rèn)真思考過(guò),覺(jué)得很簡(jiǎn)單.
一開(kāi)始只是找了一個(gè)nHibernate的示例, 就決定把Session的Open和Close和事務(wù)(Transaction)的Commit, 放在HttpModule中處理. 算是Session per Request的模式.
之后,繼續(xù)加入錯(cuò)誤處理的PlugIn, 做了一個(gè)HttpHandler的Decorater, 在所有其他HttpHandler的最外層. (我使用的是自己實(shí)現(xiàn)的FrontController來(lái)處理頁(yè)面). 這樣一來(lái), 任何頁(yè)面處理中,沒(méi)有被截獲的錯(cuò)誤都回被最后一道防線網(wǎng)住.
可是, 等等, Transaction提交如果出錯(cuò)呢? HttpModule是在整個(gè)HttpHandler的外層, HttpHandler根本沒(méi)有辦法處理HttpModule的錯(cuò)誤.
重新考慮結(jié)構(gòu), 其實(shí)Transaction 的業(yè)務(wù)含義也不符合, HttpModule的管道概念, 它更加是頁(yè)面處理的一部分.
調(diào)整之后, 整個(gè)HttpHandler構(gòu)成為: UrlHandler --> ErrorHandler --> TransactionHandler --> MyPageHandler.
自己也感覺(jué)清楚多了.
皓月碧空,漫野如洗,行往卓越的路上

浙公網(wǎng)安備 33010602011771號(hào)