考试系统总结与下一步重构

考试系统架构经历了三个阶段:

一、大部分都基于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、解耦WebDomain:用Web Service/REST/SOAP……连接websiteApplication server (Domain)?为几乎每个域对象增加对应DTO会是一个重复工作,但应值得。

其他:

6、用Silvelight做管理界面

7ASP.net MVC重做Web??

8CI服务器改用TeamCity/Husdou? 

9、使用Fluent Build?

10、用 OpenID做登录/账户管理功能?

 

posted @ 2011-05-27 04:39  予沁安  阅读(386)  评论(0编辑  收藏  举报