enterprise library documentation

31

Click here to load reader

Upload: api-26309129

Post on 11-Apr-2015

208 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 1

Enterprise Library , patterns & practices Library, Microsoft Corporation, January 2005 Summary The patterns & practices Enterprise Library is a library of application blocks designed to assist developers with common enterprise development challenges. Application blocks are a type of guidance, provided as source code that can be used "as is," extended, or modified by developers to use on enterprise development projects. Enterprise Library features new and updated versions of application blocks that were previously available as stand-alone application blocks. All Enterprise Library application blocks have been updated with a particular focus on consistency, extensibility, ease of use, and integration. Downloads The latest release of Enterprise Library was released in January 2005: Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). Contents The Enterprise Library Application Blocks Vision and Design Themes What Is Guidance? Community Feedback and Support Roadmap Reviewers The Enterprise Library Application Blocks Application blocks help to address the common problems that developers face from one project to the next. They are designed to encapsulate the Microsoft recommended best practices for .NET applications. They can be plugged into .NET applications quickly and easily. For example, the Data Access Application Block provides access to the most frequently used features of ADO.NET, exposing them through easily-used classes. The application block also adds related functionality not directly supported by the underlying class libraries. The application blocks that comprise the Enterprise Library are the following: Caching Application Block. This application block allows developers to incorporate a local cache in their applications. Configuration Application Block. This application block allows applications to read and write configuration information. Data Access Application Block. This application block allows developers to incorporate standard database functionality in their applications. Cryptography Application Block. This application block allows developers to include encryption and hashing functionality in their applications. Exception Handling Application Block. This application block allows developers and policy makers to create a consistent strategy for processing exceptions that occur throughout the architectural layers of enterprise applications. Logging and Instrumentation Application Block. This application block allows developers to incorporate standard logging and instrumentation functionality in their applications. Security Application Block. This application block allows developers to incorporate security functionality in their applications. Applications can use the application block in a variety of situations, such as authenticating and authorizing users against a database, retrieving role and profile information, and caching user profile information. Different applications have different requirements and you will not find that every application block is useful in every application that you build. Before using an application block, you should have a good understanding of your application requirements and of the scenarios that the application block is designed to address. Vision and Design Themes Our vision is to build a broad community of customers and partners using, sharing, and extending their own application blocks that are consistent with and integrate into the patterns & practices Enterprise Library. For example, portions of Enterprise Library were adapted from ACA.NET © with permission from Avanade Inc. To participate in this community, visit the Enterprise Library Community site.

Page 2: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 2

The major themes of Enterprise Library are the following: Consistency. All application blocks feature consistent design patterns and implementation approaches, configuration mechanisms, documentation, samples, deployment, and operational processes. Extensibility. Developers are able to customize the behavior of the application blocks by "plugging in" their own code into extensibility points or by modifying the application blocks' source code. Enterprise Library also includes guidance to assist developers with building their own application blocks that integrate with Enterprise Library. Ease of Use. Enterprise Library includes many usability improvements over earlier versions of the application blocks including a configuration tool, the Enterprise Library Configuration Console, that make it much easier to evaluate, install, learn, configure and develop with the blocks. Integration. The application blocks are designed and tested to work well together or individually. What Is Guidance? Enterprise Library is a guidance offering, designed to be reused, customized and extended. It is not a Microsoft product. The following table describes some of the key attributes of code-based guidance offerings, including Enterprise Library. Attribute Description

Support Code based guidance is shipped "as is" and without warranties. Customers can obtain support, but the code is considered user-written by Microsoft support staff. The patterns & practices team works with product support and will assist them with escalations as needed. Customers are encouraged to support one another through online communities.

Functionality Provides a flexible and architecturally sound solution to a common enterprise development challenge, which is not easy to achieve with the base platform without moderate effort or intricate knowledge of it. The guidance addresses the challenges by using base platform features and adhering to its best practices. The guidance is designed to be extended and customized by users.

Release Guidance releases are typically developed in a 3-6 month life cycle. Assets are released as they become ready on the currently available platform. New versions of existing assets (possibly revised to run on later versions of the platform) are released if there is sufficient customer demand.

Compatibility Code-based guidance is designed to help solve problems over specific versions of Microsoft products. As the products change, the guidance issued may change or become obsolete. We develop the guidance with future releases in mind when possible. There are no guarantees about guidance compatibility with earlier releases of guidance, or with past or future platform releases. A phased migration strategy is recommended, and coexistence of multiple versions of the guidance is given high priority by the patterns & practices team.

Form factor Released as source code. Variability is provided through configuration and defined extensibility points, as well as through direct modification of the source code. Documentation focuses on how to use the asset, how to extend it, and the goals, patterns and tradeoffs driving its design.

Community Enterprise Library, like other patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message.

Page 3: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 3

Enterprise Library is a guidance offering, designed to be reused, customized and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information on our support policy, see What Is Guidance? earlier on this page. Roadmap The next release of Enterprise Library will target the .NET Framework 2.0 and Visual Studio 2005. This release will include updated versions of existing Enterprise Library application blocks make the new features of the .NET Framework 2.0. In addition, the library will feature additional application blocks. More information about this new release will be published as it becomes available. To participate in defining requirements, reviewing specifications, and testing early releases, please join the Enterprise Library Community. Reviewers Many thanks to the following reviewers who provided invaluable assistance: Kawarjit Bedi, Pablo Castro, Krzysztof Cwalina, Carl Ellison, Jonathan Hawkins, David Keogh, Wojtek Kozaczynski, David Lee, James Newkirk, Shanku Niyogi and Brenton Webster (Microsoft Corporation); Rudy Araujo, Yen-Ming Chen, Mark Curphey, and David Raphael (Foundstone); Benoit Morneau and Shoichi Takasaki (Bowne Global Solutions) Caching Application Block Summary This page provides an overview of the Enterprise Library Caching Application Block. An application block is reusable and extensible source code-based guidance that simplifies development of common caching functionality in .NET-based applications. Downloads The latest release of the Caching Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). You can also download the earlier release of the Caching Application Block from the Microsoft Download Center's Caching Application Block Web page. Contents Introduction to the Caching Application Block Design of the Caching Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Caching Application Block The Enterprise Library Caching Application Block, version 1.0, lets developers incorporate a local cache in their applications. It supports both an in-memory cache and, optionally, a backing store that can either be the Enterprise Library Data Access Application Block or isolated storage. The application block can be used without modification and provides all the functionality needed to retrieve, add, and remove cached data. Configurable expiration and scavenging policies are also part of the application block's functionality. When building enterprise-scale distributed applications, architects and developers are faced with many challenges. Caching can help you overcome some of these challenges, including the following:

