Customer Value

clip_image003[3]For years the Enterprise Library application blocks have helped developers address the typical cross-cutting concerns of enterprise development (such as diagnostic logging, data validation, caching, and exception handing). With over 3.2 million downloads, they take a prominent place in the toolbox of a modern .NET developer.  These cross-cutting concerns are just as important to a Silverlight application as they are to any other type of application. However, implementing them in Silverlight can be quite a different matter.  The Silverlight Integration Pack is focused on Silverlight LOB development and provides guidance and reusable components designed to encapsulate recommended practices which facilitate consistency, ease of use, integration, and extensibility.

What’s in the pack ?

The tube map below depicts the paths through the Silverlight Integration Pack.




Validation Application Block

The Validation Application Block supports the following scenarios:

§ Executing validation rules across multiple tiers and gathering results.

§ Annotating your business entities with validation attributes.

§ Ensuring validation attributes compatibility with WCF RIA Services.

§ Defining validation rules in configuration.

§ Validating conditionally using rule sets.

§ Implementing self-validation.

§ Defining validation attributes in metadata. Silverlight doesn’t support the MetadataTypeAttribute. In the .NET Framework, this attribute is used to define metadata classes with validation attributes for your generated business entities. The Validation Application Block provides an implementation of the MetadataTypeAttribute for Silverlight.

§ Supporting IDataErrorInfo.

Logging Application Block

Allows you to decouple your logging functionality from your application code. The Logging Application Block routes log entries to various out-of-the-box or custom destinations (locally or through a web service), it supports runtime changes to, for example,  turn existing logging up and down or change logging destinations. Batch logging is supported. The block is shipped with an implementation of a WCF Remote logging service that integrates with the desktop version of the Logging block. Additionally, tracing feature allows you to correlate log entries to a specific activity/workunit scope.

Caching Application Block

A brand new implementation of the Caching application block, which is mimicking the System.Runtime.Caching API from .NET with support for in-memory caching and persistent caching (via isolated storage). It has support for expiration and scavenging policies as well notification of cache purging.

Exception Handling Application Block

A port of the desktop version of the Exception Handling Application Block, which allows you to handle exceptions that might occur in any layer of your application in a consistent manner.

Interception & Policy Injection Application Block

Update to Unity container for Silverlight with support for type and instance interception.


Configuration support

The Silverlight Integration Pack offers flexible configuration options, including:

§ XAML-based configuration support

§ Asynchronous configuration loading

§ Interactive configuration console supporting profiles (desktop vs. Silverlight)

§ Translation tool for XAML config (needed to convert conventional XML configuration files) available as a config tool wizard, an MS Build task, or a standalone command-line tool

§ Programmatic configuration support via a fluent interface or attributes

Reference Implementation

Along with the reusable application blocks and tooling, next week we will be releasing a new Developer’s Guide and an accompanying Reference Implementation to illustrate the typical challenges you might encounter when building a Silverlight LOB application. In addition, comments from fictional personas, including an experienced Enterprise Library developer named Ed and an IT Professional named Mark, help you understand the rationale behind certain design decisions.


How to get it ?

Both Enterprise Library 5.0 and Enterprise Library 5.0 Silverlight Integration Pack are available as Windows Installer Packages (MSI) via MSDN or as NuGet packages. The configuration tool is also available as a Visual Studio extension package (VSIX) from the Visual Studio Gallery.

Note: If you are new to NuGet, please do not look for Silverlight-specific Enterprise Library packages. NuGet packages are multi-platform. Just get the official EntLib packages (easily recognizable by the orange logo and the author – Microsoft). Depending on the framework your project is targeting, NuGet will install the corresponding bits. The only platform specific packages are source code packages.

For more information, please see this post explaining our NuGet release strategy.

Some Channel 9 Videos


Enterprise Library for Silverlight – Validation demo


Enterprise Library for Silverlight – Data Caching demo


Enterprise Library for Silverlight – Logging demo


Enterprise Library for Silverlight – Cross-tier validation demo


Enterprise Library for Silverlight – Interception demo


Enterprise Library for Silverlight – Remote Logging demo