Taking off the training wheels
A while back I wrote about the potential for misuse of some of the new objects in ADO.NET 2.0. SqlResultsets seemed like the most Dangerous of the bunch. There are still too many people using unparameterized dynamic sql, using SA with no password and all sorts of other horrendous stuff (Option Strict Off = WarCrime) but Microsoft has to progress. I know the whole debate about turning off the hobbyists by adding more complexity but - well, I don't ask the medical field to slow down so I can be a hobbyist, I don't ask the accounting profession to slow it down for me so I don't think it's hypocritical to demand parity. I pay my bills by writing code so my compassion for hobbyists is greatly reduced by that fact.
Anyway, Angel posted a great piece on the misuse potential of some of the new features in ADO.NET 2.0. I doubt you'll find any serious ADO.NET developer that could disagree with a single word that he wrote. The training wheels have to come off sometime and you either need to learn to ride or you're going to fall off (I know, one more metaphor and you'll all barf).
Anync callbacks,while REALLY useful when used correctly are nightmares if used incorrectly. The same holds true outside of the Data Access context so why would it be any different here? Actually, since you are interacting with a server - you can cause an even bigger mess than you could by simply running something in the background of a winforms app.
MARS - I don't even know where to start here. If you don't understand Asynchronous programming you can destroy stuff really easy. This feature, why having a ton of power to really improve the way your app runs also has the power to allow you to make a mess. Let's just suffice to say that if you don't believe in Option Strict, don't believe in using paramaterized queries, or have any other glaringly bad habit, you need to just stay home on MARS day. For everyone else, it's like Manna from Heaven.
I can't believe he left out the ProviderFactories from the list though. I can almost hear the “I wrote this really killer totally generic data access layer but now my app is slow and i'm I can't access the Info_Message event” complaints already.
To that end though, I really hope Microsoft keeps it coming. The ADO.NET team is kicking ass and I hope they keep it up. Sure, I'll fall a few times, so will everyone else. Considering what I have to gain, that's a risk I can live with.