Page 4: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 4

Performance. Caching improves application performance by storing relevant data as close as possible to the data consumer. This avoids repetitive data creation, processing, and transportation. Scalability. Storing information in a cache helps save resources and increases scalability as the demands on the application increase. Availability. By storing data in a local cache, the application may be able to survive system failures such as network latency, Web service problems, and hardware failures. Common Scenarios The Caching Application Block is suitable for any of the following situations: You must repeatedly access static data or data that rarely changes. Data access is expensive in terms of creation, access, or transportation. Data must always be available, even when the source, such as a server, is not available. The Caching Application Block can be used with any of the following application types: Windows Forms Console Windows Service Enterprise Services ASP.NET Web application or Web service if you need features that are not included in the ASP.NET cache The Caching Application Block should be deployed in a single application domain. Each application domain can have one or multiple caches, either with or without backing store(s). Caches cannot be shared among different application domains. The Caching Application Block is optimized for performance and is both thread safe and exception safe. You can extend it to include your own expiration policies and your own backing store. Audience Requirements This application block is intended for software architects and software developers. To benefit fully from this guidance, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system .NET Framework Highlights of Version 1.0 Release The Enterprise Library Caching Application Block, version 1.0, includes the following new features: You can use a graphical tool, the Enterprise Library Configuration Console, for managing configuration settings. You can configure a persistent storage location, using either isolated storage or the Enterprise Library Data Access Application Block, whose state is synchronized with the in-memory cache. You can extend the application block by creating custom expiration policies and storage locations. You receive assurance that the application block performs in a thread safe manner. System Requirements To develop applications using the Caching Application Block, you need the following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework 1.1 Microsoft Visual Studio .NET 2003 The Caching Application Block depends on other application blocks and code included in the Enterprise Library: The Configuration Application Block. The Caching Application Block uses this to read its configuration information. Common library functionality. An example of this is instrumentation; it provides various functions for exposing events and data used for system management. The Data Access Application Block. You need this application block if you are going to use a database as a backing store. Additionally, the application block uses XML files to store configuration information. The recommended way to modify this information is to use the Enterprise Library Configuration Console. Design of the Caching Application Block The Caching Application Block was designed to achieve the following goals: To provide a set of APIs that is manageable in size To allow developers to incorporate the standard caching operations into their applications without having to learn the internal workings of the application block To be easily configurable, using the Enterprise Library Configuration Console To perform efficiently

Page 5: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 5

To be thread safe To ensure that the backing store remains intact if an exception occurs while it is being accessed To make sure that the states of the in-memory cache and the backing store remain synchronized Design Highlights Figure 1 shows the interrelationships between the key classes in the Caching Application Block.

Figure 1. Design of the Caching Application Block When you initialize an instance of the CacheManager using the CacheFactory, it internally creates a CacheManagerFactory object, which in turn creates a Cache object. After the Cache object is created, all data in the backing store is loaded into an in-memory representation that is contained in the Cache object. Applications can then make requests to the CacheManager object to retrieve cached data, add data to the cache, and remove data from the cache. When an application uses the GetData method to send a request to the CacheManager object to retrieve an item, the CacheManager object forwards the request to the Cache object. If the item is in the cache, it is returned from the in-memory representation in the cache to the application. If it is not in the cache, the request returns NULL. If the item is in the cache but expired, the item also returns NULL.

Page 6: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 6

When an application uses the Add method to send a request to the CacheManager object to add an item to the cache, the CacheManager object again forwards the request to the Cache object. If there is already an item with the same key, the Cache object first removes it before adding the new item to the in-memory store and the backing store. If the backing store is the default backing store, NullBackingStore, the data is written only to memory. If the number of cached items exceeds a predetermined limit when the item is added, the BackgroundScheduler object begins scavenging. When adding an item, the application can use an overload of the Add method to specify an array of expiration policies, the scavenging priority, and an object that implements the ICacheItemRefreshAction interface. This object can be used to refresh an expired item from the cache. The BackgroundScheduler object periodically monitors the lifetime of items in the cache. When an item expires, the BackgroundScheduler object first removes it and then, optionally, notifies the application that the item was removed. At this point, it is the responsibility of the application to refresh the cache. Test Drive The Caching Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach: Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" and "Scenarios and Goals" sections of the documentation. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation. If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block. Community This application block, like other patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information about our support policy, see the Enterprise Library home page. Roadmap An updated release of the Caching Application Block is planned for the next release of Enterprise Library. That release will target the .NET Framework 2.0 and Visual Studio 2005. The Caching Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback. Authors and Contributors The Enterprise Library Caching Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc)

Page 7: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 7

Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions Related Titles Caching Architecture Guide for .NET Framework Applications Enterprise Library Configuration Application Block Summary This page provides an overview of the Enterprise Library Configuration Application Block. This is reusable and extensible source code-based guidance that simplifies development of common configuration functionality in .NET-based applications. Downloads The latest release of Configuration Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). You can also download an earlier version, named the Configuration Management Application Block, from the Microsoft Download Center's Configuration Management Application Block Web page. Contents Introduction to the Configuration Application Block Design of the Configuration Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Configuration Application Block Almost every application requires some form of configuration information. This information can be as simple as a database connection string or as complex as multipart and hierarchical user preference information. How and where to store an application's configuration data are questions you often face as a developer. Typical solutions include the following: Using configuration files such as XML files or Windows .ini files Using the Windows registry Using databases such as Microsoft SQL Server Each of these alternatives has its strengths and weaknesses; there is no solution that is best in every situation. In a single application, you may have to adopt more than one approach to accommodate the different types of configuration data that your application needs. For example, if your application runs in different environments, you may need to support multiple configuration storage solutions. Other important factors to consider include ensuring the security and integrity of your application's configuration data and minimizing the storage solution's impact on the application's performance. The Enterprise Library Configuration Application Block, version 1.0, addresses these issues and provides a solution that you can use across all of your applications to manage configuration data.

Page 8: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 8

