Enterprise Library for .NET Framework 2.0: Overview Some History…  Application Blocks are reusable, extensible source-code components that provide guidance for common development challenges  Enterprise.

Download Report

Transcript Enterprise Library for .NET Framework 2.0: Overview Some History…  Application Blocks are reusable, extensible source-code components that provide guidance for common development challenges  Enterprise.

Enterprise Library for
.NET Framework 2.0:
Overview
Some History…
 Application Blocks are reusable, extensible source-code
components that provide guidance for common
development challenges
 Enterprise Library is a library containing seven general
purpose application blocks
• Caching, Configuration, Cryptography, Data Access, Exception
Handling, Logging & Instrumentation, Security
• Emphasis on Consistency, Extensibility, Ease of Use and
Integration
• Originally designed for .NET Framework 1.1. First released in
January 2005 and updated in June 2005
Enterprise Library Ecosystem
Customer Y library
Partner X library
p&p
Enterprise Library
Customer Z library
p&p blocks
Partner blocks
Customer blocks
Block Specification
Community blocks
Enterprise Library
Enterprise Library is…
Enterprise Library is not…
A library of application blocks
which solve common challenges
A part of the .NET Framework
A set of helper classes which
work in any architectural style
An application framework that
imposes an architectural style
Architectural guidance embodied
in code which ships with full source
allowing you to modify and extend
A Microsoft product with support,
compatibility and localization
Available as a free download
For sale
Enterprise Library for .NET Framework 2.0
 Major new release of Enterprise Library
• First .NET Framework 2.0 release in January 2006
 Designed for Microsoft® .NET Framework 2.0
• Leverages key new capabilities provided by the platform
• Certain features from Enterprise Library v1.x have been
deprecated in favor of the platform
 Scenarios and features largely unchanged
• Public application programming interfaces (APIs) not identical, but
changes are minor
• …but many improvements are hiding under the covers!
Key changes from Enterprise Library 1.x
 Configuration now built on System.Configuration
• Configuration Application Block no longer exists
• Easier to use blocks with or without configuration files
 Instrumentation configurable and disabled by default
 Much improved Logging Application Block
• Flexibility and performance
 Simpler and more powerful Data Access Application Block
• Use with OLE-DB, Open Database Connectivity (ODBC) or any
managed provider
 Most of the Security Application Block has been removed
• Deprecated in favor of .NET’s Membership and Profile features
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
The Core
 Configuration
 Configuration Design & Tooling
 Instrumentation
 Object Builder
Configuration
 All Enterprise Library blocks are configurable
• Controls how the blocks work in your app
• Specifies which plug-ins you are using
 New architecture makes it much easier to use blocks with
or without configuration files
• Factories build up block objects using data from the configuration
files
• Objects can be “newed up” directly with primitive data types
Configuration
 Configuration is now built on System.Configuration
• Configuration in app.config / web.config by default
• Supports reading/writing of complex objects
• Supports data protection
 Alternative “Configuration Sources” can be used
• Sample SQL Configuration Source will be included
 Common assembly contains helper classes
• Configuration Application Block no longer exists
• Migration guidance to System.Configuration included
Configuration Design & Tooling
 Configuration tool eliminates the need to edit the blocks’
XML configuration files
• Quickly add default configuration for a block
• Strongly typed properties and providers
• Validate configuration before you save
 No major changes to configuration tool experience from
previous versions of Enterprise Library
 Configuration Design-time subsystem can be used in your
own applications and blocks to provide a similar
experience for your users
Instrumentation
 All Enterprise Library blocks include instrumentation to
assist in development, testing and operations
• Event Log events
• Performance Counters
• WMI events
 All instrumentation is disabled by default, but each type
can be individually enabled using the configuration tool
 Installing instrumentation requires admin rights, and can
be done using installutil.exe
 Instrumentation code contained in Common assembly can
be reused in your apps
Object Builder
 New subsystem shared between EntLib and Composite UI
Application Block
 Responsible for building objects inside the application
