我们有几种服务,每种服务都应该彼此独立地独立运行。服务的主要用途是支持我们的WebApp。我们正在寻找使用这些服务的最佳方法。

我们的第一种方法是将一个项目与SQLSessionFactory一起使用,并让所有服务实施使用该项目用于数据访问。这意味着项目取决于数据对象的所有服务(我们必须单独的服务并暗示消除圆的依赖性),并且包含所有SQL地图。优势将是SQLSessionFactory的一个实例,而一种配置是要管理的。尽管如果使用一种服务,例如Junits或其他一些实用程序,则所有SQL地图都会加载,无论如何,所有服务都是依赖性。

另一种方法是让每项服务具有自己的IBATIS配置和SQLSessionFactory的实例。这将避免需要依赖数据访问项目的MECCA,但这意味着在WebApp上的几个实例。

我喜欢第二种方法,尽管我认为两者都好与坏。

你会怎么办?您从我的论点中添加或带走了什么?

请帮忙!!!

有帮助吗?

解决方案

尽管我认为您的第一个论点的力量通常指出了SOA的弱点,但我认为,如果您正在做SOA,那么它会打败整个目的,然后将所有服务彼此相互依存。

如果您正在做SOA,则为将组件的分离和隔离而接受更效率的资源使用权的权衡。

其他提示

老实说,保持简单,直到找到性能瓶颈或应用程序变得太大。也就是说,除非您希望服务能够按照自己的时间表独立更新。

在我工作的地方,所有应用程序之间都有共同的代码。这一切都来自同一来源,但在每个应用程序中独立内置。这可能不是最好的解决方案,但至少可以轻松修改常见代码,而不必担心部署的单独应用程序。它允许随着更多的应用程序的引入,可以更改常见代码,并影响先前部署的应用程序。

如果可以应用两种解决方案,则可能会在同一JVM上运行所有服务。我认为,您应该考虑在单独的JVM中运行组件。真正的服务组件体系结构是一种在群集环境中运行的几个组件(例如EJB),并在宽松的耦合中互相交谈(例如,通过JMS,WebServices或RMI等)。每个组件都是独立的,并且可能在远程服务器中运行。

在这种情况下,我当然会使用第二种方法。但是,如果您的应用程序不需要此解耦,则应使用第一种方法,因为它更有效。

毕竟,这是您的应用程序真正需要的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top