将WCF中的事务传播到Com+组件

公司的产品用VB6开发了很多的Com+组件,代码维护到现在,重新用.net开发自然代价巨大。

话说有一个客户要求将此产品与另一系统进行集成,我们采用了WCF作为集成的方式,由我负责开发相关的WCF接口。

我的基本设想如下,由客户端发起调用,并启动客户端事务,服务端接收到客户端的调用后,如果存在客户端事务,就使用这个事务,不存在,就新建一个事务。

在代码中,我对数据进行了一番操作后,紧接着创建了一Com+对象,方式如下

dynamic doc= Activator.CreateInstance(Type.GetTypeFromProgID("DocCreate.Creater"));

然后,在客户端放弃提交事务之后,我发现单据还是导入了。这个COM+组件没有使用WCF中的环境事务,原因只是因为.net中的事务如果要跨线程传播,要使用依赖事务。

如果组件是.net开发的,我当然可以使用了,问题是这个Com+组件怎么使用.net创建的环境事务。Com+组件是在dllhost.exe程序中运行的,不在同一个线程中。

经过很长时间的寻找,才找到在System.EnterpriseServices命名空间下有个BYOT类,改成如下的调用方式,问题就解决了:

dynamic saver = BYOT.CreateWithTransaction(Transaction.Current, Type.GetTypeFromProgID("DocCreate.Creater"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值