Specifically, the Configuration Application Block provides a flexible data model, a simple method for retrieving configuration data, and extensibility. The Configuration Application Block decouples the ability to read and write configuration data from the specifics of the underlying data store. It does this by using storage providers and transformers to transfer data between the application and the physical store. Storage providers are objects that can read or write to a particular physical store, such as an XML file or a SQL database. Transformers translate the configuration information between the form the application expects (for example a set of objects) and the form the storage provider requires (for example an XML document). The application block is packaged with an XML file storage provider and an XML serializer transformer. You define the storage provider and transformer in a file that contains configuration metadata. Typically, this file is either the Machine.config file, the App.config file, or the Web.config file. The metadata includes information such as the name of the configuration section, the storage location, and the type names of the objects to be used when reading or writing configuration settings. This means that you can change from one type of store to another by changing the information in the file. There is no need to rewrite your application. Similarly, you can change the attributes of your store, such as its location, by changing the same file. Again, there is no need to modify your application code. Deciding where to store configuration data can be done during deployment and operation. Common Scenarios The Configuration Application Block provides a simple interface for reading and writing application configuration data. Retrieving configuration data requires only a single line of code. The following example retrieves a database connection string from the configuration file. [C#] string conString = (string)ConfigurationManager.GetConfiguration("connectionstring"); [Visual Basic] Dim conString As String = ConfigurationManager.GetConfiguration("connectionstring") You can extend the Configuration Application Block by creating custom storage providers that allow you to use other data stores, such as the Windows registry or a SQL database. You add these custom providers to the Configuration Application Block by changing the configuration metadata file. You do not need to modify or rebuild the Configuration Application Block to use different stores. You can also add custom transformers to translate the configuration data for the application and for the store. Audience Requirements This application block is intended for software architects and software developers. To benefit fully from this guidance, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system .NET Framework Highlights of Version 1.0 Release The Enterprise Library Configuration Application Block, version 1.0, uses the Enterprise Library Configuration Console to manage configuration settings. It also lets you add your own storage providers and transformers. Migrating from the Configuration Management Application Block There are significant differences between the Enterprise Library Configuration Application Block, version 1.0, and the Configuration Management Application Block: This version of the application block includes support for storing configuration data in XML files. If you have used other types of data stores, such as the Windows registry or a SQL database, you can either create a custom storage provider and transformer, or you can convert your data to XML. There is no longer support for using name/value pairs to represent configuration data or for hash table serialization. To read configuration data into your application or to write it to a configuration file, you declare a class that will contain the data. This class should be able to use the output of the transformer. System Requirements To develop application blocks using the Configuration Application Block, you need the following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework 1.1 Microsoft Visual Studio .NET 2003 Configuration Application Block Dependencies The Configuration Application Block depends on code included in the Enterprise Library, including common library functionality, such as instrumentation, which provides various functions for exposing events and data used for system management.

Page 9: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 9

In addition, the application block uses XML files to store configuration information. The recommended way to modify this information is to use the Enterprise Library Configuration Console. Design of the Configuration Application Block The Configuration Application Block was designed to achieve the following goals: To provide a simple interface for both reading and writing configuration data To insulate applications from the physical storage location of the configuration data To provide an extensible model that allows for custom storage locations and the run-time representation of configuration settings Design Highlights Figure 1 shows the relationships between the classes and objects that comprise the Configuration Application Block. The figure assumes that you are using the XML file storage provider and transformer that are included with the application block. The XML file storage provider stores configuration data in a file. (Other providers use other forms of storage such as the Windows registry.) The XmlFileStorageProvider object points to a file that contains the configuration settings for a particular configuration section. The ConfigurationBuilder object points to a file that contains the configuration metadata for a particular configuration section. Typically, the file that contains the configuration metadata is named App.config for Windows-based applications or Web.config for Web-based applications.

Figure 1. Design of the Configuration Application Block

Page 10: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 10

The Configuration Application Block separates configuration metadata from the actual configuration settings. The application block places the metadata in its own file separate from the location where the configuration settings are stored. Configuration settings are grouped together and referred to as a configuration section. Each Enterprise Library application block that your application uses has its own configuration section that is stored in its own file. The Configuration Application Block accesses the data in a configuration by using the configuration metadata. The metadata points to the configuration storage location and contains information such as the type of transformer and storage provider that the Configuration Application Block needs to read and to write the configuration data. The configuration metadata file is divided into sections. Each section contains the information that is required to read and write a particular group of configuration settings from and to a configured storage location. The ConfigurationManager class provides a static facade to read and write configuration settings for a specified configuration section in a defined storage location. The ConfigurationManager object reads configuration metadata from the application domain configuration file and uses that information to read and write the configuration section information. The static methods of the ConfigurationManager class use an instance of a ConfigurationBuilder object. The ConfigurationBuilder creates the file storage provider and the transformer objects. These objects manage the configuration data and metadata. The IStorageProviderReader interface defines the interface that is used to read configuration information from a storage location. The IStorageProviderWriter interface implements the IStorageProviderReader interface and also defines the interface that is used to write configuration information. The Configuration Application Block includes one provider that supports this interface, XmlFileStorageProvider, which reads and writes configuration data to an XML file. The ITransformer interface transforms configuration settings objects between the application and the storage provider. The Configuration Application Block includes one provider, the XmlSerializerTransformer class, which implements this interface. The XmlSerializerTransformer class translates between application-defined run-time objects and XmlNode objects. Applications are not required to configure a transformer. If there is no transformer, configuration settings objects are returned to the application in the same form as provided by the storage provider. The settings for each configuration section are cached in a hash table. When the client requests configuration data, the ConfigurationBuilder object looks for the data in the cache. If the configuration data is found in the cache, the ConfigurationBuilder object does not access the configuration data that is in storage. The ConfigurationBuilder object clears the cache if the file storage provider detects that configuration data has changed in storage. The ConfigurationManager object allows applications to clear the cache, either entirely or for only a given section name. If the cache is cleared, the next read operation accesses the configuration settings from the storage location. In summary, the Configuration Application Block is designed so that you can store configuration data in your application in whatever way best suits the application's requirements. You are not constrained by the storage method. The IStorageProviderReader and IStorageProviderWriter interfaces and, optionally, the ITransformer interface, decouple the in-memory representation from the representation that is used in the physical store. Test Drive The Configuration Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach: Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" section of the documentation. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation. If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block. Community This application block, like other patterns & practices deliverables, is associated with a community site.

Page 11: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 11

On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information about our support policy, see the Enterprise Library home page Roadmap An updated release of the Configuration Application Block is planned for the next release of Enterprise Library. This release will target the .NET Framework 2.0 and Visual Studio 2005. The Configuration Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback. Authors and Contributors The Enterprise Library Configuration Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc) Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates), Paul Currit (Avanade Inc.) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions. Related Titles Enterprise Library Data Access Application Block Summary This page provides an overview of the Enterprise Library Data Access Application Block. This is reusable and extensible source code-based guidance that simplifies development of common data access functionality in .NET-based applications. Downloads The latest release of Data Access Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). You can also download earlier releases of the Data Access Application Block: Data Access Application Block 2.0 Data Access Application Block 1.0