blocks
• Invoking the necessary custom factory using data from
configuration
• Configuring instrumentation for the blocks
 Can be leveraged from your own apps, but understanding
ObjectBuilder is not required to use Enterprise Library
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Exception Handling Needs
 You need consistent exception handling behavior
throughout your application
 You need to implement best practice guidance for
exception handling
• Don’t inadvertently disclose security sensitive information to
remote callers
• Add context to exceptions by wrapping or replacing exceptions
with more relevant exceptions
 You need to make it simple to add exception management
boilerplate code
Exception Handling Application Block
 Provides simple mechanism that allows you to consistently deal with
exceptions throughout your application
 Define “Exception Policies” which link an exception to an action
• Exceptions of type ApplicationException should be logged
• Exceptions of type SqlClientException should be caught and wrapped with
an exception of type DataLayerException and re-thrown
• Exceptions of type SecurityException should caught and replaced with an
AccessDeniedException which will be thrown
 Actions provided include
• Logging
• Wrapping one exception with another
• Replacing one exception with an other
• Create your own actions…
Exception Handling - Example
Try
' some code that may throw
Catch Ex As Exception
If ExceptionPolicy.HandleException(ex, “DataLayer”) _
Throw
End Try
Then
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Logging Needs
 You need to log business and operations data to various
destinations, which are externally configurable
 You need to provide tracing to support production
debugging
 You need to provide auditing for increased security
 You need to be able to specify which messages go where,
and how they are formatted
 You need to be able to log messages to a wide variety of
destinations
Logging Application Block
 Provides a simple model for logging events
• Strongly typed, extensible log schema
 Built on top of System.Diagnostics
 Configuration driven – you decide what messages are
logged where at runtime.
 Use any .NET TraceListener, including EntLib formatteraware listeners:
• EventLog, Database, Text File, MSMQ, E-mail, WMI, or create
your own
 Tracer class lets you time key activities and correlate any
enclosed events
New In This Release
 Built on System.Diagnostics features, such as
TraceListener, TraceSource and CorrelationManager
• Simplifies EntLib code, enables better integration with ‘core’
System.Diagnostics functionality
 Eliminated Distribution Strategies concept
• Same scenarios supported by ‘chaining’ instances of the block
together via TraceListeners (eg MSMQ)
 One LogEntry in multiple Categories
• Increased flexibility and control in event routing, enabling/disabling
 Pluggable, extensible filters
• Can be queried from API to avoid creating expensive log
messages
Logging - Examples
Dim log As LogEntry = New LogEntry
log.Message = “Your message here…”
log.Priority = 1
log.EventId = 100
log.Categories.Add("UI")
log.Categories.Add("Debug")
Logger.Write(log)
// Or if you prefer one line...
Customer cust = GetCustomer(123);
// Log the customer – will call cust.ToString() for the log entry
Logger.Write(cust, category, priority);
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Data Access Needs
 A simple and efficient way of working with commonly used
databases
 Transparency when developing for multiple types of
databases
 A way to place an indirection between a logical database
instance and a physical database instance
 An easy way to adjust and validate the database
configuration settings
Data Access Application Block
 Provides simplified access to the most often used features
of ADO.NET with applied best practices
 Improve Consistency
• Write code that works against multiple database brands (caveats
apply!)
 Improve ease of use
• Easily call a stored procedure with one line of code
• Let the block manage the lifetime of database connections
• Work with database connection strings stored in configuration or
specified in code
Data Access - Examples
Public Function GetProductsInCategory(ByRef Category As Integer) As DataSet
' Create the Database object, using the database instance with the
' specified logical name. This is mapped to a connection string in
' the configuration file
Dim db As Database = DatabaseFactory.CreateDatabase("Sales")
' Invoke the stored procedure with one line of code!
return db.ExecuteDataSet("GetProductsByCategory", Category)
' Note: connection was closed by ExecuteDataSet method call
End Function
public Dataset GetProductsInCategory(string connectionString, int category)
{
// Create the Database object, using the specified connection string
SqlDatabase db = new SqlDatabase(connectionString);
// Invoke the stored procedure with one line of code!
return db.ExecuteDataSet("GetProductsByCategory", category);
// Note: connection was closed by ExecuteDataSet method call
}
New In This Release
 Use with or without configuration
