One of the coolest new capabilities we're building for Enterprise Library v3 is the Application Block Software Factory. As its name ever-so-subtly suggests, this will be a software factory for building your own application blocks. We'll be including an early drop of this factory in the first preview release of Enterprise Library v3 (soon, I promise!) - but in the meantime this blog is, as always, your best bet for some early details.
First, let me explain why we wanted to include a block factory in Enterprise Library. Right from the start, we built Enterprise Library with the expectation that people would want to extend it - either by building new providers, or by building entire new blocks. But while some types of extensibility are relatively straightforward for developers, things quickly get more and more complex if you want to do things like create strongly typed configuration classes, configuration design assemblies, or your own blocks with factories and provider hierarchies.
In EntLib v1 we included the "Hello World Application Block". While it wasn't hugely popular in enterprise applications (apparently people just aren't building applications that need to provide customized greetings :-), it did serve a useful purpose in providing simple examples showing the common patterns for building your own blocks. In v2 we didn't get time to update the Hello World Application Block, which was a shame as extending Enterprise Library actually got more complex as a result of the decoupling of blocks from configuration and the use of Object Builder. The source of all knowledge on building and extending v2 blocks is Brian's webcasts (here and here), but while the webcasts are a lot fun, it isn't necessarily the best format for helping you do the same.
In the meantime, we've started playing around with software factories, and we think this is a better way of demonstrating and automating routine but sometimes complex tasks when building a particular type of application (or application block, in this case). While the block factory in Enterprise Library won't be quite as in-depth as the standalone software factories, it does follow the same basic approach, and we're pretty excited about the potential for the factory to bring block- and extension-building to the masses.
So what does the factory let you do? This activity diagram shows the key stages to building a block or provider library, and the factory will include one or several recipes to help automate each step:
There are two basic scenarios supported by the factory: creating your own blocks, and creating your own provider libraries. Let's start with the provider library activities. A provider library is an assembly that contains providers for a block that lives somewhere else, for example you may want to create your own assembly with TraceListeners, Filters and Formatters that extend the Logging Application Block.
Now on to building your own application block:
Here's a screenshot showing how some of these recipes will turn up in a solution built with the Application Block template:
Of course, none of this is going to put developers or testers out of work - even with the factory you'll still need to write and test plenty of code. But we're hoping that the factory will make you more productive, make building blocks and providers accessible to more people, and will hopefully result in a lot of weird and wonderful new blocks in the community and in your organization.
As soon as the preview is available, I'll let you know...
"One of the coolest new capabilities in Enterprise Library v3 is the Application Block Software Factory
Sounds great... I have a few ideas of some frameworks we use internally that can fit in an EntLib style app block.
What's the planned date for the first preview and the release?
En la versión 3 de la Enterprise Library, vendrá incorporada una "software factory". Aunque todavía no
Buenas interesantes noticias de nuestros amigos de Patterns and Practices Block Building Made Easy Block
Will you be dogfooding the Application Block Software Factory to create a new block for Enterprise Library as a test to see if it really brings value and meets the needs of developers?
Will this one support Visual Basic? Leaving the last software factory release without Visual Basic support has made my life a living hell.
David - That has definitely been our intent for the Validation Application Block. In reality we've been developing the block and the factory in parallel, so we've only been able to dogfood the factory as the relevant pieces come together. It's likely the factory will get its best workout to help us build the design-time configuration for the balidation block.
Eric - yes we plan to ship a version of the factory that generates VB code. However the most efficient way for us to develop is to work in one language throughout development, and then port it to another language right at the end. So the previews will be C# only, but we should have a VB version available at release.
Are you guys planning to release more documentation for object builder in this V3 version. Also i would like to know when i should go for software factory application block versus to ObjectBuilder.
Tom Hollander beschreibt auf seinem Blog detailiert, wie die neue Application Block Software Factory
Et on continue les nouvelles concernant l'EntLib v3 par ce post de Tom Hollander qui expose une des fonctionnalités
Talk about desperate, this is all too confusing, never work in practice and yet another desperate attempt by the enterprise lib team.
I think a change of product manager would be appropriate at this time!
Après une interruption momentanée de ma participation à la bloggosphère, je profite d’une accalmie passagère