Page 12: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 12

Contents Introduction to the Data Access Application Block Design of the Data Access Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Data Access Application Block The Enterprise Library Data Access Application Block, version 1.0, simplifies development tasks that implement common data access functionality. Applications can use the application block in a variety of situations, such as reading data for display, obtaining data to pass through application layers, and submitting changed data back to the database system. The application block includes support for both stored procedures and in-line SQL, and common housekeeping tasks such as managing connections and creating and caching parameters are encapsulated in the application block's methods. In other words, the Data Access Application Block provides access to the most frequently used features of ADO.NET. The application block also facilitates the development of portable application code, allowing the code to remain uniform across multiple database servers, including Microsoft SQL Server, Oracle, and DB2. It does so by using an abstract base class that defines a common interface and provides much of the implementation for the data access methods, Applications written for one type of database—such as SQL Server—look the same as applications written for another type of database, such as Oracle. By using the Data Access Application Block and by following the guidelines in this document, your code remains mostly portable. Another feature is that application code can refer to particular databases by name, such as "Customer" or "Inventory." Changing the name in the application configuration allows developers to use their applications with different database configurations, without having to recompile their code. The Data Access Application Block has the following features: It reduces the need to write boilerplate code to perform standard tasks. It helps maintain consistent data access practices, both in an application and across the enterprise. It reduces difficulties in changing the physical database target. It relieves developers from learning different programming models for different types of databases. It reduces the amount of code that needs to be rewritten when porting applications to different types of databases. Common Scenarios Developers often write applications that use databases. Because it is so common, developers may find themselves writing the same code over and over, for each application. In addition, these applications may need to work with different types of databases. Although the tasks are the same, the code must be adapted to suit the programming model of each database. The Data Access Application Block solves these problems by providing an implementation of the most common data access tasks. Developers only need to do the following: Create the database object. Supply the parameters for the command, if they are needed. Call the appropriate method. These methods are optimized for performance. They are also portable. The Data Access Application Block works transparently with SQL Server, DB2, and Oracle databases. Audience Requirements This guide is intended for software architects and software developers. To benefit fully from this guide, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system .NET Framework Microsoft SQL Server, Oracle, or DB2 databases Highlights of Version 1.0 Release The Enterprise Library Data Access Application Block, version 1.0, includes the following new features: A graphical tool for managing configuration settings Support for multiple database systems, with the ability to add additional systems

Page 13: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 13

A factory and named instances that abstract the database and the connection string, respectively Support for parameter caching has been expanded to allow applications to clear the cache Migrating from Previous Versions of the Data Access Application Block Users of earlier releases of the Data Access Application Block should recognize many of the scenarios addressed by the Enterprise Library version. While the current version builds on the knowledge and feedback gained from earlier releases, it represents a significant change in how those scenarios are addressed. The following list describes the changes between the Enterprise Library version of the Data Access Application Block and earlier versions: The static helper methods available in the earlier versions of the application block have been replaced by methods on instantiated data access objects. Another style of overloads that accepts new data access objects is now provided. When using this style, all data access functionality is exposed through two overloads, one to use when executing commands outside of a transaction and another to use when executing commands inside of a transaction. The numerous overloads for each data access method have been reduced. The database-specific object is created with a factory, which uses configuration information to determine the type of object to create. Connection string information has been moved to a configuration file and is no longer used on the method calls. Using the Enterprise Library Configuration Console allows you to configure your databases, and if needed, encrypt the configuration information in storage. A separate class now represents command information. Developers create and initialize a command object, which is then passed to the appropriate method in the Database class. The following code illustrates an application using the Data Access Application Block to perform a database query that returns a dataset. [C#] myDataSet = DatabaseFactory.CreateDatabase(“Sales”).ExecuteDataSet("GetOrdersByCustomer", myCustomerId ); [VB] myDataSet = DatabaseFactory.CreateDatabase("Sales").ExecuteDataSet("GetOrdersByCustomer", myCustomerId); Notice that the code the developer writes references the database by name. The actual database type and connection string are stored in the configuration. System Requirements To develop applications using the Data Access Application Block, you need the following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework 1.1 Microsoft Visual Studio .NET 2003 A database server running SQL Server 7.0 or later, Oracle 9i, or DB2 (If you are using a DB2 database, you also need the IBM UDB 8.1.2 data provider) Data Access Application Block Dependencies The application blocks that are provided with the Enterprise Library are designed to be used in conjunction with each other. Sometimes, the application blocks have dependencies on other application blocks and code that is included with the Enterprise Library. The Data Access Application Block has the following dependencies: The Configuration Application Block. The Data Access Application Block uses the Configuration Application Block to read its configuration information. Common library functionality, such as instrumentation. It provides various functions for exposing events and data used for system management. By default, the application block uses XML files to store configuration information. The recommended way to modify this information is to use the Enterprise Library Configuration Console. You can use the Enterprise Library Configuration Console to encrypt and protect the database configuration information containing connection strings. Connection strings may contain passwords, network addresses, and other sensitive information. To learn more about encrypting configuration settings, see the documentation for the Enterprise Library Configuration Application Block.

Page 14: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 14

Design of the Data Access Application Block The Data Access Application Block was designed to achieve the following goals: To encapsulate the logic used to perform the most common data access tasks To relieve developers of the need to write duplicate code for common data access tasks To minimize the need for custom code To incorporate best practices for data access, as described in the .NET Data Access Architecture Guide. To perform within 5 percent of ADO.NET's efficiency To have a small number of objects and classes To ensure that all of the application block's functions work identically for different types of databases To ensure that applications written for one type of database are, in terms of data access, the same as applications written for another type of database To use database connection information stored in configuration Design Highlights Figure 1 shows the interrelationship between the key classes in the Data Access Application Block.

Figure 1. Design of the Data Access Application Block The abstract base class Database defines the common interface and provides much of the implementation for the data access methods. The SqlDatabase, OracleDatabase and Db2Database classes derive from the Database class.

Page 15: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 15

They provide methods to their respective database server systems, which include common functionality that is implemented differently from database to database, as well as functionality unique to that database system. Database commands and parameters are handled differently across database systems. The abstract class DbCommandWrapper provides the interface definition for database-specific classes that will wrap IDbCommand and provide parameter handling. The DatabaseFactory class provides a static method, CreateDatabase, to encapsulate the logic that creates the appropriate Database object. By using the factory to create the correct database object, the client code is not bound to a specific database type. The DatabaseFactory class uses the Configuration Application Block to retrieve the required configuration information, including the fully qualified type name and the connection string of the specific Database-derived class to be created. The application block supports the dynamic discovery of parameters. This discovery requires a round trip to the database system. The ParameterCache class allows parameter information to be cached, thus avoiding round trips for subsequent invocations of the same stored procedure. Test Drive The Data Access Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach: Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" and "Scenarios and Goals" sections of the documentation. Run the scripts to configure the application block's QuickStart samples. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block. Community This application block, like other patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please see the Enterprise Library Community site. The community site is the preferred feedback and support channel as it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information about our support policy, see the Enterprise Library home page Roadmap An updated release of the Data Access Application Block is planned for the next release of Enterprise Library. This release will target the .NET Framework 2.0 and Visual Studio 2005. The Data Access Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback.

Page 16: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 16

Authors and Contributors The Enterprise Library Data Access Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc) Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions Related Titles .NET Data Access Architecture Guide Enterprise Library Cryptography Application Block Summary This page provides an overview of the Enterprise Library Cryptography Application Block. This is reusable and extensible source code-based guidance that simplifies development of common cryptographic functionality in .NET-based applications. Downloads This release of Cryptography Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). Contents Introduction to the Cryptography Application Block Design of the Cryptography Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Cryptography Application Block The Microsoft Enterprise Library Cryptography Application Block, version 1.0, simplifies how developers incorporate cryptography functionality in their applications. Applications can use the application block for a variety of tasks, such as encrypting information, creating a hash from data, and comparing hash values to verify that data has not been altered. The Cryptography Application Block has the following features: It reduces the requirement to write boilerplate code to perform standard tasks, providing implementations that you can use to solve common application cryptography problems. It helps maintain consistent cryptography practices, both in an application and across the enterprise. It eases the learning curve for developers by using a consistent architectural model across the various areas of functionality that are provided. It provides implementations that you can use to solve common application cryptography problems. It is extensible; supporting additional implementations of cryptography providers.

