• 老大,我想说两句


    老大,我想说两句 收藏 

    老大,我想说两句

    电子票据系统,是一个内部管理系统加通过报文进行交易的系统,我负责的是报文交易处理这一块,开发设计报文服务。对于服务的开发,这知道这不同于一般的应用的开发,不一定要求界面美观,但是一定要充分考虑性能、效率、兼容性、健壮性、可扩展性、可维护性及开-闭性原则等方面。

    我在开发设计这一块的时候,尽量的采用合适的软件工程开发方法以及适合的JAVA模式,因为报文服务系统是为后面的不同交易准备的,并且要适合于多个行的不同环境、交易的不同实现方式等,我考虑了以下几点:

    1、需要考虑“开-闭”原则,以便于增加新的服务不修改原来的程序;

    2、使用里氏代换原则在系统中使用可配置原则,增加系统的可移植性;

    3、使用依赖倒转原则避免抽象类依赖于具体的实现类,以免模糊抽象类的“战略思想”;

    4、使用接口隔离原则编写符合可变环境的不同接口,以便于不同的实现类可以选择适合自己的一个或多个接口;

    5、使用迪米特法来减少各个类之间的交错关系,避免编写出象蜘蛛网一样的系统;

    6、新增加报文,我通过工厂模式,理论上可以增加任何服务并且不需要对原来的交易及服务做任意修改;

    7、报文服务的各种配置参数,如增加SOCKET服务需要端口、IP地址、连接池及线程池的参数配置、MQ服务参数配置等,我采用的是按照我的模板,通过简单工厂模式实现;

    8、考虑系统的性能,系统中的方法基本上采用静态方法,以及单态原理实现,并辅以SPRING延迟加载及单态BEAN原理;

    9、考虑到数据库的采用我通过Hibernate来承载C3PO连接池,并提供对SybaseSqlServerOralceDB2操作的不同封装数据处理DAO,支持在查询后全部以XML节点的格式返回,并支持将SybaseSqlserver过程中返回Select语句及Oralce的游标直接生成XML节点,尽量减少开发人员的工作量;

    10、考虑到各个行会有不同的网银及核心交易的处理,我将与各个行相关的交易全部分成不同的包中,并制定规则各个行的交易不能够引用他行的信息,核心包的功能除外;

    11、考虑到交易时有的报文会很大,超过当前存储过程所定义的8K16K,报文系统支持交易可以选择完全通过存储过程处理、完全通过JAVA处理以及先通过过程处理再通过JAVA处理,支持配置需要我提交给开发人员的是原始的XML报文,还是我转换成公司的标准键值报文等;并考虑到收到的报文在处理之前也许会先处理,提供前Handler处理的功能以及后Handler处理的功能,这些完全都支持配置性;

    12、考虑到有些报文可能因为程序不能够执行成功,报文服务支持完全重做当前的交易,不使一个交易漏掉;并考虑到将收到的原始报文保存数据库的时候,万一与数据库的通讯出问题,先将收到的报文保存到日志再写到一个专门的报文保存文件中;

    13、数千次的功能及单元测试,尽量将能够考虑到的情况都测试了一遍,终于可以在测试的时候,程序没有出现一处错误;几百个交易的测试的成功执行,证明了服务的健壮性与可靠性,多个行的同时实施,也证明了服务的可扩展性与兼容性等;

    14、报文服务的核心源代码有800K,打成JAR包有300K,近200页的设计文档,我在做这些设计与开发的时候,是把他们当成我的宝贝来操作,精心呵护......

     

    我不是在邀功,我本来就是我应该做的,因为我拿了公司的工资,我只是希望我做的东西能够得到一点点认同;但是老大你不这么认为,因为我没有去做前台界面以及将前台的数据插入台后面的表中,这样他就看不到我究竟做了些什么,并且我的服务除了一个DOS窗口及输出日志以外,其它的什么也没有;你要求我将配置文件全部放到表中但我全部放在了配置文件中,这样就不能够通过SELECT语句查到,不是我不想写到表里,配置文件到目录为止都有几M了。

    老大,你在去年的评价中给我写的是“去年为的报文服务做了一些事情,希望今年测试不要出错”,你不知道我的心里面是什么样的感觉,就像自己的儿子被人说是丑八怪一样;老大,我不应该在背后说你的坏话,但是确实你在技术上除了会几个SELECTInsertUpdate以久,其它的技术我还真的知道的不多了;你知道JAVA但是从来没写过,但是你不知道JAVA是面象对象的,编程是要考虑扩展性、安全性、易维护性,并且要采用合适的模式,这样设计出来的系统才是可以越做越好的,而不是象我们原来做的财务系统一样,去每个行都有新功能要做,但是就是没有一个综合的系统,像金蝶、用友那样功能越来越全的系统;不过在业务上你应该算是比较牛的,这点我比较佩服,但是你不应该插入到技术的设计与开发中来,你总会时不时在原来的设计出错以后,加上一句“要不....就这样改了算了”,每当这个时候我就知道你又要做坏事了。

    有些时候,心理面真的有点不爽,想一走了之,但是考虑到当前服务还没有人能够接手,就还是留了下来,我不是那种不负责的人,我不想四五个行的票据系统因为我的报文而出问题,毕竟我还是感谢公司的,给了我这样的平台与机会,我等电子票据系统通过人行验收了,也就是1.3的版本,后面的1.41.5版本就让公司的同事接手了,然后我就准备走人了;我现在还年轻,从毕业到现在4年的时间学了不少也做了不少,但我感觉技术这一块还不够,我是一个比较向往于技术方面的人,特别是设计这一块还有待加强,我想再用5年时间去学技术,为将来做技术总监做准备,否则等年纪大了想再学习就难了。

  • 相关阅读:
    [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI
    Cookie对象实战
    怎么样修改地址栏前面的图标
    进程管理工具可以下载使用
    怎样才能实现表格背景图片拉伸
    TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来
    flex+eclipse
    为gridview“删除”列添加确认对话框的方法
    触发器deleted 表和 inserted 表详解!!!
    ExtJs的使用
  • 原文地址:https://www.cnblogs.com/blockcipher/p/2913016.html
Copyright © 2020-2023  润新知