<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>High Performance Enterprise Library by FishDawg</title><link>http://www.codeplex.com/enterprise/Project/ProjectRss.aspx</link><description>This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide ...</description><item><title>Project License Changed</title><link>http://www.codeplex.com/enterprise/license?LicenseHistoryId=13190</link><description>Copyright &amp;#40;c&amp;#41; 2008, FishDawg LLC&amp;#10;All rights reserved.&amp;#10;&amp;#10;Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met&amp;#58;&amp;#10;&amp;#10;&amp;#42; All redistribution and use must be limited to personal, non-commercial, internal business, evaluation, academic, and research purposes. Use of this software is not permitted in products and services made available to customers and primarily intended for commercial advantage or private monetary compensation without specific prior written permission.&amp;#10;&amp;#10;&amp;#42; Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.&amp;#10;&amp;#10;&amp;#42; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and&amp;#47;or other materials provided with the distribution.&amp;#10;&amp;#10;&amp;#42; Neither the name of FishDawg LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.&amp;#10;&amp;#10;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES &amp;#40;INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES&amp;#59; LOSS OF USE, DATA, OR PROFITS&amp;#59; OR BUSINESS INTERRUPTION&amp;#41; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT &amp;#40;INCLUDING NEGLIGENCE OR OTHERWISE&amp;#41; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</description><author></author><pubDate>Mon, 07 Jul 2008 23:35:47 GMT</pubDate><guid isPermaLink="false">Project License Changed 20080707113547P</guid></item><item><title>Project License Changed</title><link>http://www.codeplex.com/enterprise/license?LicenseHistoryId=13189</link><description>Copyright &amp;#40;c&amp;#41; 2008, FishDawg LLC&amp;#10;All rights reserved.&amp;#10;&amp;#10;Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met&amp;#58;&amp;#10;&amp;#10;&amp;#42; All redistribution and use must be limited to personal, non-commercial, internal business, evaluation, academic, and research purposes. Use of this software is not permitted in products and services made available to customers and primarily intended for commercial advantage or private monetary compensation without specific prior written permission.&amp;#10;&amp;#10;&amp;#42; Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.&amp;#10;&amp;#10;&amp;#42; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and&amp;#47;or other materials provided with the distribution.&amp;#10;&amp;#10;&amp;#42; Neither the name of FishDawg LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.&amp;#10;&amp;#10;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES &amp;#40;INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES&amp;#59; LOSS OF USE, DATA, OR PROFITS&amp;#59; OR BUSINESS INTERRUPTION&amp;#41; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT &amp;#40;INCLUDING NEGLIGENCE OR OTHERWISE&amp;#41; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</description><author></author><pubDate>Mon, 07 Jul 2008 23:34:20 GMT</pubDate><guid isPermaLink="false">Project License Changed 20080707113420P</guid></item><item><title>Project License Changed</title><link>http://www.codeplex.com/enterprise/license?LicenseHistoryId=13187</link><description>Copyright &amp;#40;c&amp;#41; 2008, FishDawg LLC&amp;#10;All rights reserved.&amp;#10;&amp;#10;Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met&amp;#58;&amp;#10;&amp;#10;&amp;#42; All redistribution and use must be limited to personal, non-commercial, internal business, evaluation, academic, and research purposes. Use in products and services made available to customers and primarily intended for commercial advantage or private monetary compensation is not permitted by this license.&amp;#10;&amp;#10;&amp;#42; Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.&amp;#10;&amp;#10;&amp;#42; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and&amp;#47;or other materials provided with the distribution.&amp;#10;&amp;#10;&amp;#42; Neither the name of FishDawg LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.&amp;#10;&amp;#10;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES &amp;#40;INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES&amp;#59; LOSS OF USE, DATA, OR PROFITS&amp;#59; OR BUSINESS INTERRUPTION&amp;#41; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT &amp;#40;INCLUDING NEGLIGENCE OR OTHERWISE&amp;#41; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&amp;#10;</description><author></author><pubDate>Mon, 07 Jul 2008 23:15:44 GMT</pubDate><guid isPermaLink="false">Project License Changed 20080707111544P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=20</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, taking advantage of I/O completion ports, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
&lt;/pre&gt; &lt;br /&gt;&lt;pre&gt;
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction with automatic 
  // retries (of up to a maximum of 3 tries by default) when a SqlException gets thrown.
  using (Operation operation = new ParallelOperation(
      new RetryOperation(new TransactionOperation(new SqlNonQueryOperation(command1), TransactionOption.CreateNew), typeof(SqlException)),
      new RetryOperation(new TransactionOperation(new SqlNonQueryOperation(command2), TransactionOption.CreateNew), typeof(SqlException)),
      new RetryOperation(new TransactionOperation(new SqlNonQueryOperation(command3), TransactionOption.CreateNew), typeof(SqlException))
    ))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;pre&gt;
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction (which participates 
  // in the ambient transaction if one exists) with a timeout of 20 seconds and the read committed isolation level.
  using (Operation operation = new TransactionOperation(new ParallelOperation(
      new SqlNonQueryOperation(command1),
      new SqlNonQueryOperation(command2),
      new SqlNonQueryOperation(command3)
    ), TransactionOption.Create, TimeSpan.FromSeconds(20.0), IsolationLevel.ReadCommitted))
  {
    // Execute the operation synchronously.
    operation.Execute();
  }
}
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Releases
&lt;/h2&gt;Please note that the first version of the framework is under active development at this time. No download is available yet.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Library Usage
&lt;/h2&gt;The project's default license is a modified form the BSD permissive free software license. For non-commercial, internal business, evaluation, academic, and research purposes, you may freely use the library, its source code, and its documentation in your project. For other purposes, such as commercial applications used directly by your customers, you can obtain a commercial license by contacting the project coordinator. We encourage everyone to contribute to the project by posting lots of feature requests, bug reports, and code enhancements.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Thu, 26 Jun 2008 05:16:42 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080626051642A</guid></item><item><title>UPDATED RELEASE: 1.0 (Aug. 2008)</title><link>http://www.codeplex.com/enterprise/Release/ProjectReleases.aspx?ReleaseId=14746</link><description>&lt;div&gt;
&lt;b&gt;High Performance Enterprise Library 1.0&lt;/b&gt;&lt;br&gt;The first release of the library focuses on providing the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant.&lt;br&gt; &lt;br&gt;Feature List:&lt;br&gt;&lt;ol&gt;
&lt;li&gt;Operations Framework: Automatic Retries, Parallel Execution, Flexible Transactions.&lt;/li&gt;&lt;li&gt;Operations Framework: SqlClient Commands (DataReader/NonQuery/Scalar).&lt;/li&gt;&lt;li&gt;Operations Framework: Stream Copying.&lt;/li&gt;&lt;li&gt;Transaction Contexts (Committable/Dependent/Suppressed/Empty).&lt;/li&gt;&lt;li&gt;Threading Classes.&lt;/li&gt;&lt;li&gt;Unit Tests (extensive testing includes 99% code coverage, performance tests, and scenario tests).&lt;/li&gt;
&lt;/ol&gt; &lt;br&gt;Schedule:&lt;br&gt; &lt;br&gt;08/2007 Design Complete (status: Done)&lt;br&gt;02/2008 Code Complete (status: Done)&lt;br&gt;06/2008 Test Complete (status: Done)&lt;br&gt;08/2008 Final Release (status: In Progress)&lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Thu, 26 Jun 2008 05:07:22 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: 1.0 (Aug. 2008) 20080626050722A</guid></item><item><title>UPDATED RELEASE: High Performance Enterprise Library 1.0</title><link>http://www.codeplex.com/enterprise/Release/ProjectReleases.aspx?ReleaseId=14746</link><description>&lt;div&gt;
&lt;b&gt;High Performance Enterprise Library 1.0&lt;/b&gt;&lt;br&gt;The first release of the library focuses on providing the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant.&lt;br&gt; &lt;br&gt;Feature List:&lt;br&gt;&lt;ol&gt;
&lt;li&gt;Operations Framework: Automatic Retries, Parallel Execution, Flexible Transactions.&lt;/li&gt;&lt;li&gt;Operations Framework: SqlClient Commands (DataReader/NonQuery/Scalar).&lt;/li&gt;&lt;li&gt;Operations Framework: Stream Copying.&lt;/li&gt;&lt;li&gt;Transaction Contexts (Committable/Dependent/Suppressed/Empty).&lt;/li&gt;&lt;li&gt;Threading Classes.&lt;/li&gt;&lt;li&gt;Unit Tests (extensive testing includes 99% code coverage, performance tests, and scenario tests).&lt;/li&gt;
&lt;/ol&gt; &lt;br&gt;Schedule:&lt;br&gt; &lt;br&gt;08/2007 Design Complete (status: Done)&lt;br&gt;02/2008 Code Complete (status: Done)&lt;br&gt;06/2008 Test Complete (status: Done)&lt;br&gt;08/2008 Final Release (status: In Progress)&lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Thu, 26 Jun 2008 05:05:57 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: High Performance Enterprise Library 1.0 20080626050557A</guid></item><item><title>CREATED RELEASE: Library 1.0</title><link>http://www.codeplex.com/enterprise/Release/ProjectReleases.aspx?ReleaseId=14746</link><description>&lt;div&gt;
&lt;b&gt;High Performance Enterprise Library 1.0&lt;/b&gt;&lt;br&gt;The first release of the library focuses on providing the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant.&lt;br&gt; &lt;br&gt;Feature List:&lt;br&gt;&lt;ol&gt;
&lt;li&gt;Operations Framework: Automatic Retries, Parallel Execution, Flexible Transactions.&lt;/li&gt;&lt;li&gt;Operations Framework: SqlClient Commands (DataReader/NonQuery/Scalar).&lt;/li&gt;&lt;li&gt;Operations Framework: Stream Copying.&lt;/li&gt;&lt;li&gt;Transaction Contexts (Committable/Dependent/Suppressed/Empty).&lt;/li&gt;&lt;li&gt;Threading Classes.&lt;/li&gt;&lt;li&gt;Unit Tests (extensive testing includes 99% code coverage and scenario tests).&lt;/li&gt;
&lt;/ol&gt; &lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Thu, 26 Jun 2008 04:36:43 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: Library 1.0 20080626043643A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=19</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, taking advantage of I/O completion ports, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
&lt;/pre&gt;&lt;pre&gt;
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction with automatic 
  // retries (of up to a maximum of 3 tries by default) when a SqlException gets thrown.
  using (Operation operation = new ParallelOperation(
      new RetryOperation(new TransactionOperation(new SqlNonQueryOperation(command1), TransactionOption.CreateNew), typeof(SqlException)),
      new RetryOperation(new TransactionOperation(new SqlNonQueryOperation(command2), TransactionOption.CreateNew), typeof(SqlException)),
      new RetryOperation(new TransactionOperation(new SqlNonQueryOperation(command3), TransactionOption.CreateNew), typeof(SqlException))
    ))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
  }
}
&lt;/pre&gt;&lt;pre&gt;
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction (which participates 
  // in the ambient transaction if one exists) with a timeout of 20 seconds and the read committed isolation level.
  using (Operation operation = new TransactionOperation(new ParallelOperation(
      new SqlNonQueryOperation(command1),
      new SqlNonQueryOperation(command2),
      new SqlNonQueryOperation(command3)
    ), TransactionOption.Create, TimeSpan.FromSeconds(20.0), IsolationLevel.ReadCommitted))
  {
    // Execute the operation synchronously.
    operation.Execute();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Releases
&lt;/h2&gt;Please note that the first version of the framework is under active development at this time. No download is available yet.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Library Usage
&lt;/h2&gt;The project's default license is a modified form the BSD permissive free software license limited to non-commercial, internal business, evaluation, academic, and research purposes. For these purposes, you may freely use the library, its source code, and its documentation in your projects in accordance with the license. For other purposes, such as commercial applications used directly by your customers, you can obtain a commercial license by contacting the project coordinator. We encourage everyone to contribute to the project by posting lots of feature requests, bug reports, and code changes.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Sun, 27 Apr 2008 01:51:34 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080427015134A</guid></item><item><title>Project License Changed</title><link>http://www.codeplex.com/enterprise/license?LicenseHistoryId=8261</link><description>Copyright &amp;#40;c&amp;#41; 2008 FishDawg LLC&amp;#13;&amp;#10;&amp;#13;&amp;#10;Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files &amp;#40;the &amp;#34;Software&amp;#34;&amp;#41;, to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and&amp;#47;or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions&amp;#58;&amp;#13;&amp;#10;&amp;#13;&amp;#10;The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.&amp;#13;&amp;#10;&amp;#13;&amp;#10;THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</description><author></author><pubDate>Sat, 19 Jan 2008 08:32:05 GMT</pubDate><guid isPermaLink="false">Project License Changed 20080119083205A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=18</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, taking advantage of I/O completion ports, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
&lt;/pre&gt;&lt;pre&gt;
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1), TransactionScopeOption.RequiresNew)),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2), TransactionScopeOption.RequiresNew)),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3), TransactionScopeOption.RequiresNew))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
&lt;/pre&gt;&lt;pre&gt;
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (which participates in the ambient transaction if one exists) with a timeout of 20 seconds.
  using (Operation operation = new TransactionOperation(new ParallelOperation(new Operation[] {
      new SqlNonQueryOperation(command1),
      new SqlNonQueryOperation(command2),
      new SqlNonQueryOperation(command3)
    }), TransactionScopeOption.Required, TimeSpan.FromSeconds(20.0)))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Releases
