Rough Edges of .NET

Looking around the .NET Framework, I am impressed by what is there already and the amount of effort need to build such a framework.  Great deal of .NET is familiar because its design has been influenced by and stolen from Java.  There is no shame in stealing good designs IMHO.  There are some innovations as well which I am sure Sun will return the favor with by incorporating into Java.  If innovation is the butter of technology, mimicking is the bread.

However, there are some curious holes in .NET like the System.Data classes which I feels is superior to JDBC in some respect yet lacks built-in data provider abstraction classes.  To use a data source, one has to instantiate data provider specific classes like SqlConnection, OdbcConnection, or OracleConnection.

While one could write their own abstraction layer, most .NET programs I have seen chose to be hardwired to specific data provider implementation (typically Microsoft SQL Server).  Given that huge amount of design efforts went into .NET, it's a complete mystery to me why they ignored this obvious shortcoming.

BTW, if you want to avoid hardwiring your program to specific data providers, you might want to look at Brian Ritchie's data provider abstraction layer which he contributed to the Mono project.  I would have designed it a little differently and went a little further like abstracting data provider specific exception classes, but it's good enough to get you started.