Enterprise Library for .NET Framework 2.0: Core Architecture - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Enterprise Library for .NET Framework 2.0: Core Architecture

Description:

Certain features from Enterprise Library v1.x have been deprecated in favor of the platform ... Used by all Enterprise Library blocks, and can be used by ... – PowerPoint PPT presentation

Number of Views:306
Avg rating:3.0/5.0
Slides: 31
Provided by: TomHol1
Category:

less

Transcript and Presenter's Notes

Title: Enterprise Library for .NET Framework 2.0: Core Architecture


1
Enterprise Library for .NET Framework 2.0Core
Architecture
2
Enterprise Library for .NET Framework 2.0
  • Major new release of Enterprise Library
  • 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!

3
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 Membership and
    Profile features

4
Enterprise Library for .NET Framework 2.0
Caching
Data Access
Logging
Core
Cryptography
Exception Handling
Security
Optional ProviderDependency
Block Dependency
5
Enterprise Library for .NET Framework 2.0
Caching
Data Access
Logging
Core
Plug-in
Config Helpers Design
Instrumen-tation
Cryptography
ObjectBuilder
Exception Handling
Security
Optional ProviderDependency
Block Dependency
6
Core Architecture
  • Configuration runtime
  • Configuration design and tooling
  • Instrumentation
  • Factories and object builder

7
Configuration in Enterprise Library
  • All Enterprise Library blocks are configurable
  • Controls how the blocks work in your application
  • Specifies which plug-ins you are using
  • Previous versions of Enterprise Library included
    a Configuration Application Block
  • Supported reading/writing complex configuration
    objects from pluggable storage
  • Used by all Enterprise Library blocks, and can be
    used by customer code
  • In Enterprise Library for .NET Framework 2.0, the
    requirements are the same but the solution is
    different

8
System.Configuration in .NET 2.0
  • Much more powerful than the Microsoft .NET
    Framework 1.x classes
  • Supports reading and writing rich graphs of
    objects
  • Automatic serialization and deserialization
    between configuration classes and XML using
    ConfigurationSection and ConfigurationElement
  • Some Enterprise Library 1.x features are not
    directly supported
  • Storing configuration somewhere other than XML
    Files
  • Monitoring external changes to configuration

9
Configuration Runtime
  • Enterprise Library for .NET Framework 2.0 uses
    System.Configuration, but provides additional
    helper classes to provide more functionality
  • All blocks provide ConfigurationSections which
    are stored in app.config / web.config by default
  • All System.Configuration features such as
    encryption and using external files are supported
  • Configuration Runtime helper classes are in the
    Common assembly
  • Used by all Enterprise Library application blocks
  • Can be used by your apps, but you generally wont
    need to

10
Configuration Sources
app.config / web.config Default ConfigurationSour
ce
Application Blocks or Custom Code
IConfigurationSource
SystemConfiguration Source
FileConfiguration Source
SqlConfiguration Source
System.Configuration
foo.config
app.config / web.config
File Watcher
File Watcher
11
Configuration Sources
  • Abstract interface that supports loading/saving
    configuration and monitoring for changes
  • Two implementations included in the core
  • SystemConfigurationSource defers to
    System.Configuration to read from default
    configuration file (plus adds file watchers)
  • FileConfigurationSource defers to
    System.Configuration but reads from arbitrary
    files
  • SqlConfigurationSource included as a sample
  • Requires that sections derive from
    SerializableConfigurationSection

12
Choosing a Configuration Source
  • Several ways of choosing a configuration source
    when using Enterprise Library
  • If you access blocks using static façades or
    factories (Examples DatabaseFactory, Logger),
    you will always use the applications default
    ConfigurationSource
  • If you define a ConfigurationSources section in
    your default.config file, you can specify which
    type of source should be used
  • If you dont have this section,
    SystemConfigurationSource is used
  • If you use the instance factories
    (ExamplesDatabaseProviderFactory,
    LogWriterFactory) you can specify a configuration
    source of your choosing
  • Instantiated directly or using ConfigurationSource
    Factory

13
Configuration Source Examples
selectedSource"fileSource"
nterpriseLibrary.Common.Configuration.FileConfigur
ationSource, Microsoft.Practices.EnterpriseLibrary
.Common" filePath"test.config"/ name"systemSource" type"Microsoft.Practices.Ente
rpriseLibrary.Common.Configuration.SystemConfigura
tionSource, Microsoft.Practices.EnterpriseLibrary.
Common"/ figurationSource
  • // Use default source specified in the app.config
    / web.config file
  • Database db1 DatabaseFactory.CreateDatabase(Sal
    es)
  • // Use the specified source you dont need an
    app.config / web.config file
  • FileConfigurationSource fileSource new
    FileConfigurationSource(tom.config)
  • DatabaseProviderFactory factory new
    DatabaseProviderFactory(fileSource)
  • Database db2 factory.Create(Sales)

14
Change Notifications
  • IConfigurationSource supports monitoring
    configuration data for changes
  • AddSectionHandler(string sectionName,
    ConfigurationChangedEventHandler handler)
  • RemoveSectionHandler(string sectionName,
    ConfigurationChangedEventHandler handler)
  • Any code can register for changes and respond
    accordingly
  • In Enterprise Library, only the Logging
    Application Block currently registers to receive
    change notification events

