一: 项目概述
客户已经上线运营了一套ERP(Enterprise Resource Planning),该系统是基于房地产行业进行开发,主要应用于房屋产开发商、房地产中介公司等。此系统会对房屋从建造到售出实行信息化记录管理,此系统包括企业所要用到的很多子系统人力资源系统(HR),数据库管理系统(DMS),CRM(客户关系管理),报表系统等。
该网站主要采用C#语言基于ASP.NET MVC进行开发的应用程序,并采用Reporting Service来提供报表服务。项目是一个已经上线运营的网站,我们主要是对原来的项目进行升级,代码重构,用户体验提升。让项目更容易开发新功能和维护。
二:项目背景
随着开发技术不断的更新,新的开发技术在开发效率以及可维护性上面不断提高。客户在原有的系统上投入了大量的资源,是一笔宝贵的财富。利用新的技术升级现有网站,使原有资源得到保留又能获取重构后开发新的功能效率以及项目可维护性的极大提高。这正是客户的诉求。
三: 技术需求
- C#
- .NET 4.0
- ASP.NET MVC 4
- NHibernate
- Web service
- Stored Procedure
- View
四: 系统分析
数据库
数据库是存有大量正式运营数据的数据库,大小在400M左右。数据库中有近200张表,近100个视图以及存储过程以及自定义方法。对于复杂逻辑的系统正确运行是需要基于数据库中的正确数据。所以项目在开发的过程中尤其注意数据库的备份,一旦数据库出现数据丢失问题导致系统不能运行,可以及时恢复数据库。
在开发阶段,我们会定时从Live数据库备份到我们本地的数据库。这样我们也可以对现有的数据是进行测试操作而不影响运营数据库。对数据库结构的任何修改都会采用脚本的形式进行数据库升级。
系统分析
系统采用的是三层架构模式,表现层是使用的MVC,原有系统却比较少使用视图模型,向页面传递数据大多是通过传递领域模型到页面,而从请求中获取数据也大多是在Request中直接读取。系统页面有很多的Ajax局部刷新,大都是采用MVC.Ajax,在页面上很少写JS代码,很少使用jQuery去实现局部刷新。所以我们对系统进行了改造,减少客户端和服务端的数据传输。主要采用使用局部刷新来改进用户体验,数据之间主要以Json来进行传输。
数据库访问
该系统的数据库访问层采用的是NHibernate,包含有三个项目,一个是Domain项目,主要是和数据库对应的领域模型,另外两个就是Repository的接口与实现.领域模型分类比较清晰,完全是按照数据库中的命名规范来进行分类的,每一种类型的领域模型放在一个文件夹中,其中与数据库表对应的领域模型都会继承自同一基类,以保证他们的某些相关属性的一致性,其中还有很多实体类对应的是数据库中的视图. 分类文件夹中有一个映射文件,阐述了各个实体类之间的关系,其中对应数据库表的映射都是在joined-subclass中,同属于一个基类的映射, 充分体现了实体类和数据库的关系,使得逻辑关系清晰明了一目了然。
任务开发
在一开始的阶段,客户有比较饱和的工作量,主要是新功能的开发。那么我们就对系统进行了功能区分(新功能以及功能重构)以及开发计划制定。对项目的进度和质量都有一个比较好的控制。随着新功能不断的完善,客户后期主要以反馈为主,所以我们采用了敏捷的开发方式,因为现在已经很难制定开发计划之类的。我们通过与客户不断的沟通反馈,不断演进项目,最终完成客户反馈。
五: 系统截图
详细信息页面
-
索引页