<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Florin Lazar - Consistency Checkpoint : Enterprise Services</title><link>http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx</link><description>Tags: Enterprise Services</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Our Own Forum is Now Live! Please Join Us at the &amp;quot;Transactions Programming Forum&amp;quot;</title><link>http://blogs.msdn.com/florinlazar/archive/2006/03/10/our-own-forum-is-now-live-please-join-us-at-the-quot-transactions-programming-forum-quot.aspx</link><pubDate>Sat, 11 Mar 2006 02:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:549107</guid><dc:creator>florinlazar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/549107.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=549107</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=549107</wfw:comment><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;I'm really happy to announce that our own forum, dedicated to transactions in Windows and .Net is now live at &lt;/FONT&gt;&lt;A href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=388&amp;amp;SiteID=1"&gt;&lt;FONT face=Tahoma size=2&gt;http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=388&amp;amp;SiteID=1&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The RSS feed for the forum is &lt;/FONT&gt;&lt;A href="http://forums.microsoft.com/MSDN/rss.aspx?ForumID=388&amp;amp;Mode=0&amp;amp;SiteID=1"&gt;&lt;FONT face=Tahoma size=2&gt;http://forums.microsoft.com/MSDN/rss.aspx?ForumID=388&amp;amp;Mode=0&amp;amp;SiteID=1&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;I hope that by having a forum that is dedicated to Transactions technologies we can build a better channel for our customers to get quick and accurate answers to their questions. We encourage everyone in the community to participate in this forum.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;I look forward to us working together to make this forum a valuable resource for Transactions discussions.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=549107" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/forum/default.aspx">forum</category></item><item><title>Why and When to use transactions?</title><link>http://blogs.msdn.com/florinlazar/archive/2005/10/04/476775.aspx</link><pubDate>Tue, 04 Oct 2005 11:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:476775</guid><dc:creator>florinlazar</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/476775.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=476775</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=476775</wfw:comment><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Many people ask - do I need transactions? Why do I need them? When to use them?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The answer is simple: use them all the time, unless you have a very good reason not to (for instance, don't use atomic transactions for "long running activities" between businesses). The default should always be yes. You are in doubt? - use transactions.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Why are transactions beneficial? They help you deal with crashes, failures, data consistency, error handling, they help you &lt;a href="http://blogs.msdn.com/florinlazar/archive/2005/04/16/408837.aspx"&gt;write simpler code&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma size=2&gt; etc. And the list of benefits will continue to grow with time.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Don't think in terms of transactions only when you talk to two or more databases. Starting with technologies like &lt;a href="http://blogs.msdn.com/florinlazar/archive/2005/05/12/416805.aspx"&gt;LTM&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma size=2&gt;, transactions are made available to be used for any multi-action operation. "X = A+B; Y = C*D;" can be transactional or atomic, as some prefer to name it, and can be seen as a single unit of work. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;That is also why support for transactions is available almost everywhere. In database systems, in COM+, in ASP.NET, in .Net Framework with System.Transactions and EntepriseServices, in Indigo, in Biztalk etc&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;You might be saying now: "but my friend X doesn't use transactions - why it is important that I use them?". It is mostly a problem on the education side. The industry didn't talk a lot about transactions and their usage until recently. The original scope of transactions was limited to database scenarios. But technologies around transactions evolved and continue to evolve, in terms on capabilities, ease of use, flexibility, performance etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;We used to talk about composable objects (as in OOP). We currently talk a lot about &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/wsoverview.asp"&gt;composable web services&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma size=2&gt; (as in SOA). The technologies are already here to start talking about composable atomic units of work.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;How about the future? One avenue is STM or "software transactional memory". Maybe another one is transactional support at hardware level.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=476775" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Transactions Sessions at PDC 2005</title><link>http://blogs.msdn.com/florinlazar/archive/2005/09/14/transactions-sessions-at-pdc-2005.aspx</link><pubDate>Wed, 14 Sep 2005 20:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:466237</guid><dc:creator>florinlazar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/466237.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=466237</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=466237</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma size=2&gt;If you are at PDC this year, don't forget to attend the sessions related to transactions. An easy way to find these sessions is to go to &lt;/FONT&gt;&lt;A href="http://commnet1.microsoftpdc.com/content/sessions.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://commnet1.microsoftpdc.com/content/sessions.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;&lt;FONT size=2&gt; and search by Keyword="transaction".&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;FONT size=2&gt;I especially recommend the session called "FUN320 - Windows &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt; &amp;amp; "Longhorn" Server: Improving Reliability Using System.Transactions and the Transactional NTFS and Registry".&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Jim Johnson, our architect for transactions is presenting this session together with Dana Groff, the program manager in Core File Services focusing on transaction technologies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;FONT size=2&gt;Here is the full list:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;FUN320&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Windows &lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt; &amp;amp; "Longhorn" Server: Improving Reliability Using System.Transactions and the Transactional NTFS and Registry &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Day/Time: Thursday, September 15 5:15 PM- 6:30 PM Room: 406 AB&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Speaker(s): Dana Groff, Jim Johnson&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Type(s): Breakout&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Level(s): 300&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Track(s): Fundamentals&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;You can build significantly more reliable applications by using the expanded and enhanced classes in the System.Transactions namespace. This session covers how to use new transaction-oriented programming techniques for application stability and robustness. Learn about the new systems in Windows Vista and "Longhorn" Server for supporting Transacted Files (TxF) and Transacted Registry (TxR) operations in both native and managed code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT size=1&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;FUN323&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Microsoft Research: Future Possibilities in Concurrency &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Day/Time: Friday, September 16 8:30 AM- 9:45 AM Room: 406 AB&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Speaker(s): Tim Harris&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Type(s): Breakout&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Level(s): 300&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Track(s): Fundamentals&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Learn about the investment Microsoft Research is making in future languages and tools to help write software that will gain the maximum benefit from tomorrow's multi-processor/multi-core hardware. In this session, we start by introducing some of the tools and techniques we've developed for tracking down and preventing bugs in multi-threaded software. We then turn to the language features that we're prototyping in research: our work on transactional memory is developing a programming model where data can be shared directly between threads without needing to worry about locking or low-level deadlocks; our work on synchronization is leading to a unified abstraction for co-ordination between threads and between processes. We'll demo some of our prototype systems, showing how these techniques can lead to software which is not only easier to develop, but which can scale from uniprocessors up to highly parallel systems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT size=1&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Distributed Atomic Transactions - Wishful Thinking? &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Day/Time: Tuesday, September 13 9:00 PM- 10:00 PM Room: 511 C&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Type(s): Birds of a Feather&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Level(s): 300&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Web Services, via SOAP, is the preferred choice of doing wide-reaching distributed communications today. However, one of the few factors that has hindered its adoption in the enterprise today is its lack of ability to handle transactions between remote un-trusted (independent) boundaries. There are two schools of thought today with regards to transactions --- The Atomic Way or The Compensating Way which pretty much takes out the atomicity of ACID. Indigo supports WS-AT via Microsoft DTC. Will this be widely adopted in the enterprise collaboration space? Or are we living in Fool's Paradise? &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT size=1&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;COM307&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Windows Communications Foundation ("Indigo"): Writing Reliable and Transacted Distributed Applications &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Day/Time: Wednesday, September 14 3:15 PM- 4:30 PM Room: 403 AB&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Speaker(s): Shy Cohen&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Type(s): Breakout&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Level(s): 300&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Track(s): Communications&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;What do you do when your network connection breaks half-way through a request? How do you synchronize state changes across different Web services? How do you overcome a system crash without losing important messages? Windows Communications Foundation (formerly codename "Indigo") provides simple and powerful reliability mechanisms that allow you to easily address these types of network and application issues. Take an in-depth look at reliable sessions, queues, and distributed transactions, and how these technologies are used to achieve reliable, transacted communication. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT size=1&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;COM202&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Windows Communications Foundation ("Indigo"): A Lap around the Windows Communications Foundation &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Day/Time: Tuesday, September 13 1:00 PM- 2:15 PM Room: Halls C &amp;amp; D (Petree Hall)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Speaker(s): Omri Gazitt&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Type(s): Breakout&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Session Level(s): 200&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Track(s): Communications&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;Windows Communications Foundation (formerly codename "Indigo") is Microsoft's new platform technology for building distributed applications, bringing the best of ASP.NET Web services, .NET Remoting, Enterprise Services, WSE, and System.Messaging into one unified framework. This session introduces the core concepts in the Windows Communications Foundation programming model-addresses, bindings, contracts, and behaviors-and presents the Windows Communications Foundation feature set through the lens of these concepts. This session covers security, reliable messaging, transactions, queues, hosting, transports, interop/integration, and more. If you have never seen an introduction to Windows Communication Framework, this session is for you.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma size=2&gt;The slides from these sessions are currently available at &lt;/FONT&gt;&lt;A href="http://commnet.microsoftpdc.com/content/downloads.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://commnet.microsoftpdc.com/content/downloads.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=466237" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/PDC/default.aspx">PDC</category></item><item><title>Indigo and Avalon Beta1 RC Available for Download</title><link>http://blogs.msdn.com/florinlazar/archive/2005/05/23/421161.aspx</link><pubDate>Tue, 24 May 2005 01:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:421161</guid><dc:creator>florinlazar</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/421161.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=421161</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=421161</wfw:comment><description>&lt;FONT face=Tahoma size=2&gt;"Indigo" and "Avalon" Beta1 RC are available for download at &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B789BC8D-4F25-4823-B6AA-C5EDF432D0C1&amp;amp;displaylang=en"&gt;&lt;FONT face=Tahoma size=2&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=B789BC8D-4F25-4823-B6AA-C5EDF432D0C1&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt;. More info can be found at &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/Longhorn"&gt;&lt;FONT face=Tahoma size=2&gt;http://msdn.microsoft.com/Longhorn&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; and &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/webservices"&gt;&lt;FONT face=Tahoma size=2&gt;http://msdn.microsoft.com/webservices&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt;. &lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=421161" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>What do you want to know about transactions?</title><link>http://blogs.msdn.com/florinlazar/archive/2005/05/07/415406.aspx</link><pubDate>Sun, 08 May 2005 00:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:415406</guid><dc:creator>florinlazar</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/415406.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=415406</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=415406</wfw:comment><description>&lt;FONT face=Tahoma size=2&gt;Please don't hesitate to send me your suggestions or questions or topics you would like to be discussed in this blog. You can post a comment to this post or use &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/florinlazar/contact.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://blogs.msdn.com/florinlazar/contact.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; to let me know. I'll prioritize the list and cover as much as I can.&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=415406" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Microsoft+Windows/default.aspx">Microsoft Windows</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>MSDN Product Feedback Center</title><link>http://blogs.msdn.com/florinlazar/archive/2005/04/21/410489.aspx</link><pubDate>Thu, 21 Apr 2005 22:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:410489</guid><dc:creator>florinlazar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/410489.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=410489</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=410489</wfw:comment><description>&lt;P class=MsoPlainText&gt;&lt;FONT face=Tahoma size=2&gt;You've found a bug in a Microsoft product, and you don't know where to report it? Use MSDN Product Feedback Center &lt;/FONT&gt;&lt;A href="http://lab.msdn.microsoft.com/productfeedback/default.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://lab.msdn.microsoft.com/productfeedback/default.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; to submit it. You can collaborate with Microsoft developers, MVPs, and beta testers to identify problems and workarounds, and then track feedback online. You also get notifications of changes and fixes.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=410489" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Microsoft+Windows/default.aspx">Microsoft Windows</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Transaction.Current and Ambient Transactions</title><link>http://blogs.msdn.com/florinlazar/archive/2005/04/19/409570.aspx</link><pubDate>Tue, 19 Apr 2005 12:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:409570</guid><dc:creator>florinlazar</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/409570.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=409570</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=409570</wfw:comment><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Ambient transactions are defined as transactions that live in the current thread or object context that anybody interested can query for their existence and use them to do work as part of them. Their existence means that the user wants to do a series of actions in a transacted "all or nothing" way. They are not an enforcement, but merely a suggestion for the APIs that are going to be called. It is the API's responsibility to use the transaction when one exists. We call these APIs, transaction-aware APIs. The main customers of these ambient transactions were and continue to be the database proxies (ODBC, OLEDB, System.Data). But with .Net Framework 2.0 and System.Transactions we expect this to change.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;At first it was MTS (later called COM+) with its "object context" that could have a transaction present in it. In an MTS/COM+ component, you would have to call CoGetObjectContext with IID_IObjectContextInfo to obtain an IObjectContextInfo pointer and then to call IObjectContextInfo::GetTransaction to get the "current" transaction. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Later, System.EnterpriseServices continued this in .Net with its ambient transaction that could be accessed using System.EnterpriseServices.ContextUtil.Transaction. This transaction was available inside a ServicedComponent or a COM+ context created with SWC (Services Without Components - see also &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/florinlazar/archive/2004/07/24/194199.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://blogs.msdn.com/florinlazar/archive/2004/07/24/194199.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt;).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;System.Transactions and TransactionScope has its own ambient transaction in Transaction.Current which is a static property that lives in the current thread local storage. System.Data was updated to be aware of this new ambient transaction. In fact, we did a lot of work to ensure seamless interoperability with System.EnterpriseServices, and now System.Data is only looking at Transaction.Current. Transaction.Current can detect that the transaction was created inside a COM+ context and provide it to anyone asking for the ambient transaction. If you are writing transaction-aware APIs for .Net Framework 2.0, the recommended ambient transaction to query and use is System.Transactions.Transaction.Current.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=409570" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category></item><item><title>XA Transactions in Windows XP SP2</title><link>http://blogs.msdn.com/florinlazar/archive/2004/10/28/xa-transactions-in-windows-xp-sp2.aspx</link><pubDate>Thu, 28 Oct 2004 10:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:248931</guid><dc:creator>florinlazar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/248931.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=248931</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=248931</wfw:comment><description>&lt;P&gt;Service Pack 2 adds to Windows XP the same level of security as in Windows Server 2003 for XA transactions (transactions that are used with XA-compliant resource managers like Oracle, IBM DB/2 etc). See my previous post at &amp;nbsp;&lt;A href="http://blogs.msdn.com/florinlazar/archive/2003/12/04/41370.aspx" mce_href="http://blogs.msdn.com/florinlazar/archive/2003/12/04/41370.aspx"&gt;http://blogs.msdn.com/florinlazar/archive/2003/12/04/41370.aspx&lt;/A&gt; for the more details on how to enable XA transactions after installing XP SP2.&lt;/P&gt;
&lt;P mce_keep="true"&gt;If you are using the default XA dll that COM+ provides, which is named mtxoci.dll, then in Windows XP SP2 you need to follow &lt;A href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;817066" mce_href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;817066"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;817066&lt;/A&gt; and create a registry key entry for the "mtxoci.dll" as you would do for any other XA DLL. It would be something similar to:&lt;/P&gt;
&lt;P mce_keep="true"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\XADLL]&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Key name: mtxoci.dll&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Data: &lt;STRONG&gt;C:\Windows&lt;/STRONG&gt;\system32\mtxoci.dll&lt;/P&gt;
&lt;P mce_keep="true"&gt;Note: Replace the part in bold with your actual path to the %windir% folder.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=248931" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category></item><item><title>Using distributed transactions in .Net 1.x without deriving from ServicedComponent</title><link>http://blogs.msdn.com/florinlazar/archive/2004/07/24/using-distributed-transactions-in-net-1-x-without-deriving-from-servicedcomponent.aspx</link><pubDate>Sat, 24 Jul 2004 11:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:194199</guid><dc:creator>florinlazar</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/194199.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=194199</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=194199</wfw:comment><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The most used feature of System.EnterpriseServices or COM+ is the distributed transaction support. And the automatic transaction programming model in ES using attributes ([Transaction] and [AutoComplete]) is great and nice but (it is always a but!)... you need to inherit from ServicedComponent and the Transaction attribute is only available at class level, and you need to register your component in the COM+ repository and the list can continue.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;If doing this seems overkill to you, because all you need is a distributed transaction to protect your code/actions and you don't care of any of the others ES features (which are great ones nevertheless) then there is a solution for you: System.EnterpriseServices.ServiceDomain. Here is some sample code:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;using System;&lt;BR&gt;using System.EnterpriseServices;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;namespace SDSample&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; class Class1&lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [MTAThread]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceConfig config = new ServiceConfig(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.Transaction = TransactionOption.Required; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceDomain.Enter(config);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyTxCode(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // we got an exception&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(e.Message);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // so, we should abort the transaction&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextUtil.SetAbort();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceDomain.Leave(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The code that I want to be transactional&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void MyTxCode() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(ContextUtil.TransactionId);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Open connection to database 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute update in database 1&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Open connection to database 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute update in database 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Of course, you can go further and create a helper class, let’s call it ESTransactionScope (similar to &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/florinlazar/archive/2004/07/23/192239.aspx" mce_href="http://blogs.msdn.com/florinlazar/archive/2004/07/23/192239.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;System.Transactions.TransactionScope&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; that will arrive in Whidbey) that will be very easy to use:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;using System;&lt;BR&gt;using System.EnterpriseServices;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;namespace SDSample2&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; class Class1&lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [MTAThread]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using( ESTransactionScope ts = new ESTransactionScope())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyTxCode();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Everything went well, no exception thrown&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // so let’s vote for Commit&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.Complete();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void MyTxCode() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(ContextUtil.TransactionId);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Open connection to database 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute update in database 1&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Open connection to database 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute update in database 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; // Used to create transactional code blocks&lt;BR&gt;&amp;nbsp;&amp;nbsp; class ESTransactionScope : IDisposable&lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Dispose must be called to exit the transactional block&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(this.EnterSucceeded)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!this.Consistent)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextUtil.SetAbort();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceDomain.Leave();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // by calling this method, you mark the scope as being consistent&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // and ready to for commit&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if the method is never called, upon dispose, the scope will abort the transaction &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Complete()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Consistent = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ESTransactionScope()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnterTxContext(TransactionOption.Required);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ESTransactionScope(TransactionOption txOption)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnterTxContext(txOption);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void EnterTxContext(TransactionOption txOption)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceConfig config = new ServiceConfig(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.Transaction = txOption; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceDomain.Enter(config);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Since Enter can throw, the next statement will track the success&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // In the case of success will we need to call Leave in Dispose&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.EnterSucceeded = true;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // By default, the scope is inconsistent;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // To Commit the transaction on exit, the Consistent flag &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // must be set to true before Dispose is called&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool Consistent = false;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enter can throw, so we need to know if we need to call Leave in Dispose&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool EnterSucceeded = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;System.EnterpriseServices.ServiceDomain is available only on XP SP2 (or higher) and Windows Server 2003 and only in .Net 1.1.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;If you need your app to work with .Net 1.0 or on Windows 2000 or XP pre-SP2, you can use the trick that Don Box posted at &lt;/FONT&gt;&lt;A href="http://www.gotdotnet.com/team/dbox/default.aspx?key=2004-07-12T08:40:44Z" mce_href="http://www.gotdotnet.com/team/dbox/default.aspx?key=2004-07-12T08:40:44Z"&gt;&lt;FONT face=Tahoma size=2&gt;http://www.gotdotnet.com/team/dbox/default.aspx?key=2004-07-12T08:40:44Z&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp; It uses exactly one transactional ServicedComponent based class and a DoCallback method to which you pass the delegate to your MyTxCode function that needs to execute in a transaction.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=194199" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category></item><item><title>.NET Enterprise Services Performance</title><link>http://blogs.msdn.com/florinlazar/archive/2004/07/19/187988.aspx</link><pubDate>Tue, 20 Jul 2004 01:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:187988</guid><dc:creator>florinlazar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/187988.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=187988</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=187988</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT face=Tahoma size=2&gt;Compare the performance of native COM+ and &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:mswterms w:st="on"&gt;.Net&lt;/st1:mswterms&gt; Enterprise Services components and read some guidelines on how to get your EnterpriseServices to run faster at: &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomser/html/entsvcperf.asp?frame=true"&gt;&lt;FONT face=Tahoma size=2&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomser/html/entsvcperf.asp?frame=true&lt;/FONT&gt;&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=187988" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category></item><item><title>XP SP2 and Transactions</title><link>http://blogs.msdn.com/florinlazar/archive/2004/06/18/159127.aspx</link><pubDate>Fri, 18 Jun 2004 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:159127</guid><dc:creator>florinlazar</dc:creator><slash:comments>54</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/159127.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=159127</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=159127</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT face=Tahoma size=2&gt;The preview (RC2) of &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:mswterms w:st="on"&gt;Windows XP&lt;/st1:mswterms&gt; Service Pack 2 is available for download at &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/sp2preview.mspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/sp2preview.mspx&lt;/FONT&gt;&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT face=Tahoma size=2&gt;The general info about it can be found at &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/security/productinfo/XPSP2/default.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://msdn.microsoft.com/security/productinfo/XPSP2/default.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; and &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2chngs.mspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2chngs.mspx&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;FONT face=Tahoma size=2&gt;More info about the changes in MSDTC&amp;nbsp;is also available at &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2otech.mspx#EBAA"&gt;&lt;FONT face=Tahoma size=2&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2otech.mspx#EBAA&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;FONT face=Tahoma size=2&gt;and &lt;/FONT&gt;&lt;A href="http://support.microsoft.com/?id=899191"&gt;&lt;FONT face=Tahoma size=2&gt;http://support.microsoft.com/?id=899191&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt;In this post I will&amp;nbsp;cover what changes are introduced in this SP for distributed transactions, what is the impact on your applications and how can you re-enable your scenarios.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt;When you install XP SP2, all network MSDTC transactions will be disabled, even if network transactions had been previously enabled. This means that if you are using COM+ or Enterprise Services (or simple OleTx clients and resource managers) to flow transactions from or into the box, you will need to follow the steps defined below to re-enable your scenarios.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt;The first step is to enable network transactions in the Security Configuration dialog for MSDTC. To do this, open Control Panel\Administrative Tools\Component Services. Then select Component Services\Computer\My Computer, right-click and choose Properties. On the MSDTC tab, press "&lt;B style="mso-bidi-font-weight: normal"&gt;Security Configuration&lt;/B&gt;..." button and then select what you need. You will notice that the old checkbox “&lt;B style="mso-bidi-font-weight: normal"&gt;Network Transactions&lt;/B&gt;” has been replaced with a new group of settings named “&lt;B style="mso-bidi-font-weight: normal"&gt;Transaction Manager Communication&lt;/B&gt;”. This group contains two new checkboxes and 3 radio buttons, defined below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt;“&lt;B style="mso-bidi-font-weight: normal"&gt;Allow Inbound&lt;/B&gt;” when enabled will allow a remote computer to flow transactions to the local computer; this is typically needed on the box hosting the MSDTC for a resource manager like Microsoft &lt;st1:mswterms w:st="on"&gt;SQL Server&lt;/st1:mswterms&gt;. When enabled, “&lt;B style="mso-bidi-font-weight: normal"&gt;Allow Outbound&lt;/B&gt;” will allow the local computer to flow transactions to a remote computer; this is typically needed on the “client” box, where the transaction is initiated. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT face=Tahoma size=2&gt;When “&lt;B style="mso-bidi-font-weight: normal"&gt;Mutual Authentication Required&lt;/B&gt;” is selected, the local MSDTC (proxy or service) will communicate with a remote MSDTC service using only encrypted messages and mutual authentication (Windows Domain authentication). If a secure communication cannot be established with the remote system, the communication will be denied. “&lt;B style="mso-bidi-font-weight: normal"&gt;Incoming Caller Authentication Required&lt;/B&gt;” means that if mutual authentication cannot be established, but the incoming caller can be authenticated, then the communication will be allowed. Currently only Windows 2003 Server and XP SP2 support the first two options. “&lt;B style="mso-bidi-font-weight: normal"&gt;No Authentication Required&lt;/B&gt;” means that the MSDTC communication on the network can fallback to a non authenticated and non encrypted communication if the attempts to start a secure communication will fail. The “no authentication required” option is for compat communications with previous OSes (W2K, XP RTM and XP SP1); this setting needs also to be used when the computers involved are located in two untrusted Windows domains or in a Windows workgroup. If your XP SP2 box is talking to a Windows 2003 system that has disabled it’s RPC security for MSDTC (using &lt;B style="mso-bidi-font-weight: normal"&gt;TurnOffRpcSecurity&lt;/B&gt; registry key - see &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/florinlazar/archive/2004/03/02/82916.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;http://blogs.msdn.com/florinlazar/archive/2004/03/02/82916.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt; for more info), then you will need to use this third option on the XP SP2 box to enable network transactions between the two systems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt;The second step in enabling network transactions is related to the firewall. By default, after installing XP SP2, the &lt;B style="mso-bidi-font-weight: normal"&gt;Windows Firewall&lt;/B&gt; will be on. To enable network transactions through the firewall, you will need to add the msdtc.exe to the exception list of the firewall on all the machines involved in the transactions. You can do this using the UI in Control Panel\Windows Firewall or you can use this command: “netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT face=Tahoma size=2&gt;Another configuration setting that you need to be aware (although I consider it to be an uncommon scenario) is &lt;B&gt;RestrictRemoteClients&lt;/B&gt; registry key. If the value of this key is set to 2 (RPC_RESTRICT_REMOTE_CLIENT_HIGH) then MSDTC network transactions will not be able to work properly. MSDTC supports only RPC_RESTRICT_REMOTE_CLIENT_NONE (0) and RPC_RESTRICT_REMOTE_CLIENT_DEFAULT (1) values. See &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx#XSLTsection128121120120"&gt;&lt;FONT face=Tahoma size=2&gt;http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx#XSLTsection128121120120&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt; for more info on RestrictRemoteClients.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;FONT face=Tahoma size=2&gt;I recommend and I encourage you to give a try to this release candidate for XP SP2 on your test systems and send your feedback to the XP SP2 preview newsgroups: &lt;/FONT&gt;&lt;A href="http://communities.microsoft.com/newsgroups/default.asp?icp=xpsp2&amp;amp;slcid=us"&gt;&lt;FONT face=Tahoma size=2&gt;http://communities.microsoft.com/newsgroups/default.asp?icp=xpsp2&amp;amp;slcid=us&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;FONT face=Tahoma&gt; . Thanks!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma size=2&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;FONT face="Courier New" size=1&gt;[Updated Sep 20, 2004]&lt;/FONT&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=159127" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category></item><item><title>What is MSDTC and why do I need to care about it?</title><link>http://blogs.msdn.com/florinlazar/archive/2004/03/04/what-is-msdtc-and-why-do-i-need-to-care-about-it.aspx</link><pubDate>Fri, 05 Mar 2004 04:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:84199</guid><dc:creator>florinlazar</dc:creator><slash:comments>34</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/84199.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=84199</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=84199</wfw:comment><description>&lt;P&gt;I've been talking for a while about MSDTC and transactions without explaining them. I know many of you reading this blog already know the terms, but some of the developers just entering the enterprise space don't know if they should care or not about these subjects.&lt;/P&gt;
&lt;P mce_keep="true"&gt;MSDTC is an acronym for Microsoft Distributed Transaction Coordinator. As the name says, MSDTC is a Windows service providing transaction infrastructure for distributed systems. In this case, a transaction means a general way of structuring the interactions between autonomous agents in a distributed system. Each transaction is a state transformation with four key properties - the ACID properties: Atomic (all or nothing), Consistent (legal), Isolated (independent of concurrent transactions) and Durable (once it happens, it cannot be abrogated). There are different techniques that implement the ACID properties but the most known one is two-phase commit. &lt;/P&gt;
&lt;P mce_keep="true"&gt;In other words, transaction processing is a software technology that makes distributed computing reliable. You can see a transaction as a unit of work in which a series of operations occur. The transaction (with its ACID properties) is providing protection in the case when one or more of these operations fail at any point in time. By using transactions, you can vastly simplify the error recovery for your system.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The main actors in a transaction are: the transaction manager (MSDTC), the initiator (the application which started the transaction) and the resource managers (the entities that manage data and work). The flow of actions in a simplified form is: &lt;/P&gt;
&lt;P&gt;1. The client application (the initiator) begins a transaction by requesting one from the transaction manager; &lt;/P&gt;
&lt;P&gt;2. The client app asks the resource managers to do work as part of the same transaction; during this step, the resource managers register with the transaction manager for that transaction ("they enlist");&lt;/P&gt;
&lt;P&gt;3. The client app commits the transaction; &lt;/P&gt;
&lt;P&gt;4. The transaction manager coordinates with the resource managers to ensure that all succeed to do the requested work or none of the work if done, thus maintaining the ACID properties. &lt;/P&gt;
&lt;P mce_keep="true"&gt;The main transactions standard currently supported by MSDTC is the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgdtc_dev_60bw.asp?frame=true" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgdtc_dev_60bw.asp?frame=true"&gt;OLE Transactions&lt;/A&gt; (or OleTx). MSDTC is also supporting other standards like XA (or X/Open Distributed Transaction Processing Standard) and TIP (&lt;A href="http://www.ietf.org/rfc/rfc2371.txt" mce_href="http://www.ietf.org/rfc/rfc2371.txt"&gt;Transaction Internet Protocol&lt;/A&gt;). In the future MSDTC will support &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/wsatspecindex.asp?frame=true" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/wsatspecindex.asp?frame=true"&gt;WS-Coordination, WS-AtomicTransaction, and WS-BusinessActivity&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;You can read more about MSDTC at &lt;A href="http://msdn.microsoft.com/library/?url=/library/en-us/cossdk/htm/dtc_toplevel_6vjm.asp?frame=true" mce_href="http://msdn.microsoft.com/library/?url=/library/en-us/cossdk/htm/dtc_toplevel_6vjm.asp?frame=true"&gt;http://msdn.microsoft.com/library/?url=/library/en-us/cossdk/htm/dtc_toplevel_6vjm.asp?frame=true&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;If you are developing COM+ or System.EnterpriseServices components and you are using the Transaction service then you are indirectly using MSDTC. The COM+ infrastructure is hiding all the details from you so you can focus on your business needs instead of implementation details. If you need to bypass COM+ and talk directly to MSDTC you can do it using the &lt;A href="http://msdn.microsoft.com/library/?url=/library/en-us/cossdk/htm/dtcprogreftoplevel_9kit.asp?frame=true" mce_href="http://msdn.microsoft.com/library/?url=/library/en-us/cossdk/htm/dtcprogreftoplevel_9kit.asp?frame=true"&gt;MSDTC proxy (msdtcprx.dll)&lt;/A&gt;. For now, to directly access MSDTC from .Net apps you need to use COM Interop. For future apps, please refer to my previous post about &lt;A href="http://blogs.msdn.com/florinlazar/archive/2004/02/01/65987.aspx" mce_href="http://blogs.msdn.com/florinlazar/archive/2004/02/01/65987.aspx"&gt;.Net and Transactions&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=84199" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category></item><item><title>Where to find answers to your questions</title><link>http://blogs.msdn.com/florinlazar/archive/2004/02/10/70539.aspx</link><pubDate>Tue, 10 Feb 2004 13:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:70539</guid><dc:creator>florinlazar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/70539.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=70539</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=70539</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Georgia size=2&gt;These are the newsgroups you should use when looking for answers related to COM+, Enterprise Services or MSDTC: &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.platformsdk.complus_mts&amp;amp;lang=en&amp;amp;cr=US"&gt;&lt;FONT face=Georgia size=2&gt;microsoft.public.platformsdk.complus_mts&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia size=2&gt; and &lt;/FONT&gt;&lt;A href="http://communities2.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.dotnet.framework.component_services&amp;amp;lang=en&amp;amp;cr=US"&gt;&lt;FONT face=Georgia size=2&gt;microsoft.public.dotnet.framework.component_services&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;FONT face=Georgia&gt;. &lt;/FONT&gt;&lt;FONT face=Georgia&gt;For Indigo answers, use &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.windows.developer.winfx.indigo&amp;amp;lang=en&amp;amp;cr=US"&gt;&lt;FONT face=Georgia size=2&gt;microsoft.public.windows.developer.winfx.indigo&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Georgia&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Georgia&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Georgia&gt;&lt;FONT size=2&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;[Update March 30, 2005] We now have a dedicated forum for transactions technologies at &lt;A href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=388&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=388&amp;amp;SiteID=1&lt;/A&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=70539" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/COM_2B00_/default.aspx">COM+</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Isolation Levels</title><link>http://blogs.msdn.com/florinlazar/archive/2003/12/10/42686.aspx</link><pubDate>Thu, 11 Dec 2003 03:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:42686</guid><dc:creator>florinlazar</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/42686.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=42686</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=42686</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Georgia"&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/itransactiondispenser_1esu.asp"&gt;&lt;FONT size=2&gt;MSDTC&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgservices_transactions_654j.asp?frame=true"&gt;&lt;FONT size=2&gt;COM+&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; or &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystementerpriseservicestransactionattributememberstopic.asp"&gt;&lt;FONT size=2&gt;EnterpriseServices&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&amp;nbsp;are allowing you to specify an isolation level for transactions so that you can increase concurrency to improve performance and scalability. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Georgia"&gt;&lt;FONT size=2&gt;But, the value you set for the isolation level is used by MSDTC only to pass it to the resource manager(s), more like a &lt;I style="mso-bidi-font-style: normal"&gt;hint&lt;/I&gt; rather than a restriction. It is the responsibility of the resource manager to use this isolation level accordingly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Georgia"&gt;&lt;o:p&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Georgia"&gt;&lt;FONT size=2&gt;The MSDTC transaction will always carry the same isolation level which is the one that was initially specified when the transaction was created. It cannot be changed later. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Georgia"&gt;&lt;FONT size=2&gt;Some resource managers allow you to change the isolation level. For instance, the isolation level that SQL Server is using on a connection can be changed using "SET TRANSACTION ISOLATION LEVEL". Changing the isolation level at statement level inside SQL Server or any other resource manager is invisible to MSDTC. This is why mixing MSDTC transaction isolation levels with&amp;nbsp;resource manager&amp;nbsp;statement level isolation levels is not recommended.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=42686" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category></item><item><title>Enable Network DTC Access in Windows Server 2003</title><link>http://blogs.msdn.com/florinlazar/archive/2003/12/04/enable-network-dtc-access-in-windows-server-2003.aspx</link><pubDate>Fri, 05 Dec 2003 04:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:41371</guid><dc:creator>florinlazar</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/florinlazar/comments/41371.aspx</comments><wfw:commentRss>http://blogs.msdn.com/florinlazar/commentrss.aspx?PostID=41371</wfw:commentRss><wfw:comment>http://blogs.msdn.com/florinlazar/rsscomments.aspx?PostID=41371</wfw:comment><description>&lt;P&gt;When you install Windows Server 2003, most of the services will be off by default, including MSDTC network access. If you are using COM+/Enterprise Services and [Transactions], you are most likely to hit errors when you want to go distributed: flow transactions to another computer, talk to a resource manager as SQL server on another machine etc. To enable your distributed scenarios you need to enable MSDTC network transactions. &lt;/P&gt;
&lt;P&gt;One way to do it is to follow the steps in this KB article: &lt;A href="http://support.microsoft.com/default.aspx?scid=kb;en-us;817064" mce_href="http://support.microsoft.com/default.aspx?scid=kb;en-us;817064"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;817064&lt;/A&gt;. But if you like being in control, you can use Control Panel\Administrative Tools\Component Services. Then select Component Services\Computer\My Computer, right-click and choose Properties. On the MSDTC tab, press "Security Configuration..." button and then carefully select only what you need. For instance to flow transactions to another machine you only need to enable "Network DTC Access\Network Transactions". You can do the same thing programmatically using &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/idtcnetworkaccessconfig_93tz.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/idtcnetworkaccessconfig_93tz.asp"&gt;IDtcNetworkAccessConfig&lt;/A&gt; implemented by the transaction object of the DTC proxy.&lt;/P&gt;
&lt;P&gt;Windows Server 2003 is opening a new trend that we all need to get used to. It is not anymore "if I don't need it, I should probably disable it"; now it is "if I need it, I have to enable it". &lt;/P&gt;
&lt;P&gt;[Originally posted Oct 21, 2003]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=41371" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/florinlazar/archive/tags/MSDTC/default.aspx">MSDTC</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Enterprise+Services/default.aspx">Enterprise Services</category><category domain="http://blogs.msdn.com/florinlazar/archive/tags/Transactions/default.aspx">Transactions</category></item></channel></rss>