我正在尝试建立一个环境,在该环境中,源自 Web 服务器 (asp.net) 的 TransactionScope 将通过 WCF 将事务传输到应用程序服务器,然后再传输到数据库。由于我被迫使用 SQL Server 2005 数据库,这通常会导致事务被“提升”为分布式事务(多个服务调用可能包含在此 TransactionScope 中),这意味着需要启用分布式事务协调器。
我已经成功地让它在本地机器上运行,网络服务器和应用程序服务器托管在同一台机器上,连接到远程数据库。 DTC 在端口 135 上为 RPC 连接(以及上限)进行通信。我没有两个盒子的设置来测试...为了 DTC 工作,端口 135 是否需要打开(从防火墙的角度来看)用于 Web 服务器和应用程序服务器之间的通信,或者只是在应用程序服务器上交谈到数据库?我从部署人员那里得到了关于从 Web 到应用程序服务器开放 135 的反对意见,想知道这是否有必要。我还没有在网上找到可以为我阐明这一点的文档。
有点边缘问题,希望从可能遇到过这个问题的人那里得到一些见解。
问候,
遗传算法
最佳答案
我相信它比 DTC 使用 RPC 调用来协调更糟糕。您也许可以将它们固定到某个端口范围,但这很复杂。我有一个有类似问题的项目——甚至对同一台服务器使用多个连接将查询提升到 DTC。在尝试解决防火墙问题失败后,我最终重构了代码以共享连接。我可以让它在我们的 QA 环境中工作,但不能在生产环境中工作。存在一些差异:QA 都是虚拟机,生产是 SQL 服务器上的真实硬件,也是集群。操作系统负载尽可能相似,但可能存在细微的补丁差异,因为 QA 盒比生产盒具有更广泛的应用程序。
这篇 MSDN 文章可能会有一些用处:http://support.microsoft.com/kb/306843
关于c# - DTC 防火墙要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343924/