博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

wcf 分布式事务实践

Posted on 2009-08-24 09:10  froglog  阅读(637)  评论(0编辑  收藏  举报

WCF 中支持分布式事务有关配置过程及其说明请参考Kevin Li文章《基于WS-AtomicTransaction标准的WCF远程分布式事务(一)》
原文地址:http://www.cnblogs.com/walkinhill/archive/2007/05/26/565020.html
文章已经做了非常详细的说明。本文主要针对具体实践中遇到的问题做一些补充说明。

环境
服务端:windows server 2003 R2 Enterprise Edition(SP2)
        .net framework 3.5
        Oracle9i Client
        计算机名:servervm
客户端 windows XP professional 2002(SP3)
       计算机名: clientvm
双方调用关系:servervm提供WCF服务(c# Console程序)操作Oracle数据库查询或更新数据,其过程启用事务。
             clientvm部署web应用程序,调用服务获得或更新数据,其过程启用事务。

部署过程:
主要是按照Kevin Li文章中所作说明进行操作
一.配置server端(本示例中计算机servervm windows server 2003 R2 Enterprise Edition(SP2))
   1.如果操作系统已经安装sp2就不必安装Kevin Li文章中所说的补丁。如需安装,请注意针对2003和XP操作系统提供了不同版本补丁
   2.Oracle9i Client:必须安装ODAC92070.exe,点击程序后会产生两个文件夹:“Disk1”和“Translations”,打开“Disk1”双击setup进行安装
     安装完毕后拷贝msvcrtd.dll到system32下,其详细说明请参见fibona 文章:无法加载 DLL“oramts.dll”: 《找不到指定的模块。
     (异常来自    HRESULT:0x8007007E)》原文地址:http://www.cnblogs.com/fibona/archive/2008/11/17/1335396.html
   3.生成证书:在计算机servervm和clientvm分别生成证书并进行配置,
     详细过程参见Kevin Li文章《基于WS-AtomicTransaction标准的WCF远程分布式  事务(一)》
     证书生成工具可以用VS自带工具makecert.exe在VS命令行生成,需要注意的是正如Kevin Li所说:-n "CN=MachineA"参数一定要用FQDN
   4.配置MS DTC:详细步骤同样Kevin Li在文章里已经说的很明白,需要说明的是配置https端口时一般不要用443,容易产生冲突。
   5.配置自己所写的WCF service的应用程序配置文件的<system.serviceModel>节(参考Kevin Li文章中几种binding)
二.配置client端 (本示例中计算机clientvm windows XP professional 2002(SP3))
   过程大体同server端
1.安装操作系统补丁
2.生成和配置点对点信任证书(如果配置server端时已对此计算机进行了相关操作则忽略此步骤)
3.注册和配置ws-at协议组件(注:此处在XP下可能默认配置不可用,需要首先在MS DTC配置中启用网络访问详细过程请参见 CloudSpace 文章
 《使用 WS-  AtomicTransaction 构建事务 Web 服务》中“步骤 3:在 Microsoft Distributed Transaction Coordinator (MSDTC) 中启用网络访 问”部分 原文地址:http://space.itpub.net/14789789/viewspace-444237,另外https端口不要和server端相同。)
4.配置应用程序配置文件<systems.serviceModel>节(参考Kevin Li文章中几种binding)

 其他一些更详细内容可以参考msdn 地址:http://msdn.microsoft.com/zh-cn/library/ms733943.aspx
 以及
 《Accessing a WCF service from a ASP.Net Web application》 地址:http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/407f0459-0fe2-46c0-91ee-0f644c90ec2c
 《MSDTC transaction manager's WS-AtomicTransaction protocol service is disabled》地址:http://social.msdn.microsoft.com/Forums/en-US/windowstransactionsprogramming/thread/34d26cb5-9485-4acd-be0f-9144f4329acf