運(yùn)用Swing+http invoker+spring+hibernate開發(fā)C/S架構(gòu)的系統(tǒng)從技術(shù)上沒有難度,而且java web start可以解決客戶端自動(dòng)升級(jí)的問題,兩年前我們公司一個(gè)項(xiàng)目采用這種方式客戶就非常喜歡,客戶又感受到了傳統(tǒng)C/S應(yīng)用的用戶體驗(yàn),而且沒有升級(jí)麻煩,只局限在局域網(wǎng)中使用等待一系列問題。樓主擔(dān)心的問題10行代碼就可以搞定(
http://www.javaeye.com/topic/82492,這么笨的方法也虧這個(gè)人想的出來),首先擴(kuò)展SimpleHttpInvokerRequestExecutor的openConnection()方法把客戶端的信息(登錄用戶,客戶端選擇的locale等)加到URL后面,在服務(wù)器端寫一個(gè)filter把這些信息取出來放到threadlocal中,在Service中不就可以隨便用了嗎,httpinvoker本身就是無狀態(tài)的,干嘛非把httpSession牽扯進(jìn)來,想法就沒對(duì)。
其實(shí)這種架構(gòu)最麻煩的莫過于界面的開發(fā),在我們?cè)瓉淼捻?xiàng)目中一會(huì)兒客戶想要一個(gè)可以翻頁的表格,過幾天他又想點(diǎn)擊表頭可以排序,單列排序他又不滿足了他又想多列排序,表格搞得差不多了表單又來了,Swing的布局管理非常靈活,要做好一個(gè)表單真得費(fèi)一番勁,而且客戶總喜歡把他們用VB,delphi做的系統(tǒng)拿來跟你比,說你界面丑陋啦,日期輸入不人性化啦...,用struts2半天就可以搞定的一個(gè)表單用Swing恁是搞了一個(gè)星期,寫界面的痛苦啊。總之,Swing的界面開發(fā)是個(gè)大麻煩,項(xiàng)目完了以后將一些可重用的組件整理了一下,但還是發(fā)現(xiàn)界面代碼一大堆,極難維護(hù),后來的項(xiàng)目只要客戶說C/S,我們也絕口不提C/S。
后來在javaeye首頁上看到一家公司的富客戶端解決方案的廣告,進(jìn)去看了看第一感觸就是這個(gè)框架的作者當(dāng)時(shí)絕對(duì)和我一樣痛苦過,只不過他痛定思痛走的更遠(yuǎn)了一些,能夠把控件封裝起來,把項(xiàng)目中常見的問題在框架中一并解決了,現(xiàn)在只是感嘆如果這個(gè)框架能在兩年前出現(xiàn)那該有多好啊!