Sometimes, the first person to speak up, and point out a problem, gets to be involved in solving it. I find that cool. (Call me crazy).
Last year, I decided to try to get various folks within Microsoft IT to discuss a naming standard for web services that could be used across the enterprise. My attempt didn't get a lot of notice, and fell pretty silent. However, the issue woke up recently now that we have web services that are starting to deploy, in production, across the enterprise. Folks want their namespaces to be right, because changing the namespace later often means that the client app has to be recompiled (or someone gets to edit the WSDL file).
So, traction is starting to develop. I am hopeful. I'll post progress here...
I've been an architect for a while now, but, as far as being an architect within the walls of Microsoft, today was day one.
Already, I've run into an interesting issue: when it is better to forgo the code of the Enterprise Library and roll your own, vs. using existing code.
Roll your own what? Well, the MS Enterprise Library is a set of source code (in both VB.Net and C#) that provides an infrastructure for business applications. The "blocks" that are provided include: caching, configuration, data access and instrumentation, among others.
I know that many people have downloaded the application blocks. I don't know how many people are using them. I suspect far fewer.
I took a look at the blocks myself, and my first impression: unnecessary complexity. Big time. This is what comes of creating a framework without the business requirements to actually use it. To say that the code has a high "bus" factor is a bit deceptive, because along with the code comes ample documentation that should mitigate the difficulty that will inevitably come from attempt to use them.
On the other hand, the code is there and it works. If you have a project that needs a data access layer, why write a new one when a perfectly workable, and debugged, application block exists for it?
Why indeed. I had a long discussion with a developer today about using these blocks. I will try to recount each of the discussion points:
Please... can someone else come up with any better arguments for NOT using the application blocks in the enterprise library? I'm not seeing one.