一個基於Winform+Java WebService的實現

來源:互聯網
上載者:User

假如有這樣一種需求:面向固定客戶的網上購物系統,你會怎樣設計這樣的系統呢?
很顯然,B/S結構已經不適用了。只要是通過瀏覽器訪問的網頁,只要知道URL,任何人都可以訪問,就沒有固定客戶的限制了。
那麼,C/S結構呢?C/S結構確實很適合區域網路,但是,不要忘了,我們的客戶可能會走遍地球的各個角落。(當然,不能串連Internet的地方我們不予考慮)
那我們考慮這樣的結構:Winform(.Net)+WebService(Java)。
WebService的協議.Net和Java都是支援的,但是有一個問題:這兩者之間可以傳遞基本類型,但是不能傳遞參考型別。
沒有關係,只要可以傳遞字串,那就代表一切都可以傳遞,最終的解決方案如下:
用戶端發送請求的時候,先把對象序列化為XML檔案,將內容發送到伺服器端,然後伺服器端將XML檔案還原序列化為一個對象。伺服器端返回相應的過程也是如此。

到了這裡,最大障礙都已經解決了,先畫出大概的流程圖:

 1)可以看出來,用戶端和伺服器互動利用的是XML,對象和XML相互轉換利用的是一個開源的組件,可以參考http://java-cs-bridge.sourceforge.net/。

2)伺服器端發布WebService利用的是Axis,但是我們對其進行了封裝,所有的用戶端請求都只會調用一個Service,傳遞到這個Service的資料包括它的對象以及具體需要執行的Service。

3)伺服器端的設計模仿了Struts,每個Service Action都只調用Logic,由Logic執行商務邏輯。

4)資料庫訪問我們封裝了dbutils,雖然不是ORM,但是卻可以有很靈活的SQL語句。

5)還有,整個系統運行過程中只有查詢,只是在使用者最後進行完成或者提交操作的時候,統一對資料庫進行更新操作,這樣做保持了資料的統一性,但同時也帶來了一些隱患:如果運行到最後,網路斷了的話,之前的操作都會沒有被儲存到資料庫中。

這個設計無論是伺服器,還是資料庫,都是分布式、可插拔的,非常靈活。

我所能想到的也就這樣子了,各位有什麼建議,或者還有什麼可以改進的,也希望不吝賜教。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.