zoukankan      html  css  js  c++  java
  • 我的项目经验

    企业缴费一卡通综合管理平台(大型企业级项目)

    时间:

    2009.12-2011.1

    角色:

    核心开发人员

    简述:

    本项目是.NET框架上的大型信息管理系统,基于ASP.NET 2.0,使用Visual Studio 2005开发,使用SQL Server 2005管理数据库。该系统包括中心服务子系统,收费点收费管理子系统,企业缴费信息网上查询管理子系统等五个子系统。

    在系统开发维护中,本人担任收费点收费管理的功能模块的开发与维护。

    我们这个项目主要是开发一个企业缴费的管理平台.这整个平台需要完成的任务有:由平台管理中心制定收费标准,由各行政部门按照制定的收费标准对用户需要办理的业务进行计费,然后再通过能识别身份和业务信息的一卡通到第三方,也就是银行进行扣费,在第三方完成扣费之后,用户回到办理业务的部门确认完成收费, 这样整个业务流程就算结束了.

    这个管理平台共有5个了系统,我们的项目组实际负责开发这五个子系统其中的三个.

    而我是在大二的寒假开始进入这个项目团队的,那时正是学习技术的懵懂期.

    在刚进去时,我们几们新人在前辈的带领下完成了中心服务子系统的开发,但接着,前辈们都毕业找到了工作.我和另外4个伙伴成了新的核心开发人员,完成剩下的两个子系统.

    在这个开发过程,我负责的是收费点收费管理子系统中缴费模块的设计与修改.

    第一次出现较大问题是在数据库设计的时候,一开始我们使用的方式是有一个专门用来保存收费项目的记录集,这记录集里的第一个记录都对应保存有相应的收费计算公式.工作一开始进展得很顺利,我们很快地完成了9个收费部门中其中前7个收费部门的数据录入工作.但到第8,第9个的时候,我们发现录入的数据突然出现爆发式的增长,一下子到了百万级别.这无论是说对数据录入,对已录入数据的检验,以及对数据的维护都是一个相当大的挑战.

    为了解决这个指数爆炸的问题,我们开始想找其它的解决方案.通过对这些数据进行对比分析,最终我们发现,这几个特殊的收费部门的每个收费项目其实都可以分成三个部分来处理.经过小组会议上讨论了其利与弊之后,我们决定要抛弃原来的数据整合方案,最后的这2个部门使用另外一套方案.之前一个收费项目的信息只要从一个记录就能得到,现在我们把每个收费项目分成三部分,保存到另外三个表中,然后每次做业务的时候再去分别去这三个表里查数据.如果说在没有更改数据结构之前,我们需要录入的数据是100万条,而现在,我们把这100万条数据拆分到三个表中,每个表负责维护100条数据,三个表相乘起来是100*100*100也是100万条的收费项目,所以这大大地降低了数据处理的压力.

    但如此一来,这后面的部门就不能跟前面的几个部门共用一个页面了,而我正是负责这个特殊部门的页面设计.

    接下这个任务后,一开始感觉很是刺激,上课的时候也是不停在纸上画画,画着几个所谓的UML图,构思着页面的布局,不断重复着业务的流程.但终于,我还是犯了错误,过早地投入到了功能的实现中去.然后开始发现代码会出现各种漏洞,修改也很没底,总会担心有什么地方没改到,还有更痛苦的就是当发现自己设计出来的成果与需求不符,被打回来继续做的时候,我才意思到这整个页面的代码结构是多么的脆弱.

    记得这个页面在最臃肿的时候竟有1000多行的后台代码.

    但这次教训的血总算没有白流,在后续的开发甚至小到课程实验,都会乖乖地遵守先设计后开发的基本操作顺序.

    总的来说,这个项目经历让我体会到学习面现对象建模的重要性,知道面向对象的设计原则,设计模式可以用来救我于水深火热之中,还有我必须了解更多更多的本质的东西才能更多的关于平台特性的优势给发挥出来.还有,为了提高生产力,要学会杜绝重复性的东西.曾经在项目里,我苦苦挣扎于数据访问接口的设计,后来才知道师兄们在离开之前已经集成了一个我们称这为"小型架构"的东西,而且这里面已经设计好了整个数据访问接口的模型.在这个模型中,数据库里每张表对应一个实体类,当我们需要访问数据库,只需要实例化对应的类,然后通过调用对象中已经封装好的Add,Delete,Search,Update等方法就可以很方便地对数据进行操作了.当然,只会用还是不够的,在深入了解了其基本原理之后,在这学期的数据库的课程设计中,我成功地复用了这种模式,为这次设计添彩不少.

    还有通过那次大规模的编码,让我对代码的调试能力有了很大的提高,从VC++ 6.0到后来的VS 2010,那几个编译,运行,停止,单步,断点的快捷键已经熟记于心,还有就是充分发挥快速监视的功能,再运用二分原则,总能很快地找出问题所在.记得以前对try catch很不习惯,即使在运行的时候抛出了异常其异常信息也经常被忽略,后来才逐渐发现,抛出的不同类型的异常有利于帮助我们更快的捕捉到出错的地方,应该好好复用其提供的信息才是.

    当然这种只是很小的一面,最重要的就是它告诉了我要写出高质量的代码,要想拥有更加优秀的架构,需要积累需要学习的东西还有很多很多.

  • 相关阅读:
    Mybatis深入浅出之工作原理
    Mybatis深入浅出之缓存机制
    Error :Unable to access jarfile *.jar
    Mysql与JDBC版本兼容性问题
    找工作的正确方法
    关于制作云主机基准镜像
    笔记分享
    Android4.0.1找不到R.java
    android 反编译出错 can not merge I and Z
    [论文理解] Improving the imporved training of Wasserstesin GANS: A consistency term and its dual effect
  • 原文地址:https://www.cnblogs.com/laizhd/p/2129044.html
Copyright © 2011-2022 走看看