`
jgsj
  • 浏览: 951516 次
文章分类
社区版块
存档分类
最新评论

关于HR系统升级为集团版的设计总结

阅读更多

刚刚完了公司HR系统的升级,系统实现了从单一公司使用到多公司使用的转变,在升级的一个多月的时间内,虽然很苦,但感觉自已在系统架构上受益非浅,具体有以下感悟:

一、MVC还是很重要

系统框架是五年前用delphi设计的,采用的基类加扩展类的模式来扩充新业务表单,表单内充满了业务逻辑,由于没有采用MVC模式,以至于我看完并改完了10万源代码,还未包含108支SQL脚本写的报表,若采用了MVC模式,我想我只要改M层就可以了,当系统越大,模式就越重要,不然,系统修改会将软件开发由智力劳动变成体力劳动。在以后的开发中,我想只要系统达到模块级了,就应该采用MVC模式设计,设计前要想清楚、看远一点。

二、分层设计很重要

系统采用的是三层架构,这一点让我省了不了心,数据的提交(新增、修改、删除)封装在中间层,客户端只要调用其方法即可,采用的是客户端采用公文包方式,将变更的数据交给服务端,而不是一个客户端数据集对应一个服务端数据集的模式,提高了业务开发效率。

两层的系统已经无法适应有多分支机构的公司了,即使你现在的公司没有分支机构,也不要用两层模式了,因为外地办公的需要会很快成为你面临的问题。我们可以采用citrix的虚拟应用、虚拟桌面或window的远程桌面来发布我们的两层应用,但从我们的实际使用效果来看,都不如用户直接使用本地程序的体验好,而且还会增加了布署成本,最好直接采用web系统来建立系统。

三、适度封装业务类很重要

系统以前很多方法都封装在一个类中,时间久了,就忘记了这个类中有这个方法,但是若将业务分类创建,那需要相关类的方法时,就会很自然的想到这个方法的类,这样减少了方法的重复开发。

四、版本控制很重要

虽然这次修改由我一个人完成,但在我需要的时候,我可以将某些功能交给其他同事来完成,版本控制给了我一个团队协同开发的选择。

五、存储过程与函数的选择

在修改大量存储过程时发现,里面有许多的insert into #tmp exec myprocedure的语句,若能将这种语句改成insert into #tmp select xxx from dbo.fn_xxxx()的方式,存储过程代码会变得更易于阅读,调用更方便。所以在开发SQL脚本时,能用函数实现的,且返回数据集不是太大(多大算大,不超过5000笔吧),表值函数为我的首选了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics