【问题标题】:Exposing Database Operations as Webservice将数据库操作公开为 Web 服务
【发布时间】:2013-04-23 22:48:41
【问题描述】:

场景:

在我的项目中,我们有一个 Web 服务(Apache CXF、Hibernate 和 Spring)来向第三方公开一些服务、Portal(Spring MVC、Portal 和 Hibernate)用于开发前端 Web 应用程序和一些 Batch(Spring Batch , Hibernate) 操作单独运行。

所有 3 个应用程序都使用相同的数据库,并且在应用程序级别具有映射和实体管理器。

问题:

上述场景产生了几乎在 3 个位置更新相同映射的问题,而且我们也无法启用缓存,因为同一实体将在多个应用程序中更新,并且每个应用程序都有单独的实体管理器。

我的解决方案:

我计划引入一个 Web 服务,它将负责所有数据库操作,并将由其他 3 个应用程序使用。这样就可以避免上面的问题了。

能否请您帮助我微调我的解决方案或帮助获得新的最佳方法?

【问题讨论】:

    标签: web-services spring hibernate web-applications architecture


    【解决方案1】:

    Ganesh,按照您的描述将数据库更新集中在一个地方将在这种情况下为您提供帮助。您没有描述的是如何公开 Web 服务以及了解表关系的真正工作发生在哪里。

    您可以通过进行更改获得的真正优势在于将有关表更新的业务逻辑集中在同一个 Web 服务中(或可能在其他地方)。然后 Web 服务可以公开业务对象。

    一个典型的简化例子:

    业务采购订单 = 餐桌采购订单 + 表采购订单行 + 可用库存按订单数量减少

    我最不希望的是多个应用程序必须管理这些表更新,或者必须以紧密绑定的关系调用 Stock 应用程序以减少 Stock Available。但是,公开商业采购订单并担心新 Web 服务中的相关表更新将确保每次都以相同的方式发生,从而提高系统的可维护性。

    如果您将 Web 服务公开视为对象的组合,如下所示,那么您可能会考虑是否要重新考虑 Web 服务真正在做什么以及是否需要另一层抽象,但这是一个更长的讨论.

    网络服务 +-------------------+ |服务合同 | +---------+---------+ 留言 -> |留言 |核心 | + 解析 |服务 | 后端 持久存储 消息

    我希望我没有只是陈述显而易见的事情并且这会有所帮助。祝你好运。

    【讨论】:

    • 谢谢@geoffc。我确实有一些想法,但是你给了我一个很好的画面来思考所有领域..​​....现在正在与团队一起讨论这个变化。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多