版权声明:本文为博主原创文章,未经博主允许不得转载。
客户端是选择Java Swing还是C# Winform?
在某大型项目中,客户要求不能用浏览器作为客户端(即不能用B/S模式),而要采用桌面客户端的方式(服务端用SSH,客户端通过Web Service访问服务端应用,并且还要求能在客户端与服务端网络中断的情况下离线进行部分业务操作,例如查询)。这可给我们项目组提出了一个大问题:客户端应用开发的技术选型。
公司有些员工强烈建议用Java Swing,认为有一些框架可以利用,例如spring RichClient(Swing),大家都对Spring比较熟悉,有亲近感;甚至可以考虑使用 Eclipse RCP(SWT),因为有Eclipse在前面作为成功标杆。并且公司开发人员绝大多是Java程序员,可以随时抽调精兵强将加入任务繁重的客户端开发中,解决技术难题,甚至突击编写普通业务功能。而C#人员要重新招聘,增加了很多不确定因素。
但是采用Swing,缺点是界面比较难看,控件少得可怜,对客户端资源的控制能力差,开发难度肯定高,并且公司内部也没有积累(Java程序员都是做B/S应用的),并且在人力资源市场上,Swing方面但凡有点水平的开发人员工资都高得吓人(在51Job上查了一下);但好处就是应用服务端与客户端都是用的Java,两边的人手可以灵活配置(当然前题是开发人员对于SSH和Swing都要能上手,一是需要一段时间学习,二是人家技能多了,肯定会要求加工资待遇的)。
并且Spring RichClient已经很久没有更新了,最新的版本是1.10,还是2009年6月发布的,在开发技术日新月益的今天,这种更新速度很叫人担心呀!难不成Spring组织已经放弃了这个子项目?!
另又看了一下Eclipse RCP,最近的更新是2009年8月的,也是叫人心里没有底呀!
而采用C# Winform,界面好看多了,界面控件也很丰富(MS自己的,第三方的都有很多),并且RAD开发平台是MS的绝对强项,客户端运行速度也不错,安装升级很方便,人力资源市场上应用有不少储备。但要在项目组是加入C#开发人员,对于合理组织人力资源有些不利。并且与服务端人员交流也肯定会存在问题。好在C#是Java之子,双方有太多相似的地方,交流起来难度应当没有想像得那样堪比楚河汉界。
关于运行环境方面的问题,下载一个Jre,大约15M;而下载一个.net Framework大约40M。看上去.net的运行环境比Java大得多,但是要注意,从XP Sp3以后所有windows操作系统已经在安装时集成了.net运行环境,也就是说,绝大部分用户是不用下载.net运行环境并安装的。
另外就是开发模式。在Java B/S应用开发中,一般是一个程序员从数据库、SSH到ExtJs全程贯通。好处是效率高,坏处是人员分工不明确,接口定义很随意。
在大型应用开发中,服务端与客户端的开发人员还是要分组比较好。服务端应当定义良好的接口,并且使用完备的测试用例保证其正确性与可用性。而客户端开发人员则着重于用户界面的处理,然后根据服务端的接口文档调用即可。
其实将服务端与客户端完全隔离开来也有其不利因素,就是人员交流成本会有相当程度的提高,服务端要为客户端定义明晰的接口方法,提供完备的接口文档,以方便客户端理解与调用,并且还要为自己的服务端写测试用例,以确保接口功能实现正确性。
但其有利因素也让人心动,就是提高了应用系统的模块化程度,逼迫设计人员精心划分模块、仔细设计接口,不象以前服务端(SSH)与客户端(ExtJs)都是一个人在做开发,很多本应当明确定义的接口,开发人员都只是按自己的意愿随意设计修改。同时,集成第三方应用时,也不用专门费时费力再开发接口,只是将已经设计实现的接口包装一下,加上权限等对第三方的限制条件即可。
我们公司作为一家以客户为导向的应用系统服务型公司,在技术上不应做太多、太深入研究,跟着主流和客户的要求走就没有错!现在服务端的主流是什么?Java(SSH)。客户要求客户端不用浏览器,要做成桌面应用,那现在桌面应用开发的主流是什么?C#WinForm(或者WPF)。桌面应用要求跨平台吗?不用。现在对外发布远程应用接口的主流是什么?Web Service,那我们服务端与客户端的通讯方式就只有采用Web Service。
看上去采用Java的长处很明显,短处也很明显,带来的风险也大。而C#一切都显得很中庸,但相应的风险也小。我们还是取中庸之道吧!Java Server+C# Client。
另外,根据同事提出的不同意见,有以下几点说明:
- 顶
- 0
- 踩
- 0
- 上一篇公司晚会演讲稿
- 下一篇Web Service调用方式的烦脑
我的同类文章
- •智能客户端:C/S与B/S的融合2012-11-19
- •在应用系统中集成文件上传下载的技术解决方案2012-06-19
- •我的DS架构尝试过程2007-01-26
- •关注Destktop Application Server Application2007-01-26
- •Web Service调用轻量级安全解决方案2012-06-19
- •关于MDA/BPM/SOA的随想2008-06-30
- •我的JAVA开发架构设想2007-01-26
- 猜你在找
- 1楼 cszdm 2012-12-30 14:09发表 [回复]
- 刚好项目需要也遇到这个选择问题~请问楼主最后选择c#开发过程遇到过什么问题?是否可以分享一下一些开发经验。因为项目只有我一个人开发,SSH服务端+C# 从来都没有接触过C#还真不知从何下手
核心技术类目
- 文章搜索
- 阅读排行
- 电子表格使用的35种技巧(10091)
- 《攻壳机动队》全收集(9622)
- 自然语言处理讲义(8781)
- 不停止计划生育,中国还在等什么?(7164)
- 人工智能传奇——关于AI起源与发展的故事 (6366)
- 汉族人的起源(5890)
- 人工智能的认识论问题(4992)
- 赵致真:我们的宇宙(4671)
- 攻壳机动队2无罪:引文掉书袋(4420)
- Haraway赛博宣言:二十世纪晚期的科学、技术、社会女性主义 (4048)
- 评论排行
- 《攻壳机动队》全收集(31)
- 人工智能传奇——关于AI起源与发展的故事 (24)
- 汉族人的起源(19)
- 攻壳机动队电视版 Stand_Alone_Complex 介绍(16)
- 不停止计划生育,中国还在等什么?(15)
- 对人工智能研究的遐想(14)
- 赵致真:我们的宇宙(12)
- 攻壳机动队2:绚烂的冷酷的幻灭的(11)
- 中国最无耻的五所大学(10)
- 当年运10果断下马是中国民用飞机工业的福音(8)
- 推荐文章
- 最新评论
- 对人工智能研究的遐想
cleavcat: 是时候改变世界了……
- Web Service调用方式的烦脑
cszdm: 求lz给个demo!!我用webservice传递时候list总是出现问题~~lz采用什么方式实现
- 客户端是选择Java Swing还是C# Winform
cszdm: 刚好项目需要也遇到这个选择问题~请问楼主最后选择c#开发过程遇到过什么问题?是否可以分享一下一些开发...
- C++程序员常用工具大全
zhwheiying3: 我所需要的,给力
- C语言程序运行并将结果保存到文件中
a422100231: 恩,写的好
- 中文信息处理
猿小卫:
- 中国的国防工业科技现状令人担忧
niujibin168: 每个人都会有自己的观点,作者的话还是有几分道理的,很好啊。。。
- 我的JAVA开发架构设想
TzSword: 谢谢博主 希望多写点类似的文章
- 虚拟现实:媒体的终结者
xiaolinzi13838: 先看下面一个实例http://www.kbonline.net/vr/WebPlayer.html
- 欲为Java技术大牛所需的25个学习要点
叶倾城: Oh my Lady Gaga!!!成为java大牛真不容易!!!