Microsoft Enterprise Library
{{Short description|Set of tools and programming libraries for the Microsoft .NET Framework}}
{{Infobox software
| name = Enterprise Library
| caption =
| developer = Microsoft and Community
| latest_release_version = 6.0.1304.0
| latest_release_date = {{Start date and age|df=yes|2013|04|25}}
| latest_preview_version =
| latest_preview_date =
| platform = .NET Framework
| operating_system = Windows 8, Windows 7, Windows Server 2012, Windows Server 2008, and above
| genre = Software Factory
| license = Microsoft Public License {{URL|https://opensource.org/licenses/ms-pl}}
| website = {{URL|http://msdn.microsoft.com/entlib}}
{{URL|http://www.codeplex.com/entlib}}
}}
The Microsoft Enterprise Library is a set of tools and programming libraries for the Microsoft .NET Framework. It provides APIs to facilitate proven practices in core areas of programming including data access, logging, exception handling and others. Enterprise Library is provided as pluggable binaries and source code, which can be freely used and customized by developers for their own purposes. It also ships with test cases and quickstarts.
Benefits
- Improved productivity: Each of the Application Blocks provides several interfaces meant to satisfy common application concerns.
- Configuration-driven design: Many technical decisions about the application behavior can be delayed until configuration time of the application. For instance, if an application does not properly handle an exception, instead of adding another exception handler to the code, an administrator can configure an additional exception handling policy.
- Improved testability: Many application areas can be reconfigured to improve testing of the application in isolation.
- It reduces the work load of the developer.
Application Blocks
Each application block addresses a specific cross-cutting concern and provides highly configurable features, which results in higher developer productivity. The Application Blocks in Enterprise Library are designed to be as agnostic as possible to the application architecture, for example the Logging Application Block may be used equally in a web, smart client or service-oriented application.
Microsoft has produced a number of other deliverables that leverage Enterprise Library Application Blocks,{{cite web |title=Microsoft patterns & practices |url=https://github.com/mspnp |website=GitHub |publisher=Microsoft |access-date=27 November 2020}} including the Web Service Software Factory and Smart Client Software Factory.{{citation needed|date=November 2020}}
Utilities
In addition to the Application Blocks, the standard Microsoft distribution of the Enterprise Library includes:
- Configuration console: to visually add an Application Block to an application's configuration.
- Out-of-proc service for production logging.
Version history
There have been several versions of the Microsoft Enterprise Library:
- Enterprise Library 6.0 (April 2013) - Current
- Enterprise Library 5.0 Windows Azure Integration Pack (Dec 2011) - Current
- Enterprise Library 5.0 Optional Update 1 (May 2011) - Current
- Enterprise Library 5.0 Silverlight Integration Pack (May 2011) - Active
- Enterprise Library 5.0 (April 2010) - Active
- Enterprise Library 4.1 (October 2008) - Deprecated
- Enterprise Library 4.0 (May 2008) - Deprecated
- Enterprise Library 3.1 (May 2007) - Deprecated
- Enterprise Library 3.0 (April 2007) - Deprecated
- Enterprise Library 2.0 (January 2006) - Active/Retired
- Enterprise Library 1.1 (June 2005) - Deprecated
- Enterprise Library 1.0 (January 2005) - Deprecated
= Unity 3.5 Portable Class Library Preview =
Unity is the dependency injection component of Microsoft Enterprise Library, which grew out of the Dependency Injection Application Block. It later became a standalone library{{cite web |last1=Tavares |first1=Chris |title=Forward to Developer's Guide to Dependency Injection Using Unity |url=https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn235521(v=pandp.30) |website=microsoft.com |date=5 November 2013 |publisher=Microsoft Patterns & Practices |access-date=27 November 2020}} and continues to be maintained by the community. Version 3.5, released in April 2014,{{cite web |last1=Melnik |first1=Grigori |title=Unity 3.5 RTW: Now with more Peace, Love, and Rock 'n' Roll |url=https://docs.microsoft.com/en-us/archive/blogs/agile/unity-3-5-rtw-now-with-more-peace-love-and-rock-n-roll |website=Microsoft Blog |date=21 April 2014 |access-date=27 November 2020}} adds support for Xamarin.{{cite web |title=Simplifying cross-platform development - Unity 3.5 Portable Class Library Preview |url=http://blogs.msdn.com/b/agile/archive/2014/04/10/simplifying-cross-platform-development-unity-3-5-portable-class-library-preview.aspx |website=MSDN Blog |publisher=Microsoft |archive-url=https://web.archive.org/web/20151126172950/http://blogs.msdn.com/b/agile/archive/2014/04/10/simplifying-cross-platform-development-unity-3-5-portable-class-library-preview.aspx |archive-date=26 Nov 2015 |url-status=dead}}
= Version 6.0 =
Microsoft Enterprise Library 6 was released in April 2013.{{cite web |title=Just released - Microsoft Enterprise Library 6 |url=https://docs.microsoft.com/en-us/archive/blogs/agile/just-released-microsoft-enterprise-library-6 |website=microsoft.com |date=25 April 2013 |access-date=27 November 2020}}
New features include:
- [http://aka.ms/slab Semantic Logging Application Block (SLAB)]
- Simplifying the library all around
- Generalized and updated Transient Fault Handling Application Block ("Topaz") to help increasing resiliency to errors
- Registration by convention and other improvements in Unity
- Support for Windows Store apps (Unity, Topaz)
- Support for async logging in the Logging Application Block
- Streamlined programmatic configuration of all blocks to facilitate fast start and ease of experimentation/use
- Integrating with other technologies (ASP.NET MVC and ASP.NET Web API)
This release has also retired the following 3 blocks:
- Caching Application Block
- Cryptography Application Block
- Security Application Block
= Version 5.0 =
Microsoft Enterprise Library 5.0 was released in April 2010, announced by Grigori Melnik.{{cite web |last1=Melnik |first1=Grigori |title=Microsoft Enterprise Library 5.0 Released! |url=https://docs.microsoft.com/en-us/archive/blogs/agile/microsoft-enterprise-library-5-0-released |website=Microsoft Blog |date=20 April 2010 |access-date=27 November 2020}}
New features include:
- Architectural refactoring fully supporting Dependency injection
- Simplification of the codebase
- Container independence (ships with Unity but you can choose to use other DI containers)
- Async database support
- Data accessors
- Fluent configuration interface support
- Configuration schemas to enable IntelliSense
- New configuration tool
- Higher performing logging
- Support for hierarchical configuration merge and redirects
- Honoring validation attributes between VAB and
System.ComponentModel.DataAnnotations
- WPF validation
- Clearer error messaging throughout
- Side-by-side support
- A la carte installer
- Visual Studio 2008 and Visual Studio 2010 support
- Bug fixes
- Backwards compatibility with version 4.1
= Version 5.0 Silverlight Integration Pack =
A port of Microsoft Enterprise Library 5.0 to Silverlight. Released in May 2011,{{cite web |last1=Melnik |first1=Gregori |title=Silverlight Integration Pack for Microsoft Enterprise Library 5.0 released! |url=https://docs.microsoft.com/en-us/archive/blogs/agile/silverlight-integration-pack-for-microsoft-enterprise-library-5-0-released |website=Microsoft Blog|date=11 May 2011 }} it includes the following blocks:
- Caching Application Block
- Validation Application Block
- Logging Application Block
- Exception Handling Application Block
- Unity Application Block
- Policy Injection Application Block
= Version 5.0 Windows Azure Integration Pack =
= Unity 3.0 =
= Unity 2.1 =
Original released in May 2011, with an update in August 2012.{{cite web |title=Unity 2.1 | date=14 March 2014 |url=https://docs.microsoft.com/en-us/previous-versions/msp-n-p/hh237493(v=pandp.10) |publisher=Microsoft}}
= Version 4.1 =
This release of Enterprise Library in October 2008{{cite web |last1=Melnik |first1=Grigori |title=Just Released: Microsoft Enterprise Library 4.1 and Unity 1.2 |date=28 October 2008 |url=https://docs.microsoft.com/en-us/archive/blogs/agile/just-released-microsoft-enterprise-library-4-1-and-unity-1-2 |publisher=Microsoft Patterns & Practices |access-date=27 November 2020}} is a service releases that includes the following:{{cite web |title=About This Release of Enterprise Library |url=https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff650174(v=pandp.10) |website=microsoft.com | date=21 December 2010 |access-date=27 November 2020}}
- Unity interception mechanism and integration of the Policy Injection Application Block with the Unity Application Block
- Added support for generics in the Unity Application Block
- Added support for arrays in the Unity Application Block
- Performance improvements
- Usability improvements to the configuration tool
- Visual Studio 2008 Service Pack 1 support
- Bug fixes
The Application Block Software Factory and the Strong Naming Guidance Package are not included in this release but are available as a separate download. Thus, there is no longer a dependency on Guidance Automation Extensions (GAX).
= Version 4.0 =
This release of Enterprise Library in May 2008{{cite web |title=Microsoft Enterprise Library 4.0 – May 2008 | date=6 December 2013 |url=https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff650810(v=pandp.10) |publisher=Microsoft Patterns & Practices |access-date=27 November 2020}} includes the following:
- Integration with the Unity Application Block
- Windows Management Instrumentation (WMI) 2.0 support and improved instrumentation
- Performance improvements (particularly, in the Logging Application Block)
- Pluggable Cache Managers
- Visual Studio 2008 support
- Bug fixes
= Version 3.1 =
In May 2007, Enterprise Library 3.1 was released with minor enhancements to the Validation and Policy Injection Application Blocks.
= Version 3.0 =
In April 2007, Enterprise Library 3.0 was released. It contains new Application Blocks, a new Application Block Software factory designed to simplify the development of new Application Blocks and extensions, and new features providing better integration with .NET Framework 3.0. The 3.0 release of Enterprise Library contains the following Application Blocks:
- Caching
- Data Access
- Cryptography
- Exception Handling
- Logging
- Policy Injection (new)
- Security
- Validation
= Version 2.0 =
In January 2006, a new version of Enterprise Library was released that targeted .NET Framework 2.0. The most significant change in this release was that the Configuration Application Block was removed, and the blocks were updated to use .NET's improved System.Configuration capabilities. This release also included significant improvements to the Logging Application Block, and much of the Security Application Block was removed due to similar capabilities provided in .NET Framework 2.0. The .NET 2.0 release of Enterprise Library contained the following Application Blocks:
- Caching
- Data Access
- Cryptography
- Exception Handling
- Logging
- Security
= Version 1.1 =
Two releases of Enterprise Library were released for .NET Framework 1.1. The first was released in January 2005, followed by a minor maintenance release in June 2005. The .NET 1.1 releases of Enterprise Library contained the following Application Blocks:
- Caching
- Configuration
- Cryptography
- Data Access
- Exception Handling
- Logging and Instrumentation
- Security
= Version 1.0 =
Future
Ron Jacobs, a Microsoft Evangelist, described the purpose of Enterprise Library as "filling in the gaps" of .NET development between releases of the framework. As the framework continues to advance, developers are demanding more productive development libraries.
At the same time, Microsoft platforms evolve and certain scenarios, initially addressed by the Enterprise Library, are now being supported by the platforms themselves. In this case, the patterns & practices team uses the graceful retirement process to deprecate some parts.{{cite web |last1=Melnik |first1=Grigori |title=On deprecation |url=https://docs.microsoft.com/en-us/archive/blogs/agile/on-deprecation |website=Microsoft Blog |date=8 April 2011 |access-date=27 November 2020}}
Microsoft continues to promote Enterprise Library for enterprise/line-of-business development, and even many Microsoft products as well as projects within Microsoft IT use it extensively.
Starting November 2013, Microsoft fully open-sourced Enterprise Library and all of its application blocks.{{cite web |last1=Melnik |first1=Grigori |title=Microsoft Enterprise Library - Open Development Model |url=https://docs.microsoft.com/en-us/archive/blogs/agile/microsoft-enterprise-library-open-development-model |website=Microsoft Blog|date=21 November 2013 }} They now accept community contributions. The latest releases of SLAB1.1 and Unity 3.5 are developed in close collaboration with the community.
In August 2015, Microsoft posted they were handing Unity Dependency Injection over to new owners (Pablo Cibraro and Pedro Wood) into a new GitHub repo.{{Cite web|url=https://blogs.msdn.microsoft.com/dotnet/2015/08/21/the-future-of-unity/|title=The future of Unity|website=blogs.msdn.microsoft.com|date=21 August 2015 |access-date=2016-05-07}} At the same time, the patterns & practices - Enterprise Library home web site on CodePlex,{{Cite web|url=http://entlib.codeplex.com/|title=patterns & practices – Enterprise Library|website=CodePlex|access-date=2016-05-07|archive-date=2018-01-16|archive-url=https://web.archive.org/web/20180116000510/http://entlib.codeplex.com/|url-status=dead}} announced that the remainder of the application blocks will no longer be developed. However, the source will continue to be available.
See also
{{Portal|Free and open-source software}}
References
{{Reflist}}
Further reading
- {{cite book|author1-first=Dominic|author1-last=Betts|author2-first=Julian|author2-last=Dominguez|author3-first=Alex|author3-last=Homer|author4-first=Hernan|author4-last=de Lahitte|author5-first=Grigori|author5-last=Melnik|author6-first=Fernando|author6-last=Simonazzi|author7-first=Mani|author7-last=Subramanian|year=2013|title=Developer's Guide to Microsoft Enterprise Library|publisher=Microsoft patterns & practices|isbn=978-1621140344}}
- {{cite book|author-first=Sachin|author-last=Joshi|year=2010|title=Microsoft Enterprise Library 5.0|publisher=Packt Publishing|isbn=978-1849680905}}
- {{cite book|author-first=Keenan|author-last=Newton|year=2007|title=The Definitive Guide to the Microsoft Enterprise Library|publisher=Apress|isbn=978-1590596555}}
- {{cite book|author-first=Len|author-last=Fenster|year=2006|title=Effective Use of Microsoft Enterprise Library: Building Blocks for Creating Enterprise Applications and Services|publisher=Addison-Wesley Longman|isbn=978-0321334213}}
External links
- [https://msdn.microsoft.com/en-us/library/dn440724(v=pandp.60).aspx Developer's Guide to Enterprise Library, 2/e by Microsoft patterns & practices, 2013]
- [https://msdn.microsoft.com/en-us/library/dn223671(v=pandp.30).aspx Dependency Injection with Unity guide by Microsoft patterns & practices, 2013]
- [http://www.codeplex.com/entlib Enterprise Library on CodePlex]
- [http://msdn.microsoft.com/entlib Enterprise Library on MSDN]
- [http://www.packtpub.com/microsoft-enterprise-library-50/book Microsoft Enterprise Library 5.0 by Packt Publishing]
{{Microsoft APIs}}
{{Microsoft FOSS}}
Category:Enterprise application integration