.net 在分布式事务中有两个使用相同数据库的应用程序而不必实现资源管理器吗?

.net 在分布式事务中有两个使用相同数据库的应用程序而不必实现资源管理器吗?,.net,database,web-services,distributed,msdtc,.net,Database,Web Services,Distributed,Msdtc,我们有一个.Net应用程序,它使用NHibernate启动一个事务,并修改数据库X中的数据。在这个事务中,我们对一个Web服务(.Net)发出调用,该Web服务也会修改数据库X,并可能修改其他数据库 有没有一种方法可以在两个应用程序之间共享此事务,而不必为Web服务编写资源管理器?(这是我唯一能看到的) 启动事务的应用程序如何知道(并控制)Web服务启动的数据库事务?如果您使用的是WCF,那么它就相当简单了。您所要做的就是在您的合同上的方法上放置,您希望有一个事务流通过它 然后,您将围绕数据库调

我们有一个.Net应用程序,它使用NHibernate启动一个事务,并修改数据库X中的数据。在这个事务中,我们对一个Web服务(.Net)发出调用,该Web服务也会修改数据库X,并可能修改其他数据库

有没有一种方法可以在两个应用程序之间共享此事务,而不必为Web服务编写资源管理器?(这是我唯一能看到的)


启动事务的应用程序如何知道(并控制)Web服务启动的数据库事务?

如果您使用的是WCF,那么它就相当简单了。您所要做的就是在您的合同上的方法上放置,您希望有一个事务流通过它

然后,您将围绕数据库调用和客户机上对web服务的调用创建一个实例,事务将在您对数据库的调用和web服务之间进行协调

IIRC,您需要运行分布式事务控制器服务来协调事务


如果您没有使用WCF,那么是的,您必须创建一个资源管理器。最好的方法可能是为您试图在特定事务中管理的两个资源指定一个资源管理器,并根据参与事务的各个资源的响应状态使用该管理器进行提交/回滚。

不幸的是,我们没有使用WCF,因为我们仍然使用.Net的2.X版消费者端的框架和升级web服务意味着需要为我们使用的工具的新版本购买许可证,因此这种解决方案并不可取我来看看补偿交易。谢谢你的建议。