&lt;/h3&gt;Please note that the first version of the framework is under active development at this time. No download is available yet.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance with the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Fri, 11 Jan 2008 22:02:48 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080111100248P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=17</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, taking advantage of I/O completion ports, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
&lt;/pre&gt;&lt;pre&gt;
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
&lt;/pre&gt;&lt;pre&gt;
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance with the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Thu, 13 Dec 2007 09:17:10 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20071213091710A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, taking advantage of I/O completion ports, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
&lt;/pre&gt;&lt;pre&gt;
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
&lt;/pre&gt;&lt;pre&gt;
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Wed, 05 Dec 2007 19:09:02 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20071205070902P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, taking advantage of I/O completion ports, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
 
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
 
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Fri, 28 Sep 2007 17:30:37 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070928053037P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=14</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions. As demonstrated in the following examples, these capabilities are highly useful when communicating with a database such as SQL Server.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
 
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
 
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Tue, 25 Sep 2007 16:14:32 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070925041432P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=...;Database=...;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
 
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
 
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Tue, 25 Sep 2007 07:32:35 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070925073235A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=Localhost;Database=MyDatabase;Integrated Security=True;MultipleActiveResultSets=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
 
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
 
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Tue, 25 Sep 2007 07:31:10 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070925073110A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=11</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications to help support their high performance and reliability requirements. The focus of the Enterprise Library is to provide simple and robust mechanisms that take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The first major component of the library is the Operations Framework. The Operations Framework provides flexible and efficient support for asynchronous operations that can fully utilize the power of computers with multiple processors and make I&amp;#47;O operations much faster.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains the Operations Framework, which is designed to make working with asynchronous tasks simple, robust, and performant. The operation classes are easy to integrate into your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;These examples show how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
// Create 3 SQL commands.
const string connectionString = &amp;quot;Server=Localhost;Database=MyDatabase;Integrated Security=True;Asynchronous Processing=True&amp;quot;;
const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
 