Page 17: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 17

Common Scenarios Developers frequently write applications that require encryption and hashing capabilities to meet the security requirements of their organization. Data that is created and maintained by applications, as well as configuration information, often needs to be encrypted. Additionally, passwords that are used to access application functionality or data need to be hashed. The Cryptography Application Block simplifies the work of developers by abstracting application code from specific cryptography providers. You can change underlying providers through configuration changes without changing the underlying application code. It also encapsulates best-practice implementation of common challenges associated with cryptography such as encrypting and persisting cryptographic keys. Audience Requirements This guide is intended for software architects and software developers. To benefit fully from this guide, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system .NET Framework (including .NET Framework cryptography concepts) Highlights of Version 1.0 Release The Enterprise Library Cryptography Application Block, version 1.0, includes the following new features: A graphical tool for managing configuration settings Two implementations of a hash provider A small number of methods that simplify the most common cryptography tasks System Requirements The requirements for the Cryptography Application Block are the following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework version 1.1 Microsoft Visual Studio .NET 2003 Cryptography Application Block Dependencies The application blocks that are provided with the Enterprise Library are designed to be used in conjunction with each other. Sometimes, the application blocks have dependencies on other application blocks and code that is included with the Enterprise Library. The Cryptography Application Block has the following dependencies: The Configuration Application Block. The Cryptography Application Block uses the Configuration Application Block to read its configuration information, and to ensure that the keys that are used for encryption are themselves encrypted. Common library functionality, such as instrumentation. It provides various functions for exposing events and data used for system management. It also provides classes that help with the correct use of DPAPI. In addition, the application block uses XML files to store configuration information. The recommended way to modify this information is to use the Enterprise Library Configuration Console. Design of the Cryptography Application Block The Cryptography Application Block was designed to achieve the following goals: Provide a simple and intuitive interface to the commonly required functionality Encapsulate the logic that is used to perform the most common application cryptography tasks Present a standard consistent model for common cryptography tasks Make sure that the application block is extensible Make sure minimal or negligible performance impact compared to manually written cryptography code that accomplishes the same functionality Figure 1 illustrates the design of the Cryptography Application Block.

Page 18: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 18

Figure 1. Design of the Cryptography Application Block The Cryptography Application Block is designed to externalize all decisions about how to deal with cryptography from a running application. This design lets you change cryptography behavior without changing the code of the application. Test Drive The Cryptography Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach: Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" and "Scenarios and Goals" sections of the documentation. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation. If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block.

Page 19: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 19

Community This application block, like other patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information about our support policy, see the Enterprise Library home page Roadmap An updated release of the Cryptography Application Block is planned for the next release of Enterprise Library. This release will target the .NET Framework 2.0 and Visual Studio 2005. The Cryptography Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback. Authors and Contributors The Enterprise Library Cryptography Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc) Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates), Timothy Shakarian (Avanade Inc) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions Related Titles Enterprise Library Exception Handling Application Block Summary This page provides an overview of the Enterprise Library Exception Handling Application Block. This is reusable and extensible source code-based guidance that simplifies development of common exception handling functionality in .NET-based applications. Downloads The latest release of Exception Handling Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005

Page 20: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 20

