This chapter looked at creating applications using the classes of System.EnterpriseServices and System.Transactions. We first examined transactions, and their importance in maintaining data correctness when multiple simultaneous changes may affect your data. Properly applied, transactions can ensure that even with multiple users editing data, your database always reflects the correct data. We also looked at asynchronous processing using MSMQ and queued components. Many scenarios, such as logging or other “background” processes, are better handled using asynchronous code. Queued components make building these asynchronous handlers much easier.
There are many other aspects of Enterprise Services that we haven’t looked at, including role-based security, object constructors, and more. It is definitely worth investing in a book such as Professional VB.NET Transactions by Matthew Bortniker and James Conrad (Wiley, 2002) for more details on these features.
In addition to creating transactions with the Enterprise Services classes, Visual Basic 2005 adds the System.Transactions namespace. This namespace provides even more ways of implementing transactions in your code. Beyond their use in creating transactions, they can also be used to create your own resource managers: datastores that can participate in transactions.