此项目在一个JVM上运行前端Web服务器,在另一个JVM上运行后端。为了让Web在后端调用任何商业逻辑方法,它必须通过Web服务(JAX-WS)进行调用。
我可以理解,对于需要与其他系统集成的应用程序的一部分,通过使用webservices分发服务是一个好主意,但我还没有看到每个 biz-logic调用作为Web服务公开。
性能?交易?一般来说这是一个好主意吗?
答案 0 :(得分:2)
一般来说,如果您的“后端”(我称之为“服务”)旨在被其他应用程序重用,这种方法是个好主意。
但请注意,Web服务只是系统之间的实际传输/消息接口。这里还有很多其他选项来处理两者之间的接口--Java RMI,Spring远程处理,REST等。一个设计良好的服务解决方案将与您使用的消息传递技术(并且应该能够支持多个)之间无关。
答案 1 :(得分:2)
我是KISS原则的忠实粉丝(Keep It Simple Stupid)。需要有一个令人信服的理由在JVM之间拆分应用程序并创建WS接口层。可能的原因包括需要以不同于业务层的方式扩展表示层。 JVM调优差异,例如不同的垃圾收集算法。或者需要DMZ。
如果没有令人信服的理由,分离会增加不必要的复杂性,这很可能会引起从开发到运营的麻烦。
将业务逻辑暴露给其他应用程序的需求并不代表在JVM之间拆分层的一个令人信服的理由。业务逻辑仍然可以通过WS公开给外部应用程序,而您的表示层实际驻留在同一个JVM中,并通过业务服务的POJO实现直接引用业务层。虽然POJO实现周围会有一个Web服务包装器,但将业务服务公开为Web服务。
答案 2 :(得分:1)
您分割应用程序的想法并不罕见。当您的大多数服务都要重用时,最好将它们作为单独的应用程序部署并将其解耦,以便其他系统可以轻松访问它们。它肯定会对性能产生一些影响,但从技术上讲它不应该对事务产生任何影响(除非您需要跨越服务调用的事务,您可以使用WS-Reliability)。