The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). You can also download an earlier version, named the Exception Management Application Block, from the Microsoft Download Center's Exception Management Application Block Web page. Contents Introduction to the Exception Handling Application Block Design of the Exception Handling Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Exception Handling Application Block The Enterprise Library Exception Handling Application Block, version 1.0, lets developers and policy makers create a consistent strategy for processing exceptions that occur throughout the architectural layers of enterprise applications. It does this in the following ways: It supports exception handling throughout an application's architectural layers and is not limited to service interface boundaries. It enables exception-handling policies to be defined and maintained at the administrative level so that policy makers, who may be system administrators as well as developers, can define how to handle exceptions. They can maintain and modify the sets of rules that govern exception handling without changing the block's application code. It provides commonly used exception-handling functions, such as the ability to log exception information, the ability to hide sensitive information by replacing the original exception with another exception, and the ability to add contextual information to an exception by wrapping the original exception inside another exception. These functions are encapsulated in .NET classes named exception handlers. It can combine exception handlers to produce the desired response to an exception, such as logging exception information followed by replacing the original exception with another. It lets developers create their own exception handlers. It invokes exception handlers in a consistent manner. This means that the handlers can be used in multiple places in and across applications. Common Scenarios The Exception Handling Application Block is designed to support the typical code contained in catch statements in application components. Instead of repeating this code (such as logging exception information) throughout identical catch blocks in an application component, the application block allows developers to encapsulate this logic as reusable exception handlers. Exception handlers are .NET classes that encapsulate exception handling logic and implement the Exception Handling Application Block interface named IExceptionHandler. The Exception Handling Application Block includes three exception handlers: Wrap handler. This exception handler wraps one exception around another. Replace handler. This exception handler replaces one exception with another. Logging handler. This exception handler formats exception information, such as the message and the stack trace. Then the logging handler gives this information to the Enterprise Library Logging and Instrumentation Application Block so that it can be published. The Exception Handling Application Block lets you associate exception types with named policies. You do this using the Configuration Console. Policies specify the exception handlers that execute when a particular exception type is processed by the application block. You can chain these handlers together so that a series of them execute when the associated exception type is handled. Audience Requirements This application block is intended for software architects and software developers. To benefit fully from this guidance, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system .NET Framework Highlights of Version 1.0 Release The Enterprise Library Exception Handling Application Block, version 1.0, includes the following new features:

Page 21: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 21

A graphical tool for managing configuration settings A broad set of tools for developing exception handling policies The ability to define and maintain exception-handling policies at the administrative level Commonly used exception-handling functions Migrating from the Exception Management Application Block The earlier version of the application block, named the Exception Management Application Block, was used to publish exception information to particular locations. The new application block, named the Exception Handling Application Block, provides a broader set of tools for developing exception handling strategies. There are three major differences between the Exception Handling Application Block and the Exception Management Application Block: The task of publishing exception information is no longer integrated with other exception handling tasks. Instead, it is handled specifically by the logging handler. The logging handler formats the information and hands it off to the Logging and Instrumentation Application Block to publish the information. Exception handlers can be chained together, with each handler having the ability to execute before the exception that is delivered to subsequent handlers in the chain. The Exception Management Application Block operated only on the original exception that was passed to it by the application and it could only log the exception information. The Exception Handling Application Block provides a much broader set of abilities. It can change, suppress, or add information to the exception and replaces most of the code typically found in an application's catch statements. System Requirements To develop application blocks using the Exception Handling Application Block you need following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework 1.1 Microsoft Visual Studio .NET 2003 Exception Handling Application Block Dependencies The application blocks that are provided with the Enterprise Library are designed to be used in conjunction with each other. Sometimes, the application blocks have dependencies on other application blocks and code that is included with the Enterprise Library. The Exception Handling Application Block has the following dependencies: The Enterprise Library Configuration Application Block. The Exception Handling Application Block uses this to read its configuration information. Common library functionality, such as instrumentation. This provides various functions for exposing events and data used for system management. The application block includes an exception handler that logs exception information. Applications that use this logging exception handler require the Logging and Instrumentation Application Block. By default the application block uses XML files to store configuration information. The recommended way to modify this information is to use the Enterprise Library Configuration Console. Design of the Exception Handling Application Block The Exception Handling Application Block is designed to achieve the following goals: To encapsulate the logic used to perform the most common exception handling tasks into minimal application code To relieve developers of the requirement to write duplicate code and custom code for common exception handling tasks To allow exception handling policies to be changed after they have been deployed and to ensure that changes happen simultaneously and consistently To incorporate best practices for exception handling Design Highlights Figure 1 shows the interrelationships between the key classes in the Exception Handling Application Block.

Page 22: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 22

Figure 1. Design of the Exception Handling Application Block Test Drive The Exception Handling Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach: Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" and "Scenarios and Goals" sections of the documentation. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation. If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block. Community This application block, like other patterns & practices deliverables, is associated with a community site. On this community site you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials.

Page 23: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 23

Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information on our support policy, see the Enterprise Library home page Roadmap An updated release of the Exception Handling Application Block is planned for the next release of Enterprise Library. This release will target the .NET Framework 2.0 and Visual Studio 2005. The Exception Handling Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback. Authors and Contributors The Enterprise Library Exception Handling Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc) Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates), Timothy Shakarian (Avanade Inc) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions Related Titles Exception Management Architecture Guide Enterprise Library Logging and Instrumentation Application Block Summary This page provides an overview of the Enterprise Library Logging and Instrumentation Application Block. This is reusable and extensible source code-based guidance that simplifies development of common logging and instrumentation functionality in .NET-based applications. Downloads The latest release of Logging and Instrumentation Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). You can also download the earlier version, named the Logging Application Block, from the Microsoft Download Center's Logging Application Block Web page.

Page 24: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 24

