运用Swing+http invoker+spring+hibernate开发C/S架构的系统从技术上没有难度,而且java web start可以解决客户端自动升级的问题,两年前我们公司一个项目采用这种方式客户就非常喜欢,客户又感受到了传统C/S应用的用户体验,而且没有升级麻烦,只局限在局域网中使用等待一系列问题。楼主担心的问题10行代码就可以搞定(
http://www.javaeye.com/topic/82492,这么笨的方法也亏这个人想的出来),首先扩展SimpleHttpInvokerRequestExecutor的openConnection()方法把客户端的信息(登录用户,客户端选择的locale等)加到URL后面,在服务器端写一个filter把这些信息取出来放到threadlocal中,在Service中不就可以随便用了吗,httpinvoker本身就是无状态的,干嘛非把httpSession牵扯进来,想法就没对。
其实这种架构最麻烦的莫过于界面的开发,在我们原来的项目中一会儿客户想要一个可以翻页的表格,过几天他又想点击表头可以排序,单列排序他又不满足了他又想多列排序,表格搞得差不多了表单又来了,Swing的布局管理非常灵活,要做好一个表单真得费一番劲,而且客户总喜欢把他们用VB,delphi做的系统拿来跟你比,说你界面丑陋啦,日期输入不人性化啦...,用struts2半天就可以搞定的一个表单用Swing恁是搞了一个星期,写界面的痛苦啊。总之,Swing的界面开发是个大麻烦,项目完了以后将一些可重用的组件整理了一下,但还是发现界面代码一大堆,极难维护,后来的项目只要客户说C/S,我们也绝口不提C/S。
后来在javaeye首页上看到一家公司的富客户端解决方案的广告,进去看了看第一感触就是这个框架的作者当时绝对和我一样痛苦过,只不过他痛定思痛走的更远了一些,能够把控件封装起来,把项目中常见的问题在框架中一并解决了,现在只是感叹如果这个框架能在两年前出现那该有多好啊!