private static void Example1()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, each in a local transaction, 
  // and with automatic retries (with up to 3 tries by default) in case any SqlException gets thrown.
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Supress))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command1))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command2))),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new TransactionOperation(new SqlNonQueryOperation(command3)))
    }))
  {
    // Execute the operation asynchronously (omitting the callback delegate for demonstration purposes only)
    IAsyncResult asyncResult = operation.BeginExecute(null, null);
    operation.EndExecute(asyncResult);
 
    scope.Complete();
  }
}
 
private static void Example2()
{
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a distributed transaction 
  // (with a timeout of 20 seconds for each local transaction).
  using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
  using (Operation operation = new ParallelOperation(new Operation[] {
      new TransactionOperation(new SqlNonQueryOperation(command1), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command2), TimeSpan.FromSeconds(20.0)),
      new TransactionOperation(new SqlNonQueryOperation(command3), TimeSpan.FromSeconds(20.0))
    })))
  {
    // Execute the operation synchronously.
    operation.Execute();
 
    scope.Complete();
  }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, the library is released under a permissive free software license. We encourage you to contribute to the project by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Tue, 25 Sep 2007 07:30:15 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070925073015A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/enterprise/Wiki/View.aspx?title=Home&amp;version=10</link><description>&lt;div class="wikidoc"&gt;
