運用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首頁上看到一家公司的富客戶端解決方案的廣告,進去看了看第一感觸就是這個框架的作者當時絕對和我一樣痛苦過,只不過他痛定思痛走的更遠了一些,能夠把控件封裝起來,把項目中常見的問題在框架中一并解決了,現在只是感嘆如果這個框架能在兩年前出現那該有多好啊!