posted on Tuesday, January 25, 2005 8:06 PM
by
davidboschmans
Thoughts on Enterprise Library and its dependencies
Tom Hollander, one of the product managers working for the Microsoft patterns & practices group, started blogging.
As he's currently spending most of his time on Enterprise Library, he asks for your input: how would you like to see dependencies managed in future versions of the enterprise library?
Today all blocks have two dependencies:
- one to the new Configuration Application Block (includes the configuration tool), and
- one to the Common assembly.
Currently these are included in the Enterprise Library package. But once - and I expect pretty soon - Microsoft and the community start to build their own blocks and block libraries, managing the dependencies - allowing updates and versioning of the Config block - should be easy to do. Tom lists a number of ways this could be done:
- Make every new block or block library dependent on Enterprise Library. These blocks and libraries do not include the Configuration Application Block or Common assembly, so they will not work unless you install Enterprise Library first
- Include any dependencies (Config block and Common) with every new block and block library. Enterprise Library is not a prerequisite for any block or library, but it is possible that people will end up with multiple versions of the dependencies installed at once (possibly even different versions)
- Break out the Config block and Common out of Enterprise Library and ship them as a new "Core" library. The next version of Enterprise Library wouldn't include this core functionality. Every block and block library, including Enterprise Library, needs the core to work
- Same as #3, but we ship the core, as a separate MSI, with every deliverable. People can choose to install or not install the core, but they always get it zipped up with every block or library.
I would go for the third solution: breaking them out of Enterprise Library and ship the Configuration Block and Common assembly as a new "Core" library. The major advantages I see are:
- once the "Core-library" has been installed, no reinstall (distribution) is by default needed. Of course, if new functionalities were added a reinstallation/redistribution is necessary.
- the Configuration Block can be (re)used for other (community) projects without using Enterprise Library.
- the Enterpise Library and its contained application blocks can evolve separately from the "Core-Library".
- a loosely coupling between both, will make the building of scenario-specific application blocks (Smart Client & Service-Oriented-Apps) more easy.
- ... Other?
Which would you like to see? Can you think of any other options that may work well? Have you dealt with this issue on any of your own projects or open source projects? Let Tom know!
[Updated January 29th] The lastest release (January 2005) of Microsoft Patterns & Practices Enterprise Library is available for download.