H2A系统若干问题的总结,整理

近期刚把手上的一个系统做完,项目背景不方便说,只把我这块的架构大概说一下,罗列一些实现的功能,做些总结。因为从0开始,做到现在再到测试上线,是花费了很大周折的。

我们的系统是一个通信系统,负责在各个地点之间传输相关数据,我这块负责人机交互,暂且称为人机模块。人机模块需要与传输模块交互,接受数据,展示数据,并且甲方坚持要通过人机界面控制传输过程,于是又有了传输暂停、取消、重传等一些功能。同时,要求保存两天的任务状态信息,这样用户可以在两天的任务间切换,对未完成的历史任务重新操作。同时要求对传输失败的数据,可以通过FTP从远端站传输到其他站。


项目开发环境Jdk1.6

功能如下:

        任务状态显示

        用户登录、管理。日志管理,查询。系统配置

        任务暂停、重传、续传、取消

        FTP传输


人机模块内部设计为单服务器,多客户端。对外部来说,人机模块与控制模块之间,人机模块又充当客户端的角色。

设计:

        界面采用Java Swing设计(Java布局很纠结,JTableModel必不可少,各种不同的组件均用到了,前期知识准备工作相当痛苦,界面老是不按照自己设计的显示,现在好歹算入门了吧)

        与控制模块之间使用Java Socket通信(Socket通信异常的处理十分重要,包括断开重连,消息发送失败导致通信一方死等等问题都比较常见,由于人机模块内部分服务器端和客户端,也使用Java Socket通信,常出现消息发送失败,消息丢失等问题,很是头痛,好在最终解决)

        定时任务(定时保存历史数据,定时切换今天与昨天任务,传输超时定时扫描。一开始使用的Java Timer类,后来发现完全不能满足需要,于是转向第三方Quarze包,圆满完成任务)

        人机界面显示与业务之间的结合(将传输任务列表映射到人机界面上,为实现这个功能,设计了很多全局的Hash表,今天的,昨天的,正在传输的 ,暂停的,取消的,完成的,等待的,任务包含的子任务等等)

        FTP传输使用Apache的common-net包(本以为会很顺利,但最纠结的也在这里,首先是下载与上传要单独放到一个线程里,不能让系统死等在那里,其次,上传完成后,发现前后大小不一致,MD5校验失败,反复查问题,就是找不到原因,好在最终解决)

对我个人来说,实现过程中遇到大大小小的问题,最大的问题有3个,第一个就是JavaSwing的界面设计,第二个是Socket中的通信问题,因为一知半解,或者代码编写错误等导致的问题,第三个是FTP传输的大小不匹配问题。当然,除此之外很多较大的问题也都很纠结,比如由于设计上一开始人机模块并没有设计为服务端与客户端,所以后来代码重构,还有就是系统本身属于二期项目,对一期项目中的数据也要有支持,所以后来做了大量的与业务有关的工作。具体种种,就不向外人道也。


       之后会分几篇具体说一下每个小的设计的得失,希望对有问题的朋友可以提供些有意义的信息。毕竟,这个系统还是涵盖了相当多的Java日常技术的,从文件操作,多线程,网络编程,容器使用,Swing编程等都有设计。是个很有意义的项目,而且项目本身的设计也是由我一人完成,很多类关系也一直在调整,设计模式的细节也多体现在代码内部。


       由于现在多用python和shell等环境工作,Java已渐渐退出我个人的技术舞台,所以有些问题还是要整理出来,把解决方案写出来,才能算对这个项目有个交代。而且项目经验本身可以作为日后从事其他项目的有益参考,不论使用C++还是Java,其实技术理论是相通的,可以用来做些有意义的思考。

日志管理,人员管理,系统配置等功能自然没有必要细说


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值