2010-01-25 68 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等。一个设计良好的服务解决方案将不可知与您使用哪种消息传递技术(并且应该能够支持多个消息传递技术) 。