This .Net class library is designed to integrate into enterprise applications that have high performance and reliability requirements. The focus of the Enterprise Library is to make it easy and safe to take full advantage of the amazing capabilities already in the .Net Framework and extend those capabilities to support the needs of enterprise applications. The library includes an Operations Framework, which provides flexible and efficient support for asynchronous operations to allow your code to fully utilize the power of computers with multiple processors.
&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Operations Framework
&lt;/h3&gt;The library contains an Operations Framework that is designed to make working with asynchronous tasks easier, safer, and more performant. The operation classes are simple and efficient to use in your code. They help you avoid common mistakes in your code by releasing resources automatically at the right times (including closing database connections), synchronizing work done on multiple threads efficiently, and handling critical exceptions correctly (including OutOfMemory, StackOverflow, and ThreadAbort). They make the most of the .Net Framework by leveraging the power of the thread pool, ADO.Net connection pool, and timers. They help you solve common problems by including support for customizable automatic retries, efficient parallel execution, and flexible transactions.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Code Example
&lt;/h4&gt;This example shows how easy it is to create highly efficient and reliable code to execute several database commands.&lt;br /&gt;&lt;pre&gt;
using FishDawg.EnterpriseLibrary.Operations;
 
private static void MyMethod()
{
  // Create 3 SQL commands.
  const string connectionString = &amp;quot;Server=Localhost;Database=MyDatabase;Integrated Security=True;Asynchronous Processing=True&amp;quot;;
  const string commandText1 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (111, N'AAA');&amp;quot;;
  SqlCommand command1 = new SqlCommand(commandText1, new SqlConnection(connectionString));
  const string commandText2 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (222, N'BBB');&amp;quot;;
  SqlCommand command2 = new SqlCommand(commandText2, new SqlConnection(connectionString));
  const string commandText3 = &amp;quot;INSERT LogEntry (Code, Message) VALUES (333, N'CCC');&amp;quot;;
  SqlCommand command3 = new SqlCommand(commandText3, new SqlConnection(connectionString));
 
  // Compose together several operation objects to execute the 3 SQL commands in parallel, in a transaction (set to a timeout 
  // of 20 seconds), and with automatic retries (up to 2 times by default) if an exception of type SqlException gets thrown.
  Operation operation = new TransactionOperation(new ParallelOperation(new Operation[] {
      new RetryOperation&amp;lt;SqlException&amp;gt;(new SqlNonQueryOperation(command1)),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new SqlNonQueryOperation(command2)),
      new RetryOperation&amp;lt;SqlException&amp;gt;(new SqlNonQueryOperation(command3))
    }), TimeSpan.FromSeconds(20.0));
 
  // Execute the operation synchronously.
  operation.Execute();
 
  // Execute the operation asynchronously (omitting a callback delegate for simplicity)
  IAsyncResult asyncResult = operation.BeginExecute(null, null);
  operation.EndExecute(asyncResult);
}
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Library Usage
&lt;/h3&gt;To encourage reuse and contribution to this project, it is released under a permissive free software license. We encourage you to contribute by posting feature requests, reporting bugs, and submitting code changes. You may use this library and its source code in your own projects in accordance to the MIT License.&lt;br /&gt;
&lt;/div&gt;</description><author>FishDawg</author><pubDate>Fri, 07 Sep 2007 21:15:31 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070907091531P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/enterprise/SourceControl/ListDownloadableCommits.aspx</link><description>Create 1.0 branch.</description><author>FishDawg</author><pubDate>Sun, 26 Aug 2007 23:10:40 GMT</pubDate><guid isPermaLink="false">Source code checked in 20070826111040P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/enterprise/SourceControl/ListDownloadableCommits.aspx</link><description>Create main branch.</description><author>FishDawg</author><pubDate>Sun, 26 Aug 2007 23:08:37 GMT</pubDate><guid isPermaLink="false">Source code checked in 20070826110837P</guid></item></channel></rss>