`
javatar
  • 浏览: 1698020 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

客户端设计回顾

阅读更多
接前面几篇回顾性文章,再说说刚做完项目中客户端框架的设计,
客户端在项目初期就选择了EclipseRCP,当时给的理由是Swing太慢,
现在项目做完了,没人再说这句话了,
因为EclipseRCP更慢,尤其是表格控件,折腾了几个月,
客户端的设计不是由我主导的,只是后期我也加入修复问题,
因客户端的设计人员频繁更换,并且时间伧促,加上会EclipseRCP的开发人员又少,
最后得到的结果是不怎么理想的,而且文档更新不同步,感觉有点面目全非。
客户端整体框图如下:

1. client.libraries 包含所有第三方库(如:httpclient.jar等)以及domain,exception等实体或值对象。
2. client.common 是框架的主要实现部分,包括封装的控件,传输组件,同步,缓存,权限等等。
3. bar.main, exp.main 是各子系统的主工程,其它模块插件都部署到它的内部运行。
4. client.launcher 是一个使用Swing写的WebStart适配,负责分发整个应用到客户端,并作版本检查。
另外的,就是模块插件了,由业务组开发。
几个大问题:
1. client.libraries 不应该放domain,exception等实体或值对象,
他们应该属于各业务模块,如果强制把序列化对象全放到框架中,
在开发过程中使得libraries经常变动,而且可能冲突,
另外,这使得框架反向依赖于业务模块,
开始的原因是,Eclipse各插件之间ClassLoader隔离,经常出现类找不到,所以就全放到底层去了。
后来找到办法解决,但业务组已经基于这种方案在开发,协调比较困难,就只能用下去了。
2. bar.main和exp.main不应该存在,
不知道为什么会为每一个子系统建一个工程,让架构组来维护,有点莫名其妙,
如果再加几个子系统,难道架构组需要继续加工程?
这两个工程里就是些EclipseRCP启动事件类(如:ApplicationWorkbenchAdvisor等),一模一样,
完全可以放到client.common工程中,让client.common作为启动工程。
而现在却是在client.common工程中放了一堆抽象层(如:AbstractApplicationWindowAdvisor),
然后让bar.main和exp.main一对一去继承,这个隔离层没有多大意义,
如果说为了各子系统可能有不同的需求,完成可以通过特殊的模块插件实现。
3. client.common中定义的国际化组件,在模块中居然用不了,
这个国际化组件只读取了client.common自身的properties文件,
模块中就只好每个人都照抄这个国际化组件,搞得Messages类到处都是。
4. 还有类的分包,我没看出个所以然,如:登录功能就在5个包下有类,实在摸不透。
另外,小问题也有不少,冗余类也不少,到后期都是能不改就不改,稳定第一。
要整理客户端框架,工作量可不少。
  • 大小: 7.2 KB
分享到:
评论

相关推荐

    ftp客户端软件的设计与开发(代码,报告)

    **FTP客户端设计** 1. **连接建立**:客户端首先需要通过Socket连接到FTP服务器,通常使用21号端口。连接成功后,可以通过发送FTP命令如`USER`和`PASS`来登录服务器。 2. **模式选择**:FTP有两种模式,主动(Port...

    ftp客户端课程设计报告书.doc

    【FTP客户端课程设计报告书】 本报告书主要围绕FTP(File Transfer Protocol)客户端的课程设计展开,旨在构建一个图形用户界面的FTP客户端程序,以满足文件的安全传输和存储需求。以下将详细介绍报告书中的关键...

    宝利通视频pc客户端

    宝利通视频PC客户端是一款专为个人用户设计的视频会议软件,主要应用于远程协作和沟通。该客户端允许用户通过电脑接入视频会议系统,提供高效、清晰的音视频体验,极大地促进了远程工作和在线交流的便利性。以下是...

    海康手机客户端(安卓)

    海康手机客户端是专为安卓用户设计的一款应用,它提供了全方位的远程监控解决方案,让你能够随时随地通过手机访问和管理你的海康硬盘录像机。这款应用的核心功能包括实时视频浏览、历史记录回放以及云台控制,极大地...

    2013.10.23安卓新浪微博客户端

    《安卓新浪微博客户端:2013.10.23版本的回顾与解析》 在移动互联网快速发展的年代,微博作为社交媒体的重要平台,其客户端在各个操作系统上的表现备受关注。本文将聚焦于2013年10月23日的安卓版新浪微博客户端,...

    .NET设计文档,文件共享系统网站客户端

    小结则通常是对整个项目成果的回顾和评估,有助于后续项目的改进和创新。 综上所述,从设计文档、测试报告到用户手册,这个文件共享系统的开发涵盖了从需求分析、设计、编码、测试到部署的完整生命周期,展示了.NET...

    Java课程设计-FTP客户端-说明书.doc

    在设计FTP客户端时,需要理解FTP协议的基本工作原理,包括TCP连接的建立、控制连接和数据连接的交互、ASCII和二进制模式的数据传输等。 在系统分析阶段,需要明确FTP客户端的需求,例如用户界面的友好性、文件操作...

    大华硬盘录像机客户端

    【大华硬盘录像机客户端】是一款专为大华四路网络硬盘录像机设计的电脑客户端软件,它提供了全面的功能,使用户能够方便地管理和监控多个摄像头的实时视频流。这款软件是从配套的光盘中提取的,确保了其官方性和稳定...

    MQTT客户端通用测试工具.rar

    5. **查看历史记录**:MQTTFX会记录所有发送和接收的消息,方便回顾和分析。 6. **管理连接**:你可以保存多个连接配置,方便快速切换到不同的MQTT Broker。 此外,MQTTFX还提供了高级功能,如过滤器、自定义主题...

    海康威视MAC iVMS-4200客户端CN.7z

    标题中的“海康威视MAC iVMS-4200客户端CN.7z”表明这是专为苹果MAC OS系统设计的iVMS-4200客户端的中文版本。7z是一种高效压缩格式,通常用于减少文件大小,便于传输和存储。描述中提到的“压缩的时候多压缩了一次...

    Android github客户端-IT计算机-毕业设计.zip

    在深入理解这个毕业设计项目之前,我们需要回顾Android的基础知识。Android是一个基于Linux内核的开源操作系统,用于智能手机、平板电脑等设备。它的开发工具主要包括Android Studio,一个集成开发环境(IDE),以及...

    天视通监控电脑客户端seetong

    "天视通监控电脑客户端seetong"是一款专为天视通模组监控摄像机设计的计算机应用程序,它提供了一整套功能强大的管理工具,帮助用户实现对监控设备的全面控制。这款软件允许用户进行IP地址修改,这是网络监控设备的...

    大华8路客户端

    【大华8路客户端】是一款专门针对大华品牌的视频监控系统设计的客户端软件,它能够支持同时连接并管理多达8个不同的监控通道。这款软件在安防监控领域具有广泛的应用,尤其适用于小型商业场所、家庭环境或者需要对多...

    本科毕业设计论文--基于安卓的微博客户端软件开发.doc

    本科毕业设计论文“基于安卓的微博客户端软件开发”聚焦于利用Android移动开发平台构建一个能够运行在智能手机上的微博应用。这篇论文深入探讨了如何利用Java编程语言和新浪微博Android SDK来创建一个功能齐全、用户...

    Flash游戏网络模块源码(有服务器和客户端)

    《深入解析Flash游戏网络模块源码:服务器与客户端的交互机制》 在互联网技术日新月异...同时,对于经验丰富的开发者来说,这也是一次回顾和提升的好机会,因为即便是现代的游戏开发技术,许多基础原理仍然源自这里。

    数据库客户端工具A5 sql

    数据库客户端工具A5 SQL是一款专为数据库管理设计的专业软件,它提供了一个强大的界面来与各种类型的数据库进行交互。这款工具以其高效、用户友好的特性,让数据库管理员和开发人员能够轻松执行SQL查询、管理和维护...

    graphql for window 客户端

    "GraphQL for Windows客户端"就是这样一个专为Windows用户设计的桌面应用,方便开发者进行GraphQL API的调试工作。 GraphiQL for Win是GraphiQL的Windows版本,它集成了代码补全、文档查看和直观的结果展示等功能,...

    谷歌google翻译客户端

    在描述中提到的“仿制的gtalk界面”,意味着该客户端的设计可能受到了早期Google Talk(gtalk)即时通讯软件的启发,提供了一个用户友好的界面,让用户在类似聊天的环境中进行翻译操作。 在VB.NET中开发谷歌翻译...

    三星DVR客户端软件

    三星DVR客户端软件是专为模拟监控系统设计的一款应用程序,主要用于连接和管理三星品牌的数字视频录像机(Digital Video Recorder,DVR)。这款客户端软件提供了一个用户友好的界面,让用户能够远程访问、监视和控制...

Global site tag (gtag.js) - Google Analytics