微软发布的.Net程序示例PetShop4.0中,使用了MSMQ(消息队列),公共队列的消息传递,是由Windows分布式协调器来保障的。除此之外,.Net实现的很多分布式应用如分布式数据处理(对应System.Transactions命名空间)等,都是基于Windows分布式协调器的调度、支持、保障。

图1 Windows分布式事务处理
 
 
分布式事务处理协调器服务可协调那些可以更新两个或多个受事务处理保护的资源的事务处理。受事务处理保护的资源包括数据库、邮件队列和文件系统。这些受事务处理保护的资源可能位于单台计算机上,也可能分布于许多网络计算机之间。
 
 
Windows DTC的安装,在添加删除Windows组件的应用程序服务器中,选中分布式协调器,点击确定。
Windows DTC的配置,微软在Windows Server 2003 Service Pack 1 和 Windows XP Service Pack 2 的分布式事务处理协调器服务中的新功能。
在 Windows Server 2003 SP1 和 Windows XP SP2 中,分布式事务处理协调器服务可以帮助您更好地控制计算机之间的网络通信。默认情况下,会禁止所有网络通信。通过分布式事务处理协调器中增强的“安全配置”对话框可以管理这些通信设置。要查看“安全配置”对话框,请按照下列步骤操作:
1.        启动组件服务管理工具。为此,请单击“开始”,单击“运行”,键入 dcomcnfg.exe,然后单击“确定”。
2.        在组件服务管理工具的控制台树中,展开“组件服务”,展开“计算机”,右键单击“我的电脑”,然后单击“属性”。
3.        单击“MSDTC”选项卡,然后单击“安全性配置”。
 
 
 
图2 管理DTC
 
 
图3 MSDTC选项
 
 

图4 选项
 

各选项含义:
      “网络 DTC 访问”复选框

通过“网络 DTC 访问”复选框,可以确定分布式事务处理协调器服务是否可以访问网络。只有选中“网络 DTC 访问”复选框及其下面的其他某一复选框,才可以启用网络分布式事务处理协调器事务处理。
“网络 DTC 访问”复选框影响下面的注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
数值名称:NetworkDtcAccess
数值类型:REG_DWORD
数值数据:0(默认)
注意:在服务器群集上,“网络 DTC 访问”复选框会影响 MSDTC 资源注册表项下的共享群集注册表项中的值。
默认情况下,NetworkDtcAccess 注册表项的值设置为 0。值为 0 时,NetworkDtcAccess 注册表项将关闭。要打开 NetworkDtcAccess 注册表项,请将该注册表值设为 1。

“允许入站”复选框

通过“允许入站”复选框,可以确定是否允许来自远程计算机的分布式事务处理在本地计算机上运行。默认情况下,该设置是关闭的。要启用该设置,请单击以选中“网络 DTC 访问”复选框以将下面的注册表项设置为 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
数值名称:NetworkDtcAccess
数值类型:REG_DWORD
要禁用该设置,请单击以清除“网络 DTC 访问”复选框以将该注册表项设置为 0。
“允许入站”复选框影响以下两个注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
数值名称:NetworkDtcAccessTransactions
数值类型:REG_DWORD
数值名称:NetworkDtcAccessInbound
数值类型:REG_DWORD

“允许出站”复选框

通过“允许出站”复选框,可以确定是否允许本地计算机启动事务处理并在远程计算机上运行该事务处理。要启用该设置,请单击以选中“网络 DTC 访问”复选框以将下面的注册表项设置为 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
数值名称:NetworkDtcAccess
数值类型:REG_DWORD
要禁用该设置,请单击以清除“网络 DTC 访问”复选框以将该注册表项设置为 0。
“允许出站”复选框影响以下两个注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
数值名称:NetworkDtcAccessTransactions
数值类型:REG_DWORD
数值名称:NetworkDtcAccessOutbound
数值类型:REG_DWORD