Contents Introduction to the Logging and Instrumentation Application Block Design of the Logging and Instrumentation Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Logging and Instrumentation Application Block The Enterprise Library Logging and Instrumentation Application Block, version 1.0, lets developers incorporate standard logging and instrumentation functionality in their applications. Applications can use the Logging and Instrumentation Block to log events to a variety of locations: The event log E-mail messages A database A message queue A file WMI The Logging and Instrumentation Application Block helps with application development in a number of ways: It helps maintain consistent logging and instrumentation practices, both within an application and across the enterprise. It eases the learning curve for developers by using a consistent architectural model. It provides implementations that you can use to solve common application logging and instrumentation problems. It is extensible, supporting custom implementations of formatters and event sinks. Common Scenarios Developers frequently write applications that require logging and instrumentation functionality. Typically, these applications must format events appropriately and log events, either locally or over the network. In some cases, you may have to collate events from multiple sources onto a single computer. The Logging and Instrumentation Application Block simplifies application development by collecting together many of the most common logging and instrumentation tasks that need to be included in applications. Each task is handled in a consistent manner, abstracting the application code from the specific logging and instrumentation providers. The architectural model lets you change underlying event sinks and formatters through configuration changes, without changing the application code. Audience Requirements This application block is intended for software architects and software developers. To benefit fully from this guidance, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system .NET Framework (including an understanding of logging and instrumentation concepts) Highlights of Version 1.0 Release The Logging and Instrumentation Application Block builds on the functionality of two earlier application blocks, the Logging Application Block and the Exception Management Application Block. This version of the Logging and Instrumentation Application Block includes a number of features that are not contained in the earlier application blocks: Logging without the need for the Enterprise Instrumentation Framework (EIF) Support for an e-mail event sink Support for a database event sink, instead of a specific SQL Server event sink Configuring formatters through the Enterprise Library Configuration Console Migrating from the Logging Application Block Users of the Logging Application Block should recognize many of the scenarios addressed by the Logging and Instrumentation Application Block. Although the current version builds on the knowledge and feedback gained from earlier versions, it represents a significant change in how those scenarios are addressed.

Page 25: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 25

Key differences between the Enterprise Library version of the Logging and Instrumentation Application Block and the Logging Application Block include the following: It no longer has any dependencies on the Enterprise Instrumentation Framework (EIF). It uses formatters that are defined in the Enterprise Library Configuration Console instead of creating specific XSLT files. It no longer provides a Trace Log event sink. It no longer supports multiple formatters that are chained together. Instead, all the formatting information is contained in a single formatter. It no longer provides an encryption formatter. System Requirements To use the Logging and Instrumentation Application Block, you need the following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework version 1.1 Microsoft Visual Studio .NET 2003 Enterprise Architect, Enterprise Developer, or .NET Professional edition Stores to maintain log messages (exactly what is required depends on the specific event sinks you use) Logging and Instrumentation Application Block Dependencies The Enterprise Library application blocks are designed to be used in conjunction with each other. In some cases, the application blocks have dependencies on other application blocks and code included in the Enterprise Library. The Logging and Instrumentation Application Block has dependencies on the following: The Configuration Application Block. The Logging and Instrumentation Application Block uses this to read its configuration information. Common library functionality, such as instrumentation. This provides various functions for exposing events and data that are used for system management. Depending on the specific functionality you require from the Logging and Instrumentation Application Block, you may also require the Data Access Application Block, which the Logging and Instrumentation Application Block uses for the database event sink. The application block uses XML files to store configuration information. The recommended way to modify this information is to use the Enterprise Library Configuration Console. Design of the Logging and Instrumentation Application Block The Logging and Instrumentation Application Block was designed to achieve the following goals: Make sure that the code to use the application block is clear and straightforward. Provide a simple and intuitive object model. Encapsulate the logic that is used to perform the most common application logging and instrumentation tasks Present a standard consistent model for common logging and instrumentation tasks. Minimize the need for custom logging and instrumentation-related code. Make sure that the application block is easily and highly configurable. Make sure that the application block is extensible. Make sure there is minimal or negligible performance impact compared to manually written logging code that accomplishes the same functionality. Design Highlights Figure 1 illustrates the design of the Logging and Instrumentation Application Block.

Page 26: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 26

Figure 1. Design of the Logging and Instrumentation Application Block The Logging and Instrumentation Application Block is designed to externalize all decisions about how to deal with events from a running application. This design lets you change logging behavior without changing the code of the application. Test Drive The Logging and Instrumentation Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach: Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" and "Scenarios and Goals" sections of the documentation. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation.

Page 27: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 27

If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block. Community This application block, like other patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information about our support policy, see the Enterprise Library home page. Roadmap An updated release of the Logging and Instrumentation Application Block is planned for the next release of Enterprise Library. This release will target the .NET Framework 2.0 and Visual Studio 2005. The Logging and Instrumentation Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback. Authors and Contributors The Enterprise Library Logging and Instrumentation Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc) Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates), Hisham Baz (Avanade Inc), Timothy Shakarian (Avanade Inc) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions Related Titles Exception Management Architecture Guide Enterprise Library Security Application Block Summary This page provides an overview of the Enterprise Library Security Application Block. This is reusable and extensible source code-based guidance that simplifies development of common security functionality in .NET-based applications.

Page 28: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 28

Downloads The latest release of Security Application Block is included as a part of the patterns & practices Enterprise Library, January 2005. To learn about and download Enterprise Library, use the following links: Enterprise Library home page Download Enterprise Library, January 2005 The terms of use of Enterprise Library are specified in the End User Licensing Agreement (EULA). You can also download an earlier application block, named the Authorization and Profile Application Block, from the Microsoft Download Center's Authorization and Profile Application Block Web page. The Authorization and Profile Application Block includes a subset of the Security Application Block’s functionality. Contents Introduction to the Security Application Block Design of the Security Application Block Test Drive Community Feedback and Support Roadmap Authors and Contributors Related Titles Introduction to the Security Application Block The Microsoft Enterprise Library Security Application Block, version 1.0, helps developers implement common security-related functionality in their applications. Applications can use the application block in a variety of situations, such as authenticating and authorizing users against a database, retrieving role and profile information, and caching user profile information. The Security Application Block has the following features: It reduces the requirement to write boilerplate code to perform standard tasks. It helps maintain consistent security practices, both within an application and across the enterprise. It eases the learning curve for developers by using a consistent architectural model across the various areas of functionality provided. It provides implementations that you can use to solve common application security problems. It is extensible; it supports custom implementations of security providers. Common Scenarios Developers frequently write applications that require security functionality. These applications typically have to perform a diverse series of security operations, and they will frequently interact with differing underlying security providers, such as the Microsoft Active Directory directory service, Authorization Manager, Active Directory Application Mode (ADAM) and custom databases. The Security Application Block simplifies the work of developers by collecting together many of the most common security tasks that a developer has to perform. Each task is handled in a consistent manner, abstracting the application code from the specific security providers and using best practices. You can even change underlying providers through configuration changes, without changing the underlying application code. The Security Application Block provides code that will help you with the following scenarios: Authentication Authorization Role management Profile management Caching principals Audience Requirements This application block is intended for software architects and software developers. To benefit fully from this guidance, you should have an understanding of the following technologies: Microsoft Visual C# development tool or Microsoft Visual Basic development system NET Framework (including .NET security concepts) Basic knowledge of topics such as Microsoft Windows authentication and authorization Highlights of Version 1.0 Release

