2010-01-25 88 views
2

該項目在一個JVM上運行前端Web服務器,在另一個JVM上運行後端。爲了讓Web調用後端的任何biz邏輯方法,它必須通過Web服務(JAX-WS)進行調用。使用webservices連接前端和後端,一個好主意?

我可以理解爲部分應用程序將需要與其他系統集成,通過使用web服務的分發服務是個好主意,但我還沒有看到一個系統, BIZ邏輯調用被暴露爲web服務。

表現?交易?一般來說一個好主意?

回答

2

我是KISS原則(Keep It Simple Stupid)的忠實粉絲。需要有一個令人信服的理由來在JVM之間拆分應用程序並創建一個WS接口層。可能的原因包括需要按照與業務層不同的方式擴展表示層。 JVM調優差異,例如不同的垃圾收集算法。或者需要一個DMZ。

如果一個令人信服的理由不存在,分離增加了不必要的複雜性,從發展很有可能引起頭痛來操作。

並且需要公開業務邏輯到其他應用程序並不代表一個令人信服的理由分裂JVM之間的層次。業務邏輯仍然可以通過WS公開於外部應用程序,而您的表示層實際駐留在相同的JVM中,並通過業務服務的POJO實現直接引用業務層。雖然POJO實施將會有一個Web服務封裝,將業務服務公開爲Web服務。

1

您對拆分應用程序的想法並不少見。當你的大部分服務都被重用時,最好將它們作爲一個單獨的應用程序部署,並將其解耦,以便其他系統可以輕鬆訪問它們。它會對性能產生一定的影響,但從技術上講,它不應該對事務產生任何影響(除非您需要在可以使用WS-Reliability的服務調用中進行事務處理)。

2

一般來說這種做法是一個好主意,如果你的「後端」(我稱他們爲「服務」),意在重新使用其他應用程序。

雖然只是一個說明,但Web服務只是系統之間的實際傳輸/消息接口。在這裏有很多其他的選擇來處理這兩者之間的接口 - Java RMI,Spring遠程處理,REST等。一個設計良好的服務解決方案將不可知與您使用哪種消息傳遞技術(並且應該能夠支持多個消息傳遞技術) 。

相關問題