“要求对双方进行验证”选项
“要求对双方进行验证”选项为 Windows Server 2003 SP1 和 Windows XP SP2 提供了相互验证支持。“要求对双方进行验证”能够提供当前可用于网络通信的最高安全模式。建议对运行 Windows XP SP2 的客户端计算机和运行 Windows Server 2003 SP1 的服务器计算机使用该事务处理模式。
“要求对双方进行验证”影响以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
数值名称:AllowOnlySecureRpcCalls
数值类型:REG_DWORD
数值数据:1
数值名称:FallbackToUnsecureRPCIfNecessary
数值类型:REG_DWORD
数值数据:0
数值名称:TurnOffRpcSecurity
数值类型:REG_DWORD
数值数据:0

注意:通过“要求对双方进行验证”设置的功能不同于通过“要求对呼叫方进行验证”设置的功能。“事务管理器通信”下列出的三个选项的行为如下:
·  “要求对双方进行验证”事务处理模式需要可远程访问的组件,以提供与本地计算机的经验证的连接。该验证通过本地计算机上的模拟进行验证。另外,如果在两个分布式事务处理协调器服务之间进行远程访问通信,该验证信息必须指定一个与远程事务处理模式计算机的主机名相匹配的计算机帐户。

·  “要求对呼叫方进行验证”事务处理模式只需要对远程连接进行验证。另外,如果可远程访问的组件为分布式事务处理协调器服务,那么计算机帐户必须包含验证信息。

·  “不要求进行验证”事务处理模式不验证经验证的连接,或者不验证是否建立了经验证的连接。
在群集环境中,分布式事务处理协调器服务的计算机帐户指定群集节点的主机名。在群集环境中,分布式事务处理协调器验证不使用事务处理模式的主机名。在群集环境中,事务处理模式的主机名是虚拟服务的名称。因此,不能在群集环境中使用“要求对双方进行验证”事务处理模式。可以在运行 Windows Server 2003 SP1 的两台非群集计算机之间或者在运行 Windows XP SP2 的两台计算机之间使用“要求对双方进行验证”事务处理模式。
必须在群集环境中基于 Windows Server 2003 的计算机之间使用“要求对呼叫方进行验证”事务处理模式。
必须在存在下列一种或多种情况时使用“不要求进行验证”事务处理模式:

·  在运行 Microsoft Windows 2000 的计算机之间进行网络访问。

·  在未配置相互信任的两个域之间进行网络访问。
·  在属于工作组成员的计算机之间进行网络访问。
“要求对呼叫方进行验证”选项
“要求对呼叫方进行验证”要求本地分布式事务处理协调器服务与远程分布式事务处理协调器服务只通过加密邮件进行通信。只对传入连接进行验证。只有 Windows Server 2003 SP1 和 Windows XP SP2 支持该功能。因此,只在远程分布式事务处理协调器服务在基于 Windows Server 2003 SP1 的计算机或基于 Windows XP SP2 的计算机上运行时才启用该选项。
“要求对呼叫方进行验证”影响以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
数值名称:AllowOnlySecureRpcCalls
数值类型:REG_DWORD
数值数据:0
数值名称:FallbackToUnsecureRPCIfNecessary
数值类型:REG_DWORD
数值数据:1
数值名称:TurnOffRpcSecurity
数值类型:REG_DWORD
数值数据:0

有关“要求对呼叫方进行验证”的更多信息,请参见“‘要求对双方进行验证’选项”部分。
“不要求进行验证”选项

“不要求进行验证”可确保早期版本的 Windows 操作系统之间的操作系统兼容性。启用该选项后,如果未能建立安全的通信信道,则分布式事务处理协调器服务之间的网络通信将会退回到未验证的通信或未加密的通信。
注意:建议您在运行 Microsoft Windows 2000 的计算机或运行早于 Windows XP SP2 版本的 Windows XP 的计算机上运行分布式事务处理协调器服务时,使用该设置。
还可以使用“不要求进行验证”应对在位于未建立信任关系的域中的计算机上运行分布式事务处理协调器服务的情况。此外,可以使用“不要求进行验证”应对在属于工作组成员的计算机上运行分布式事务处理协调器服务的情况。
“不要求进行验证”影响以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
数值名称:AllowOnlySecureRpcCalls
数值类型:REG_DWORD
数值数据:0数值名称:FallbackToUnsecureRPCIfNecessary
数值类型:REG_DWORD
数值数据:0
数值名称:TurnOffRpcSecurity
数值类型:REG_DWORD
数值数据:1