2009-07-14 65 views
0

我正在重構4個完全不同的軟件組件,這些組件幾乎對單個服務(而不是Web服務 - 不一定或甚至可能)做同樣的事情。 3是用C++編寫的,而最後一個也是最重要的是用Java編寫的。系統的其餘部分是用Java編寫的,因此我不會重構C++代碼並使用JNI,尤其是當前用C++編寫的組件將被替換爲可預見的將來的Java組件。當前在Java中實現的組件實際上是較大組件的子組件。因此,當較大/包裝組件希望使用子組件(被重構爲服務)時,它只會調用進程內Java方法。如果我將該子組件重構爲單獨的服務,原始包裝組件將失去其當前在過程方法調用中的好處。軟件服務應該完全獨立,還是可以/應該將它作爲更大組件的一部分?

我應該然後添加一個線程到原始/包裝組件作爲服務網關,或者我應該完全重構代碼到一個獨立的服務。

我希望我十分清楚......

回答

0

一般情況下,不需要有「服務」的一個實例和實例不需要遠程調用。出於性能或可用性原因共同部署的策略是非常合理的。簡單地通過邏輯的單個實現你有很大的收穫。

但是,如果您已經有了服務基礎架構,而服務提供者可能以特定的方式進行管理,那麼可能需要保持一致。

因此,您需要了解分離的影響,在這種情況下,進程內調用的好處是多少?您還需要考慮將進程內服務作爲其他客戶端的遠程可調用服務是否會對現有系統的性能產生不利影響。

我的直覺:將代碼拉入能夠進行本地和遠程調用的組件(在我的世界中可以使用簡單的無狀態會話EJB完成)並部署兩次。一旦與原始系統共處一處。一次作爲服務。犧牲極小擾動的絕對一致性。

相關問題