2009-07-14 64 views
0

我正在重构4个完全不同的软件组件,这些组件几乎对单个服务(而不是Web服务 - 不一定或甚至可能)做同样的事情。 3是用C++编写的,而最后一个也是最重要的是用Java编写的。系统的其余部分是用Java编写的,因此我不会重构C++代码并使用JNI,尤其是当前用C++编写的组件将被替换为可预见的将来的Java组件。当前在Java中实现的组件实际上是较大组件的子组件。因此,当较大/包装组件希望使用子组件(被重构为服务)时,它只会调用进程内Java方法。如果我将该子组件重构为单独的服务,原始包装组件将失去其当前在过程方法调用中的好处。软件服务应该完全独立,还是可以/应该将它作为更大组件的一部分?

我应该然后添加一个线程到原始/包装组件作为服务网关,或者我应该完全重构代码到一个独立的服务。

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

回答

0

一般情况下,不需要有“服务”的一个实例和实例不需要远程调用。出于性能或可用性原因共同部署的策略是非常合理的。简单地通过逻辑的单个实现你有很大的收获。

但是,如果您已经有了服务基础架构,而服务提供者可能以特定的方式进行管理,那么可能需要保持一致。

因此,您需要了解分离的影响,在这种情况下,进程内调用的好处是多少?您还需要考虑将进程内服务作为其他客户端的远程可调用服务是否会对现有系统的性能产生不利影响。

我的直觉:将代码拉入能够进行本地和远程调用的组件(在我的世界中可以使用简单的无状态会话EJB完成)并部署两次。一旦与原始系统共处一处。一次作为服务。牺牲极小扰动的绝对一致性。

相关问题