惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
SecWiki News
SecWiki News
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
量子位
M
MIT News - Artificial intelligence
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
TaoSecurity Blog
TaoSecurity Blog
博客园 - 【当耐特】
H
Heimdal Security Blog
腾讯CDC
The Last Watchdog
The Last Watchdog
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cybersecurity and Infrastructure Security Agency CISA
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Threatpost
月光博客
月光博客
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
T
Troy Hunt's Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
D
DataBreaches.Net
O
OpenAI News
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
小众软件
小众软件
V
Vulnerabilities – Threatpost
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
Martin Fowler
Martin Fowler
美团技术团队
P
Privacy International News Feed

博客园 - Feelwindy1

博文阅读密码验证 - 博客园 Windows Live Messenger Beta的邀请 浅谈存储过程与函数的区 Ajax程序设计入门 [转] NHibernate(转) 与女友的相处之道(转) 两点连接寻径算法 软件架构与设计模式 Enterprise JavaBeans导论[转] 设计模式:MVC模式 (java) 构架师之路 ADO.NET事务和Set Xact_Abort 以及MSDTC Eclipse基础--使用links方式安装Eclipse插件 debug与release - Feelwindy1 - 博客园 Winform在设计上的一个小Bug 连连看源码调试问题 连连看精简测试版源码 阻塞和死锁 响应号召,发布连连看(C#+MDX9 精简测试版)
分布式数据库事务
Feelwindy1 · 2005-06-09 · via 博客园 - Feelwindy1

如果我们想实现分布式数据库事务操作,那么在.NET Framework中可以依靠MTS/COM+服务来支持自动事务操作。COM+使用DTC(Microsoft Distribution Transaction Coordinator)作为事务管理器和事务协调器在分布式环境中运行事务,这样就可以使.NET来跨越多个资源进行操作了。具体做法如下:
首先新建一个“类库”项目,然后在这个项目中,我们自己的类继承ServicedComponent这个类,并将它的属性标记为“Transaction”(事务),代码如下:
[Transaction (TransactionOption.Required)]
public class MyDTC : ServicedComponent
然后我们就可以使用Enterprise Library提供的ContextUtil中的方法来实现多数据库操作的回滚。代码如下:
try
{
myconn1.Open();
Console.WriteLine("Connection1 is successful!");
mycmd1.CommandText = "spInsertMyInfo";
mycmd1.Parameters.Add("@id", 6);
mycmd1.Parameters.Add("@name", "Remy");
mycmd1.ExecuteNonQuery();

myconn2.Open();
Console.WriteLine("Connection2 is successful!");
mycmd2.CommandText = "spInsertValue";
mycmd2.Parameters.Add("@num", 11);
mycmd2.Parameters.Add("@systemtime", "2005-5-31");
mycmd2.Parameters.Add("@numtest", 19);
mycmd2.ExecuteNonQuery();

ContextUtil.SetComplete();
}
catch (Exception)
{
ContextUtil.SetAbort();
}
finally
{
myconn1.Dispose();
myconn2.Dispose();
}
最后要注意的是我们必须要对Assembly设置一些必须的属性以确保它能够被正确的注册为COM+服务,代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.EnterpriseServices;
using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: ApplicationName("MyDTC")]
[assembly: AssemblyKeyFileAttribute("C:\\mydtc.snk")]
[assembly: ApplicationActivation(ActivationOption.Server)]
然后我们利用regsvcs xxx.dll将我们的组建注册为COM+服务,最后我们只要自己编写一个Client端来调用这个COM+服务就可以实现多数据库事务操作了。
以下是我查找到的一些相关资料:
“Serviced Component Overview”:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconservicedcomponentoverview.asp
“Writing Serviced Components”:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconwritingservicedcomponents.asp