• Reuses .NET’s new <connectionStrings> section
• Or, use your own connection string
 Simplified API
• Uses ADO.NET’s DbCommand instead of DBCommandWrapper
 Use with any managed ADO.NET 2.0 provider
• GenericDatabase class works with any provider, including OLE-DB
and ODBC (advanced functionality like parameter discovery is
unavailable)
• Use database-specific Database derived classes to support the full
API with improved transparency
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Caching Scenarios
 You are creating a smart client application that uses locally
cached reference data to create requests and support
offline operations
 You are building an application that requires cache data to
be durable across application restarts
 Note: ASP.NET cache (System.Web.Caching) can be used
across multiple application types and is generally a better
choice for applications that don’t require the cache to be
persisted
Caching Application Block
 Provides a flexible and extensible caching mechanism that
can be used at all layers of an application
 Supports backing stores that persist cache data into a
database or isolated storage, so the data can survive app
restarts
 Easy to use
 Easy to configure, using the Enterprise Library
Configuration Tool
 Thread-safe
• Ensures that the states of the in-memory cache and the backing
store remain synchronized.
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Cryptography Scenarios
 You need to encrypt sensitive data using a symmetric key
before storing in the database and decrypt when reading
 You need to encrypt information (without using keys) for
use on a single machine
 You need to create a hash of a password to store in a
database and be able to compare that hash with a user
supplied hash to see if you have a match without storing
the user password
Cryptography Application Block
 Improves Security
• Provides a simplified approach to implementing common cryptography
scenarios
 Improves Ease Of Use
• Provides operations on both strings and byte streams
CreateHash
CompareHash
EncryptSymmetric
DecryptSymmetric
 Improves Integration
• Supports all .NET crypto algorithms out of the box, or implement your own
• Supports DPAPI for keyless crypto on a single machine
• Algorithms and keys can be managed through the configuration tool
Enterprise Library for .NET Framework 2.0
Data
Access
Caching
Logging
Core
Plug-in
Cryptography
Config
Helpers
& Design
Instrumentation
Object
Builder
Exception
Handling
Security
Block Dependency
Optional Provider
Dependency
Security Scenarios
 You need to authorize users
• Using one or more security systems or mechanisms
 You need to cache authentication or authorization data for
the duration of a logon session
 Note: Previous versions of the Enterprise Library Security
Application Block also supported Authentication, Profile
and Roles. This is now supported by the .NET
Membership and Profile class, so this functionality has
been removed from the block.
Security Application Block + ASP.NET
Security Application Block
 Encapsulate common
application security tasks
Authorization
Rule
Provider
Authorization
Factory
 Present a standard,
provider model for common
security tasks
IAuthorization
Provider
AzMan
Authorization
Provider
Security
Cache
Factory
Client
Code
ISecurity
Cache
Provider
ASP.NET
Membership
Profile
Membership
Provider
Profile
Provider
Caching
Store
Provider
ActiveDirectory
Membership
Provider
Sql
Membership
Provider
Sql
Profile
Provider
Caching
Application
Block
 Minimize the need for
custom security-related
code
 Incorporate best practices
for application security
Migration from previous versions
 This release is not 100% API compatible with previous
releases of Enterprise Library
 Most API changes are minor and upgrading will be simple
 Exceptions:
• Configuration Application Block, which no longer exists  convert
to System.Configuration
• Authentication, Role and Profile providers in Security Application
Block  convert to ASP.NET providers
• Migration guidance is included in docs and samples
 Configuration file formats have changed, and all
configuration needs to be rebuilt using the tool
Resources
 Download Enterprise Library and related resources from:
• http://msdn.microsoft.com/practices
 Join the Enterprise Library Community at:
• http://practices.gotdotnet.com/projects/entlib
 Read blogs from the Enterprise Library team at:
• http://msdn.microsoft.com/practices/Comm/EntLibBlogs/