客户端是选择Java Swing还是C# Winform
本人作品(20) 
版权声明:本文为博主原创文章,未经博主允许不得转载。
客户端是选择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阅读844
- •在应用系统中集成文件上传下载的技术解决方案2012-06-19阅读945
- •我的DS架构尝试过程2007-01-26阅读966
- •关注Destktop Application Server Application2007-01-26阅读836
- •Web Service调用轻量级安全解决方案2012-06-19阅读912
- •关于MDA/BPM/SOA的随想2008-06-30阅读659
- •我的JAVA开发架构设想2007-01-26阅读1363
参考知识库

-
大型网站架构知识库
1098关注|532收录

-
Java EE知识库
1120关注|581收录

-
MySQL知识库
8381关注|1396收录

-
Java SE知识库
9391关注|454收录

-
Java Web知识库
9681关注|1017收录
- 猜你在找
- 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大牛真不容易!!!
客户端是选择Java Swing还是C# Winform的更多相关文章
- Java客户端工具选择:HTML?Swing?XML?
整理下面的文章是因为个人觉得写的很好,关于java的客户端了解也并不是太多.看了下面的文章觉得很有必要贴出来,方便自己以后了解java客户端编程. Java软件设计师和管理人员经常会面临这样的难题:在 ...
- Java Swing客户端小项目
记录一下两个用java swing写的客户端. 项目1: 关键词:swing jtable 代码如下: 1.主类: package com.my.agent.client; import java. ...
- paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结
paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform 1. Absoluti 布局(经常使用) 1 2. ...
- Java Swing窗体小工具实例 - 原创
Java Swing窗体小工具实例 1.本地webserice发布,代码如下: 1.1 JdkWebService.java package server; import java.net.InetA ...
- Atitit.java swing打印功能 api attilax总结
Atitit.java swing打印功能 api attilax总结 1. 打印方式有三种:2 1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印.2 ...
- java swing+socket实现多人聊天程序
swing+socket实现多人聊天程序 1.准备工作 先看效果: 客户端项目结构图: 服务端项目结构图: 2.运行原理 服务端 先开一个线程serverListerner,线程中开启一个Server ...
- 恶补Java Swing线程刷新UI机制(由浅到深的参考大佬博文)
1. java中进度条不能更新问题的研究 感谢大佬:https://blog.csdn.net/smartcat86/article/details/2226681 为什么进度条在事件处理过程中不更新 ...
- Java swing项目-图书管理系统(swing+mysql+jdbc) 总结
(一)java Swing的学习. (1)学习如何安装windowbuilder插件的安装. <1>在eclipse中点击help <2>在help的下拉选中选择install ...
随机推荐
- 使用 Maven 部署 artifact 到 Nexus 教程
本文侧重讲解如何将已经按照好的 Maven 和 Nexus 连接,即如何通过 Maven 部署 artifact 到 Nexus. 本文前提: 1. 安装好 Maven.可以使用 Maven 创建.打 ...
- Apache-Tika解析PDF文档
通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理PDF格式的文章,如下: package com.mengyao.tika.app; im ...
- Spark on YARN的两种运行模式
Spark on YARN有两种运行模式,如下 1.yarn-cluster:适合于生产环境. Spark的Driver运行在ApplicationMaster中,它负责向YARN Re ...
- J - Assign the task - hdu 3974(DFS建树+简单线段树)
题意:给一些节点简单额对应关系,可以组成一个树,如果树的某一个节点更新那么他的所有子节点都要更新,中间,会有一些查询 分析:题意倒也不难理解,但是但是不知道怎么建树...于是自能百度,看了kuangb ...
- 3D视频可能出现的质量问题 (MSU出品)
俄罗斯的MSU Graphics & Media Lab (Video Group)提出的3D视频存在的几种问题.有一定的参考价值,在此翻译一下. 他们目前总结出4种问题: 水平视差(Hori ...
- Oracle执行计划——使用index full scan的几种情况
常见有三种情况都有用到indexfull scan. 1. 查询列就是索引列 2. 对索引列进行order by时 3. 对索列进行聚合计算时
- Android SimpleAdapter GridView (网格图片点击放大显示)
GridView网格视图 GridView网格视图是按照行,列分布的方式来显示多个组件,通常用于显示图片或是图标等,在使用网格视图时,首先需要要在屏幕上添加GridView组件. 常用属性: 1. a ...
- linux杂谈(二十):apache服务配置
1.apache简单介绍 我们常常要浏览网页,提供这种服务是apache.提供apache服务的软件是httpd服务. Apache支持許多特性,大部分通过编译的模块实现.這些特性從伺服器 ...
- Zend Studio 10正式版破解(2013-02-26更新)
Zend Studio 10正式版注册破解(2013-02-26完成更新) 1.以下方法仅供技术交流学习,请勿非法使用,如长期使用请支持购买正版. 2.若你还没有最新安装程序? ZendStudio ...
- Gradle 用法总结
用过android studio的对gradle应该都不陌生了,gradle文件的基本配置大同小异,略做了解使用应该是没什么问题了.但是深入细致的了解一下对于理解项目还是很有帮助的,尤其是遇到一些配置 ...
目录视图
摘要视图
订阅