Page 29: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 29

The Security Application Block is an enhancement of an earlier application block, named the Authorization and Profile Application Block. This release of the Security Application Block includes a number of features not contained in the Authorization and Profile Application Block. These features include the following: Authentication support Authorization without the requirement for Authorization Manager Caching of security related credentials Additional providers Migrating from the Authorization and Profile Application Block Users of the Authorization and Profile Application Block should recognize many of the scenarios addressed by the Enterprise Library Security Application Block. The current version builds on the knowledge and feedback gained from earlier releases, and it represents a significant change in how those scenarios are addressed. Some of the key differences between the Enterprise Library version of the Security Application Block and the Security and Profile Application Block include the following: The Enterprise Library Security Application Block includes functionality to assist with authentication. The Authorization and Profile Application Block did not include any functionality to implement authentication. Instead of calling provider managers, developers now call methods on factory classes. These classes are consistent across the different areas of functionality of the application block. Instead of using an Extended Principal with additional methods, the methods are supplied with the providers. This allows you to use them with custom IPrincipal implementations. System Requirements The requirements for the Security Application Block are the following: Microsoft Windows 2000, Windows XP Professional, or Windows Server 2003 operating system Microsoft .NET Framework version 1.1 Microsoft Visual Studio .NET 2003 Stores to maintain data used for authentication, authorization, profile, and role information (exact requirements depend on how you use the application block) A store to cache security information (required only if you use the caching functionality of the application block) One or more authorization stores to maintain authorization data (if you are going to use the application block for authorization) Note If you use the Authorization Manager provider, it requires Microsoft Windows 2000 Server with Service Pack 4 or Microsoft Windows Server 2003. Security Application Block Dependencies The Enterprise Library Application Blocks are designed to be used in conjunction with each other. Sometimes, the application blocks have dependencies on other application blocks and code that is included with the Enterprise Library. The Security Application Block has the following dependencies: The Configuration Application Block. The Security Application Block uses it to read its configuration information. Common library functionality, such as instrumentation. This provides various functions for exposing events and data used for system management. Depending on the specific functionality you require from the Security Application Block, you may also require one or both of the following application blocks contained in the Enterprise Library: The Data Access Application Block. The database providers of the Security Application Block use the Data Access Application Block to access security information contained in a database. The Caching Application Block. The Security Application Block uses the Caching Application Block to cache security information and then retrieve it when required. By default, the application block uses XML files to store configuration information. You can modify this configuration information to change the behavior of the application block. The recommended way to modify this information is to use the Enterprise Library Configuration Console. The actual security information (authorization data, authentication stores and profile information) is managed by the providers of the respective areas of the application block.

Page 30: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 30

Design of the Security Application Block The Security Application Block is designed to achieve the following goals: To provide a simple and intuitive interface to the commonly required functionality To encapsulate the logic used to perform the most common application security tasks To present a standard provider model for common security tasks Ensure that the application block is extensible Ensure minimal or negligible performance impact compared to manually written security code that accomplishes the same functionality To incorporate best practices for application security Design Highlights Figure 1 illustrates the design of the Security Application Block.

Figure 1. Design of Security Application Block The Security Application Block incorporates implementations of commonly needed application security functionality into its design. These tasks include authorization, authentication, profile management, and role management. Test Drive The Security Application Block has been developed as a result of analyzing common enterprise development challenges and successful solutions to these challenges. However, because each application is unique, you will not find this application block suitable for every application. To evaluate this application block and determine its applicability to your projects, Microsoft suggests you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach:

Page 31: Enterprise Library Documentation

All this resources are copied from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp ONLY TO PROVIDE A PRINTER FRIENDLY VERSION

This version is created by [email protected] for printing purposes ONLY. 31

Download Enterprise Library. Install Enterprise Library and compile all application blocks and tools. Read the "Introduction" section of the documentation. Compile and run the QuickStart samples, and read through the related "QuickStart Walkthroughs" and "Key Scenarios" sections of the documentation. If the application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block. Community This application block, like other patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future application blocks, and download additional content such as extensions and training materials. Feedback and Support Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Alternatively, you can send e-mail directly to the Microsoft patterns & practices team at [email protected], although we are unable to respond to every message. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff. For more information on our support policy, see the Enterprise Library home page. Roadmap An updated release of the Security Application Block is planned for the next release of Enterprise Library. This release will target the .NET Framework 2.0 and Visual Studio 2005. The Security Application Block will be updated to work with the .NET Framework 2.0 and may include additional improvements based on customer feedback. Authors and Contributors The Enterprise Library Security Application Block was produced by the following people: Program Managers: William Loeffler (Microsoft Corporation), Linh Nguyen (Avanade Inc) Product Manager: Tom Hollander (Microsoft Corporation) Architects: Edward Jezierski (Microsoft Corporation), Kyle Huntley (Avanade Inc) Development: Scott Densmore, Peter Provost (Microsoft Corporation), Brian Button (Murphy and Associates), Hisham Baz (Avanade Inc), Paul Currit (Avanade Inc), Rick Zimmerman (Avanade Inc) Test: Mohammad Al-Sabt, Carlos Farre (Microsoft Corporation), Rohit Sharma, Mani Krishnaswami, Prashant Bansode (Infosys Technologies Ltd) Documentation and Samples: RoAnn Corbisier (Microsoft Corporation), Tim Osborn (Ascentium Corporation), Roberta Leibovitz (Modeled Computation LLC), Paul Slater (Wadeware LLC), Tina Burden McGrayne (Linda Werner & Associates Inc) Many thanks to the following advisors who provided invaluable assistance: Rudy Araujo, Yen-Ming Chen, Mark Curphey and David Raphael of Foundstone Inc. Benoit Morneau and Shoichi Takasaki of Bowne Global Solutions Related Titles Exception Management Architecture Guide Improving Web Application Security: Threats and Countermeasures Enterprise Library