我注意到,在大多数Web应用程序中,每当涉及到一组页面中的事务时,事务处理就会发生在数据库层。在web应用程序中,可能有许多用户运行这样的事务,处理所有事务可能是一件关键的事情。我同意数据库层在这方面是相当有效率的,并提供了相当多的特性来有效地做到这一点。
我的问题是,如果web应用程序构建在不提供支持事务处理的数据库上,那么是否有办法在其他层处理这些事务?
发布于 2009-01-20 17:39:43
不处理事务的数据库?最好找个新数据库。
我不同意-事务不会在持久化层中处理。我认为它们正确地属于服务层,因为服务方法是映射到工作单元和用例的。单个服务调用可能涉及多个数据库和模型对象,因此它们都需要是一个单一的、酸性的工作单元。如果持久化层处理事务,这是不可能的。
这样的设计可以处理事务,即使数据库不支持它们。在发生回滚时,服务可以实现补偿调用。如果您将该逻辑插入持久性层,则不可能。
在我看来,您必须在web和持久性层之间有一个独立的服务接口。web层只处理HTTP请求、路由到服务和制定返回响应。服务部门负责这项工作。
如果您选择以这种方式部署web服务,则这些服务可以是web服务,但是有很多部署选择。独立的服务层独立于这些选择。
https://stackoverflow.com/questions/462195
复制相似问题