2012年在杭州承接的第一个软件项目经验浅谈 -- 门户网站数据库、ASP.NET程序性能改进
2012-02-24 15:08 通用C#系统架构 阅读(6494) 评论(41) 编辑 收藏 举报 去年受到博客园铁哥的影响力,放弃工作在家里开始做起自由职业者了,很快有一年时间了,这一年里明显感觉到身体好了很多,精神状态也有好转。
春节后就一直没生意在家里看看孩子,虽然也有几个小单子但是由于报价太低都婉言拒绝了让更需要的人去承接吧,好好休息好,承接效益相对好的项目就可以了,前些天有一个重庆的朋友在网上联系我,希望能把他的网站进行性能优化。
正好在手上没事情做,其次应该多承接互联网的项目了不能老是干内部信息管理系统了,由于这个心态很快就承接了这个性能优化的项目,其实还是犯了同样的老毛病,客户的需求不明确就开始进行网站的优化工作了,以后需要改改不怎么深入评估项目风险就急着进行开发的性子了。
客户的网站是2006年开发的,随时基础数据的积累越来越多,系统里有些表都有几十万条记录了,由于当时开发的人员的水平有限,同时也没进行这么多数据量的压力测试,软件后台的很多功能都无法正常使用了。已经非常影响后台的审核操作了,在这样无法给客户及时审核数据,那客户就会流失很多。
崭新的MacBook air 4G内存配置的,在本地打开一个后台管理页面都需要等好几分钟时间,更何况笔记本是毫无其他用户的并发压力下,性能就这么慢了,更何况天天在广域网上每天有10万个IP访问量的网站,这个服务器的后台其实已经在崩溃的边缘了,几次升级硬件后,还是无法满足正常工作的需要了,客户只能从程序的性能上下功夫了。
其实客户找外包肯掏银子改进系统,大多是已经没办法的情况下才进行的,还好有那么多菜鸟否则,自由职业者也没的饭吃了。由于程序开发的比较早,很多页面都存在安全隐患,注入漏洞等等,而且客户也不是专业做软件开发的,也不大可能长期养着几个开发人员,那好几年的成本也是吃不消的,所以客户还是会倾向于外包这个网站的性能改进工作,而不是去招聘一个开发人员,普通的开发人员对大数据的优化,软件的性能优化也未必能有什么大进展的。
因为,不能大改原有的系统架构,数据库结构,而且天天在跑的服务器也不是想随便调试就可以调试,随时更新就可以更新的,还要考虑系统的稳定性等等。同时原有的业务功能也蛮多的,一些菜鸟光熟悉原有的系统业务逻辑就要耗费好多天时间了,再加上把以前多个人写的凌乱的程序都维护好,还是需要很多年的造诣才可以得心应手的进行改进。
一直以来只看C#程序也有一个好处,就是看别人写的代码,扫一眼就差不多能知道问题在哪里,应该怎么优化,甚至是从哪里入手,几个步骤进行优化都心里有低了。
1:由于长期维护通用权限管理系统组件,这个组件里有高性能的数据库访问组件,把目前这个系统的很多数据库访问方法,都用通用权限管理的数据库访问组件进行替换就可以了,这样最起码数据库的访问性能是最高的。
2:通用权限管理系统里有专门针对大数据库分页做的几个优化有性能良好的分页控件,把原系统的分页控件用通用权限管理系统里的分页控件一替换后,性能接近提高了10倍以上,几十万条记录的分页效果几乎一点就出来了。
3:通用权限管理系统里也有很多商业逻辑、数据库操作函数的封装,而且这些函数都支持多种数据库,同时不会有注入安全漏洞,稍微分析一下用户网站里的sql语句,然后把这些替换为通用权限管理系统的相应的函数,那网站的安全漏洞就会少很多。
4:把后台的用户登录替换为通用权限管理的用户登录界面、把通用权限管理系统的几个用户权限相关的表导入到用户的网站,然后再把用户现有的管理等数据导入到通用权限管理系统中,这样后台管理的安全性也彻底提高了,而且可以有灵活的权限配置功能了,可以任意扩展后台的权限控制管理了。
5:接着再把通用权限管理的后台给安装到网站服务器上,方便网站的管理员进行日常管理,操作简单、灵活可以得心应手了,平时也是1个人在维护系统,而且是通过远程桌面操作的,所以C\S的后台管理程序也无所谓的,这个不是针对N多前台用户的,只是针对少数管理人员偶尔用用,不大可能后台管理员的帐户经常在变动的事情,偶尔甚至几个月设置一次就可以了。
6:网站后台管理的登录页面、菜单框架、每个功能页面都不够美观,与通用权限管理的页面效果差一个层次,所以干脆把通用权限管理的菜单效果,页面都直接搬过来就可以了,而且以前的后台管理菜单是写死的,无法灵活扩展,无法按需求给不同的管理人员配置不同的菜单操作权限。
7:网站的用户是否登录等判断等等安全性方面的函数都没通用权限管理系统里写的规范,所以这部分也都进行了替换。
这个客户是重庆的以前从来没见过,也是通过博客认识的,记得2011年4月份的时候,我写过几篇文章有关大数据的性能优化方面的,客户看了文章后找上来的,虽然那个文章写了接近一年都没任何反映,但是多等等,总会有客户找上来的,写文章的好处也体现出来了。
再忙乎几周这个网站的性能优化工作就应该可以完成了,客户前后对比一下绝对会满意这次改进的,因为很多页面的打开速度至少提高了10倍,不用他积压几千条未审核的数据了,想什么时候审核就可以什么时候审核了,因为不用每点一下等待好几分钟了,现在只要1-2秒就可以了。
有时候也会迷茫,学技术干啥用?有了项目,有活儿干的时候,特别是能帮客户解决揪心的技术上的麻烦问题时,才会感觉到技术的力量也是无穷的,学技术这么多年没白浪费时间,天天维护通用通用权限管理系统没白浪费时间,里面的很多功能都在做项目时可以反复利用、通用权限管理就是积累接近10年的宝贵代码库,C#日常开发的《葵花宝典》。
我们不能总是抱怨社会不公平,社会怎么怎么了等等N个消极的思想阻止自己的进步,只要我们好好在做事情,准备工作做了充分,机会总是会送上门来的。但是为了迎接将来的机会,我们现在就要做好准备工作,天天好好维护通用权限管理系统组件,应该没错,这个条路当初没选错。