Not really news here, but as I dig further into the bowels of Microsofts new technologies it just boggles my mind how poorly it is put together. It’s “small” things, like a scratch on the dashboard of your car, a coffee-stain on the collar of your white shirt, a broken window here and there.
Yesterday I ranted against WPF, and today we can look at WCF, or Windows Communication Foundation as they like to call it. Foundation is a term Microsoft likes to use. It isn’t really a foundation, not technically, or conceptually, but I guess it makes it sound as if it is solid, trustworthy, worth building a castle upon. The truth is that if this a foundation, then Microsoft is in bad shape. To me it looks like randomly dug holes, various things are tossed in there in lieu of concrete – big rocks, bikes, old newspapers etc. It sort of works, but it sure ain’t pretty.
An example is a reliable session in WPF. Well. Just doesn’t work. Microsoft did not have the capability of implementing a periodic ping underneath the covers. No. Every developer in the world who wants to cache the session will need to create a timer and periodically ping the server. When pinging fails, because the server is down, the session enters its faulted state. You can’t really close a session in a faulted state. Nope. You need to TEST if the session is not in the faulted state prior to closing it. Failure to test the state of the channel prior to closing it causes WCF to throw an exception. So at times you see exception handlers INSIDE exception handlers (as closing the channel is usually something you’d do if an exception is thrown during the connection phase).
I think the clever folks have long left Microsoft and gone somewhere else. Microsoft seem to have a hard time understanding that in software development 1+1+1+1 = 0.7, even 10+1+1+1+1 = 0.7 if things are not managed carefully!
UPDATE : Here is another jaded developer