我即將構建一個將擁有自己的引擎以及前端用戶界面的系統。我想盡可能地解耦這兩個。引擎應該能夠接受命令和數據,能夠處理這些數據並返回一些結果。引擎的工作可能很長,客戶應該有能力隨時查詢引擎以瞭解其當前狀態。關於應用程序體系結構的建議
一個分離的前端/後端系統是我的新領域,我不確定最好的架構。我希望前端是基於網絡的。它將通過表單向引擎發送命令,並通過ajax調用顯示引擎輸出和當前狀態。我可能會在Tomcat中使用基於Spring的Web應用程序。
我的問題涉及發動機部件的最佳結構。這些是我正在考慮的可能性:
在web應用中實現引擎作爲一組線程和數據結構。這裏的優勢是更簡單的實現,並且Web應用程序前端和引擎之間的消息傳遞將很簡單(只不過是一些共享數據結構)。缺點是前端和後端之間緊密耦合,依靠服務器容器管理引擎(例如,如果Web服務器或Web應用程序崩潰,引擎也會崩潰)。
將後端實現爲獨立的Java應用程序,並通過TCP端口上的某些服務公開其功能。我喜歡這種方法,因爲它與Web服務器分離。但是,我並沒有對所需的低級網絡/通信代碼的數量感興趣。我希望更高級別的消息傳遞,抽象插座等。
使用OSGi容器,如Spring DM服務器來承載Web應用程序和引擎。這種方法很好,因爲網絡代碼不存在。該引擎向OSGI容器公開服務以供Web應用程序使用。這裏的缺點是新技術的學習曲線和開銷:OSGi。此外,前端和後端保持耦合,我真的不想要。換句話說,我不能在任何舊的servlet容器上部署前端,它必須與引擎位於同一個OSGi容器中。
我有一種感覺,RMI是去這裏的路,但同樣這是一個新的技術領域對我來說,它仍然沒有解釋如何設計底層系統的體系結構。怎麼樣JMS?
謝謝你的任何建議。
+1推薦REST – medopal 2010-01-18 07:18:18