[OperationBehavior(TransactionScopeRequired=true)]

基于WS-AtomicTransaction标准的WCF远程分布式事务(一)
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)    [ServiceContract()]
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)    
public interface ICustomerService
    }

配置文件方面,我们使用customBinding(当然,也可以使用wsHttpBinding,它只支持WS-AT协议)。客户端配置如下:

基于WS-AtomicTransaction标准的WCF远程分布式事务(一)
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)    
<system.serviceModel>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<diagnostics>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
</diagnostics>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<behaviors />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<bindings>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<customBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<binding name="httpWSAT">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<transactionFlow transactionProtocol="WSAtomicTransactionOctober2004" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<httpTransport />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</binding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</customBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<netTcpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<binding name="netTCPWSAT" transactionFlow="true" transactionProtocol="OleTransactions" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</netTcpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<wsHttpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<binding name="wsTransaction" transactionFlow="true">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<security mode="None" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</binding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</wsHttpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
</bindings>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<client>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<endpoint address="http://li/CustomerService" binding="customBinding"
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)             bindingConfiguration
="httpWSAT" contract="ICustomerService" name="ICustomerService">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<identity>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<userPrincipalName value="domain\username" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</identity>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</endpoint>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<endpoint address="http://li/OrderService" binding="customBinding"
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)             bindingConfiguration
="httpWSAT" contract="WCFTransactionClient.OrderService.IOrderService"
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)             name
="IOrderService">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<identity>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<userPrincipalName value="domain\username" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</identity>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</endpoint>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
</client>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)    
</system.serviceModel>


服务器端配置:

基于WS-AtomicTransaction标准的WCF远程分布式事务(一)<?xml version="1.0" encoding="utf-8" ?>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)
<configuration>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)    
<system.serviceModel>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<diagnostics performanceCounters="Off" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<behaviors>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<serviceBehaviors>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<behavior name="metadataSupport">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</behavior>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</serviceBehaviors>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
</behaviors>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<bindings>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<customBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<binding name="httpWSATBinding">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<transactionFlow transactionProtocol="WSAtomicTransactionOctober2004" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<httpTransport/>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</binding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</customBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<netTcpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<binding name="netTCPWSATBinding" transactionFlow="true" transactionProtocol="WSAtomicTransactionOctober2004" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</netTcpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<wsHttpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<binding name="wsTransaction" transactionFlow="true">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<security mode="None" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</binding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</wsHttpBinding>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
</bindings>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
<services>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<service behaviorConfiguration="metadataSupport" name="WCFTransactionLib.CustomerService">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<endpoint address="" binding="customBinding" bindingConfiguration="httpWSATBinding"
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                 contract
="WCFTransactionLib.ICustomerService" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<host>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<baseAddresses>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                        
<add baseAddress="http://li/CustomerService" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
</baseAddresses>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</host>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</service>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
<service behaviorConfiguration="metadataSupport" name="WCFTransactionLib.OrderService">
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<endpoint address="" binding="customBinding" bindingConfiguration="httpWSATBinding"
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                 contract
="WCFTransactionLib.IOrderService" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
<host>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
<baseAddresses>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                        
<add baseAddress="http://li/OrderService" />
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                    
</baseAddresses>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)                
</host>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)            
</service>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)        
</services>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)    
</system.serviceModel>
基于WS-AtomicTransaction标准的WCF远程分布式事务(一)
</configuration>

配置文件里面有一点需要注意的,就是在endpoint address和baseAddress中使用的地址中的服务器地址必须使用和生成X.509证书一样的地址,比如必须用http://MachineA.cos.com,而不是http://192.168.1.101或者http://MachineA。这个是ssl证书的要求:)

废话少说了,先附上测试用的源代码吧
/Files/walkinhill/wcftransactiondemosolutionnew.zip
已经写了不少了,只好把通过分析WCF程序之间交互的消息来看看WS-AT的原理的。只好留作下一篇在写WS-AT消息的内容和WS-AT和OleTx协议的一些差别了:)

参考资料:
http://msdn2.microsoft.com/en-us/library/ms733943.aspx

相关文章:

  • 2022-12-23
  • 2021-07-27
  • 2021-08-05
  • 2021-09-04
  • 2021-08-27
  • 2022-01-09
猜你喜欢
  • 2021-10-02
  • 2021-05-17
  • 2021-12-17
  • 2022-12-23
  • 2021-09-11
  • 2022-12-23
  • 2021-07-15
相关资源
相似解决方案