考試系統總結與下一步重構
考試系統架構經歷了三個階段:
一、大部分都基于Jean-Paul S. Boodhoo提供的Front Controller 實現,主要核心是基本拋棄 Web Form ,實現了一個輕量級的 MVC架構。
二、考分查詢實現。Http://ES.skight.com
在上面架構的基礎上,加入Repository層,實現從文本提出數據,在內存緩沖。經過幾次實際流量的測試和改進,現在的性能基本達到每個查詢耗時20ms 。因此,反推理論最高查詢流量可達50次/秒或18萬次/小時。因而在相當長的時期內,可以認為考分查詢容量是可以無限添加下去的。
最新數據(2011/05/26):最近的公務員查詢,后臺查詢耗時僅有1ms, 網頁瀏覽量達60萬一天。
三、報考系統幾大功能改進。http://shen.skight.com/User/Districts.es
1、借助Fluent nHibernate很輕松地加入了數據庫功能。Fluent nHibernate可明顯地分為兩塊功能。
一是,nHibernate讓我到目前為止,還沒寫什么SQL語句; 二是,Fluent (Interface)讓我沒寫任何配置XML文件。這些都是非常耗時的工作,因此也就提高了工作效率。
2、加入了很好的分類日志記錄, 并分為3類:Trace, Information, Error 。最后,把這三類合并為一個All ,這樣便于查看各類日志的時間順序。系統進入產品階段后,基本上都是靠日志文章找到錯誤,而不是Debug 。這也非常有效。
四、下一步的重構。
目前仍存在的問題。
1、隨著功能的增加,子領域(SubDomain) 已經越來越多,1、這些子領域之間的界限并不明顯,2、子領域之間都是直接調用、引用內部現象。3、子領域作未提供Facade的接口層出來。
因此,改進目標也是很明顯的,一劃分子領域,二對外提供的所有功能,以Fa?ade/API形式集中到根級別類。 三需要內部引用的內部類以接口對外提供。
4、多使用Extension來實現服務類(需要多子領域協同工作)
5、解耦Web與Domain:用Web Service/REST/SOAP……連接website與Application server (Domain)?為幾乎每個域對象增加對應DTO會是一個重復工作,但應值得。
其他:
6、用Silvelight做管理界面
7、ASP.net MVC重做Web??
8、CI服務器改用TeamCity/Husdou?
9、使用Fluent Build?
10、用 OpenID做登錄/賬戶管理功能?
皓月碧空,漫野如洗,行往卓越的路上

浙公網安備 33010602011771號