15
Configuration Design and 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 user
    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

16
Configuration Design-Time
  • Improved API
  • Simple base configuration design manager
  • Better node registration and command registration
  • 3 to 4 simple classes to register your custom
    provider
  • No more OnSited ?
  • One configuration design manager per section
  • Dependent configuration design managers
  • Easy to interop with any .NET configuration

17
Instrumentation
  • All Enterprise Library blocks include
    instrumentation to assist in development, testing
    and operations
  • Event Log events
  • Performance Counters
  • Microsoft Windows Management Instrumentation
    (WMI) events
  • All instrumentation is disabled by default, but
    each type can be individually enabled using the
    configuration tool
  • Instrumentation code contained in common assembly
    can be reused in your apps

18
Enabling Instrumentation
  • Run the installer classes to create the
    instrumentation artifacts
  • Run installservices.bat (using an admin account),
    or
  • Run installutil.exe over each Enterprise Library
    assembly (using an admin account), or
  • Create your own installers/MSI that do this
  • Configure instrumentation for your app using the
    tool

19
Instrumentation Architecture
Event Log
  • Event-driven architecture

Application or Block
calls
Perf Counters
Instrumentation Listener Class(es)
Instrumentation Provider Class(es)
Event
WMI
Wires up
Instrumentation Configuration Settings
ObjectBuilder
20
Instrumentation Attributes
  • Instrumentation is wired up using attributes
  • InstrumentationListener
  • Defined on a type within the block or application
  • Specifies which listener will deal with
    instrumentation events
  • InstrumentationProvider
  • Defined on an event within the block or
    application
  • Specifies the name of the event being fired
  • InstrumentationConsumer
  • Defined on a method within the instrumentation
    listener
  • The method contains the instrumentation logic,
    and the name must match the one used in an
    InstrumentationProvider declaration

21
Instrumentation Example
public class Database IInstrumentationEventProvi
der DbConnection OpenConnection()
// Do stuff instrumentationProvider.FireCo
nnectionOpenedEvent() public object
GetInstrumentationEventProvider()
return instrumentationProvider
  • InstrumentationListener( typeof(DataInstrumentati
    onListener), typeof(DataInstrumentationListenerBin
    der))
  • public class DataInstrumentationProvider
  • InstrumentationProvider("ConnectionOpened")
  • public event EventHandler
  • connectionOpened
  • public void FireConnectionOpenedEvent()
  • connectionOpened(this, new EventArgs())

internal class DataInstrumentationListener
InstrumentationListener public
DataInstrumentationListener(string instanceName,
bool perfCountersEnabled, bool eventLogEnabled,
bool wmiEnabled) base(perf, event, wmi)
InstrumentationConsumer( ConnectionOpened")
public void ConnectionOpened(object sender,
EventArgs e) if (PerformanceCountersEnabled)
connectionOpenedCounter.Increment()
22
Instrumentation Installation Attributes
  • Running installutil over an instrumented class
    should install all required event log sources,
    WMI schemas and performance counters
  • Enterprise Library provides a ReflectionInstaller
    which uses reflection to find these, with the
    help of some attributes
  • HasInstallableResources
  • Indicates that there is instrumentation to
    install
  • PerformanceCountersDefinition
  • Defines the counters used by the block or app
  • EventLogDefinition
  • Defines the event log sources used by the block
    or app

23
Factories and Object Builder
  • Objects inside application blocks need to be
    constructed and configured
  • There are different ways you can construct
    objects depending on what you want to do
  • Use a default configuration source
  • Use a custom configuration source
  • Dont use any configuration at all
  • Inject instrumentation
  • Although each block is different, all rely on
    similar types of factories for construction

24
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

25
Factories
Core
Application Block
Static Factory or façade
Configuration Source
User Code
Instance Provider Factory
Enterprise Library Factory
Custom Factory
Object Builder
Strategies
Block Objects
26
Using Static Facades and Factories
  • Easiest way to use the blocks
  • Configuration is retrieved from the default
    configuration source
  • Instrumentation is wired up (but may be disabled)
  • Results in a call to an instance factory behind
    the scenes
  • Examples
  • Dim db As Database DatabaseFactory.CreateDatabas
    e(Sales)
  • Logger.Write(My message, My Category)

27
Using Instance Provider Factories
  • You get slightly more control on how objects are
    created
  • You can choose your own configuration source
  • Instrumentation is wired up (but may be disabled)
  • Examples
  • Dim factory As New DatabaseProviderFactory(configS
    ource) Dim db As Database factory.Create(Sales
    )
  • Dim factory As New LogWriterFactory(configSource)
    Dim writer As LogWriter factory.Create()

28
Creating Objects Directly
  • New up the object and any dependent objects
    yourself
  • Configuration sources are not used
  • Object Builder is not involved
  • Instrumentation will not be automatically wired
    up (but you can add it yourself)
  • Example
  • Dim db As SqlDatabase New SqlDatabase("server(l
    ocal)\SQLEXPRESSdatabaseEntLibQuickStartsIntegr
    ated Securitytrue")

29
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/EntLibBlo
    gs/

30
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com