微软企业库代码的分析工作
1.介绍和使用摘要 patterns & practices 企业程序库是一个设计为协助开发人员处理企业开发常见问题的应用程序块的程序库。应用程序块是指导类型的,它提供可由开发人员“按原样”使用、进行扩展或 修改的源代码,以用于企业开发项目。企业程序库包含以前作为独立应用程序块使用的应用程序块的新版本和更新版本。所有企业程序库应用程序块的更新都特别注 重一致性、可扩展性、易于使用和集成。 企业程序库应用程序块应用程序块可以帮助开发人员解决每个项目都会遇到的常见问题。它们在设计时封装了 Microsoft 推荐的 .NET 应用程序最佳做法。它们可以快速而轻松地插入到 .NET 应用程序中。例如,数据访问应用程序块提供对 ADO.NET 最常用功能的访问,并通过易于使用的类将其公开。应用程序块还添加了基础类库不直接支持的相关功能。 组成企业程序库的应用程序块如下:
不同的应用程序有不同的要求,您会发现并不是每个应用程序块在您构建的每个应用程序中都有用。在使用应用程序块之前,您应该对应用程序需求以及应用程序块计划处理的方案有充分的了解。 我们的目标是建立一个广泛的客户和合作伙伴社区 — 使用、共享和扩展他们自己的与 patterns & practices 企业程序库相一致并集成到其中的应用程序块。例如,企业程序库的一部分是根据 Avanade Inc 授权的 ACA.NET 改写的。要参加该社区,请访问企业程序库社区站点。 企业程序库的主要主题如下:
什么是指导?企业程序库是一个设计为可以重用、自定义和扩展的指导性产品。它不是 Microsoft 产品。下表描述了基于代码的指导性产品(包括企业程序库)的一些关键属性。
2.功能的分析缓存应用程序块简介Enterprise Library Caching Application Block 1.0 版可让开发人员将本地缓存集成到其应用程序中。它支持内存缓存和后备存储(可选),后者可以是企业程序库数据访问应用程序块或独立存储。应用程序块无需修 改即可使用,它还可以提供检索、添加和删除缓存数据所需的全部功能。可配置的过期时间与清除策略也是应用程序块的一部分功能。 在构建企业级分布式应用程序时,架构师和开发人员面临着许多难题。缓存可以帮助您克服其中的一些难题,包括:
常见情况 缓存应用程序块适用于以下任何一种情况:
缓存应用程序块可用于以下任何一个应用程序类型:
应该将缓存应用程序块部署在单个应用程序域中。每个应用程序域都可以有一个或多个缓存(可以有也可以没有后备存储)。缓存不能在不同的应用程序域之间共享。 缓存应用程序块的性能已优化,并且是线程安全和异常安全的。您可以对它进行扩展,以包括您自己的过期策略和后备存储。 缓存应用程序块的设计缓存应用程序块旨在实现以下目标:
设计要点 图 1 展示了缓存应用程序块中关键类的相互关系。 图 1.缓存应用程序块的设计 当使用 CacheFactory 初始化 CacheManager 的实例时,它会在内部创建一个 CacheManagerFactory 对象,而该对象又会创建一个 Cache 对象。创建 Cache 对象后,后备存储中的所有数据就会加载到一个内存表示中,该表示包含在 Cache 对象中。然后,应用程序可以请求 CacheManager 对象检索缓存数据、将数据添加到缓存中,以及从缓存中删除数据。 当应用程序使用 GetData 方法向 CacheManager 对象发送检索某项的请求时,CacheManager 对象就会将该请求转发给 Cache 对象。如果该项在缓存中,它就会从缓存的内存表示中返回到应用程序。如果它不在缓存中,该请求会返回 NULL。如果该项位于缓存中但已过期,它也会返回 NULL。 当应用程序使用 Add 方法向 CacheManager 对象发送向缓存添加某项的请求时,CacheManager 对象同样会将该请求转发给 Cache 对象。如果已经有一个具有相同关键字的项,则在将新项添加到内存存储和后备存储中之前,Cache 对象会首先删除它。如果后备存储是默认的后备存储 NullBackingStore,则数据只写到内存中。在添加项时,如果缓存项的数量超过预定的限制,那么 BackgroundScheduler 对象就开始进行清理。在添加项时,应用程序可以使用 Add 方法的重载来指定过期策略数组、清除的优先级,以及实现 ICacheItemRefreshAction 接口的对象。还可以使用该对象来刷新缓存中的过期项。 BackgroundScheduler 对象周期性地监视缓存中各项的生存期。当某个项过期时,BackgroundScheduler 对象会首先删除它,然后再通知应用程序该项已被删除(可选)。此时,由应用程序负责刷新缓存。 配置应用程序块简介几乎每个应用程序都需要某种格式的配置信息。这些信息可以像数据库连接字符串一样简单,也可以像多部分、分层的用户首选信息一样复杂。作为一名开发人员,如何存储应用程序的配置数据以及将它们存储在何处是您经常面临的问题。典型的解决方案包含以下内容:
其 中每个选择都有其各自的优点和缺点;没有一种解决方案可以适合所有情况。在一个应用程序中,您可能需要采用多种方法来协调应用程序所需的不同类型的配置数 据。例如,如果您的应用程序运行在不同的环境中,您可能需要支持多种配置存储解决方案。要考虑的其他重要因素包括:确保应用程序配置数据的安全性和完整 性,以及将存储解决方案对应用程序性能的影响降到最低程度。 Enterprise Library Configuration Application Block 1.0 版解决了这些问题,并提供了一种可以在所有应用程序中管理配置数据的解决方案。具体地说,配置应用程序块提供了一种灵活的数据模型、一种检索配置数据的简 单方法和可扩展性。 配置应用程序块将读/写配置数据的能力与基础数据存储的细节相分离。通过利用存储提供程序和转换器在应用程序和物理存储 之间传输数据,可以实现这一点。存储提供程序是可以读/写特定物理存储(例如 XML 文件或 SQL 数据库)的对象。转换器可以在应用程序的期望格式(例如一组对象)和存储提供程序的要求格式(例如 XML 文档)之间转换配置信息。应用程序块随附有 XML 文件存储提供程序和 XML 序列化程序转换器。 您可以在包含有配置元数据的文件中定义存储提供程序和转换器。通常,该文件是 Machine.config 文件、App.config 文件或 Web.config 文件。元数据包含一些信息,例如,配置节名称、存储位置以及读/写配置设置时所使用的对象的类型名称。这意味着,您可以通过更改文件中的信息将一种存储类 型更改为另一种,而无需重新编写应用程序。 同样,您可以通过更改同一个文件来更改存储属性,例如其位置。这也不需要修改应用程序代码。在部署和操作期间可以决定在何处存储配置数据。 常见情况 配置应用程序块提供了一个用于读/写应用程序配置数据的简单接口。检索配置数据只需要一行代码。以下示例可从配置文件中检索一个数据库连接字符串。 [C#] string conString = (string)ConfigurationManager.GetConfiguration("connectionstring"); [Visual Basic] Dim conString As String = ConfigurationManager.GetConfiguration("connectionstring") 通过创建允许您使用其他数据存储(例如 Windows 注册表或 SQL 数据库)的自定义存储提供程序,可以扩展配置应用程序块。通过更改配置元数据文件,可以将这些自定义提供程序添加到配置应用程序块中。您无需修改或重新构 建配置应用程序块,即可使用不同的存储。您还可以添加自定义转换器来为应用程序和存储转换配置数据。 1.0 版本的主要特点 Enterprise Library Configuration Application Block 1.0 版使用企业程序库配置控制台来管理配置设置。它还允许您添加自己的存储提供程序和转换器。 从配置管理应用程序块迁移 Enterprise Library Configuration Application Block 1.0 版与配置管理应用程序块之间有明显的区别:
配置应用程序块的依赖项 配置应用程序块依赖于企业程序库中包含的代码,包括通用程序库功能(例如,规范),它提供了各种功能来公开用于系统管理的事件和数据。 此外,应用程序块还使用 XML 文件来存储配置信息。修改这些信息的推荐方法是使用企业程序库配置控制台。 配置应用程序块的设计配置应用程序块旨在实现以下目标:
设计要点 图 1 展示组成配置应用程序块的类和对象之间的关系。该图假定您使用 XML 文件存储提供程序和转换器,它们包含在应用程序块中。XML 文件存储提供程序以文件的形式存储配置数据。(其他提供程序使用其他形式的存储,例如 Windows 注册表。)XmlFileStorageProvider 对象指向一个包含特定配置节的配置设置的文件。ConfigurationBuilder 对象指向一个包含特定配置节的配置元数据的文件。通常,包含配置元数据的文件名为 App.config(对于基于 Windows 的应用程序)或 Web.config(对于基于 Web 的应用程序)。 图 1. 配置应用程序块的设计 配 置应用程序块将配置元数据和实际的配置设置分隔开来。应用程序块将元数据放在它自己的文件中,而该文件独立于存储配置设置的位置。配置设置经过分组并称为 配置节。应用程序使用的每个企业程序库应用程序块都有其自己的配置节,该配置节存储在其自己的文件中。配置应用程序块使用配置元数据来访问配置中的数据。 元数据指向配置存储位置并包含一些信息,例如,配置应用程序块读/写配置数据所需的转换器和存储提供程序的类型。配置元数据文件被分成节。每一节都包含在配置存储位置读/写一组特定的配置设置所需的信息。 ConfigurationManager 类提供一个在所定义的存储位置读/写特定配置节的配置设置的静态外观。ConfigurationManager 对象从应用程序域配置文件读取配置元数据,然后使用这些信息来读/写配置节信息。 ConfigurationManager 类的静态方法使用 ConfigurationBuilder 对象的实例。ConfigurationBuilder 可创建文件存储提供程序和转换器对象。这些对象可管理配置数据和元数据。 IStorageProviderReader 接口定义了用于从存储位置读取配置信息的接口。IStorageProviderWriter 接口实现了 IStorageProviderReader 接口,还定义了用于写入配置信息的接口。配置应用程序块包含一个支持该接口的提供程序 XmlFileStorageProvider,它在一个 XML 文件中读/写配置数据。 ITransformer 接口可转换应用程序和存储提供程序之间的配置设置对象。配置应用程序块包含一个实现该接口的提供程序,即 XmlSerializerTransformer 类。XmlSerializerTransformer 类实现了应用程序定义的运行时对象和 XmlNode 对象之间的转换,而无需应用程序来配置转换器。如果没有转换器,配置设置对象就会以存储提供程序提供的相同格式返回到应用程序。 每个配置节的设置都缓存在一个哈希表中。当客户端请求配置数据时,ConfigurationBuilder 对象会在缓存中查找数据。如果在缓存中找到配置数据,ConfigurationBuilder 对象就不必访问存储中的配置数据。如果文件存储提供程序检测到存储中的配置数据已经更改,则 ConfigurationBuilder 对象就会清除缓存。ConfigurationManager 对象允许应用程序清除全部缓存,或者只清除给定节名的缓存。如果清除了缓存,则下一个读取操作就会访问存储位置中的配置设置。 总之,设计了配置应用程序块,您就可以用最适合应用程序要求的方式将配置数据存储在应用程序中。您不受存储方法的限制。IStorageProviderReader 与 IStorageProviderWriter 接口以及 ITransformer 接口(可选)将内存表示和物理存储中使用的表示分离开来。 数据访问应用程序块简介Enterprise Library Data Access Application Block 1.0 版可以简化实现通用数据访问功能的开发任务。应用程序可以在很多情况下使用应用程序块,例如读取显示数据、获得通过应用程序层的数据,以及将更改过的数据 提交回数据库系统等。应用程序块包括对存储过程和内嵌 SQL 以及常见内务处理任务(例如,管理连接、创建与缓存封装在应用程序块的方法中的参数)的支持。换句话说,数据访问应用程序块提供对最常用的 ADO.NET 功能的访问。 该应用程序块还简化了可移植应用程序代码的开发,允许多个数据库服务器(包括 Microsoft SQL Server、Oracle 和 DB2£©中的代码保持一致。为此,可以使用抽象基类来定义公共接口并提供数据访问方法的多种实现,为一种数据库(例如 SQL Server£©编写的应用程序看起来与为另一种数据库(例如 Oracle)编写的应用程序相同。通过使用数据访问应用程序块并遵循本文档中的准则,您的代码大部分都可以移植。 另一个功能是,应用程序代码可以通过名称(例如,“Customer”或“Inventory”)来引用特定的数据库。更改应用程序配置中的名称允许开发人员以不同的数据库配置来使用他们的应用程序,而无需重新编译他们的代码。 数据访问应用程序块具有以下功能:
常见情况 开 发人员经常要编写使用数据库的应用程序。因为很常见,所以开发人员可能会发现自己为每个应用程序反复编写了相同的代码。另外,这些应用程序可能需要与不同 类型的数据库一起工作。虽然任务相同,但必须要改写代码以符合每个数据库编程模型的要求。数据访问应用程序块通过提供最常见数据访问任务的实现,从而解决 了这些问题。开发人员只需完成以下工作:
这些方法都进行了性能优化。它们也可以移植。数据访问应用程序块可以透明地与 SQL Server、DB2 和 Oracle 数据库一同工作。 1.0 版本的主要特点 Enterprise Library Data Access Application Block 1.0 版包含以下新功能:
从先前版本的数据访问应用程序块迁移 早期版本的数据访问应用程序块用户应该了解企业程序库版本针对的多种情况。虽然当前版本是基于从早期版本获得的知识和反馈而构建的,但它在如何解决那些情况方面有了重大改变。 以下列表描述了企业程序库版本的数据访问应用程序块与早期版本的区别:
以下代码演示了某个应用程序使用数据访问应用程序块来执行一条返回数据集的数据库查询。 [C#] myDataSet = DatabaseFactory.CreateDatabase("Sales").ExecuteDataSet("GetOrdersByCustomer", myCustomerId ); [VB] myDataSet = DatabaseFactory.CreateDatabase("Sales").ExecuteDataSet("GetOrdersByCustomer", myCustomerId); 请注意,开发人员编写的代码通过名称引用数据库。实际的数据库类型和连接字符串存储在配置中。 数据访问应用程序块的依赖项 企业程序库提供的应用程序块设计为能够彼此配合使用。有时,应用程序块依赖于其他应用程序块和企业程序库中包含的代码。数据访问应用程序块具有以下依赖项:
默认情况下,该应用程序块使用 XML 文件来存储配置信息。修改这些信息的推荐方法是使用企业程序库配置控制台。 您可以使用企业程序库配置控制台来加密和保护包含连接字符串的数据库配置信息。连接字符串可以包含密码、网络地址及其他敏感信息。要了解有关加密配置设置的更多信息,请参阅企业程序库配置应用程序块文档。 数据访问应用程序块的设计数据访问应用程序块旨在实现以下目标:
设计要点 图 1 展示了数据访问应用程序块中关键类的相互关系。 图 1. 数据访问应用程序块的设计 抽象基类 Database 定义了公共接口,并提供了数据访问方法的多种实现。SqlDatabase、OracleDatabase 和 Db2Database 类均派生于 Database 类。它们为其各自的数据库服务器系统提供方法,这包括常见功能(根据数据库的不同,其实现也不同)以及该数据库系统所特有的功能。 数据库命令和参数在数据库系统中的处理是不同的。抽象类 DbCommandWrapper 提供特定数据库类的接口定义,它将包装 IDbCommand 并提供参数处理。 DatabaseFactory 类提供了静态方法 CreateDatabase,以封装创建适当 Database 对象的逻辑。通过使用工厂来创建正确的数据库对象,客户端代码就不会绑定到特定的数据库类型。 DatabaseFactory 类使用配置应用程序块来检索所需的配置信息,包括要创建的、派生于 Database 的特定类的完全限定类型名和连接字符串。 该应用程序块支持动态发现参数。这种发现机制需要往返于数据库系统。ParameterCache 类允许缓存参数信息,因此可以避免同一存储过程后续调用的往返行程。 加密应用程序块简介Microsoft Enterprise Library Cryptography Application Block 1.0 版简化了开发人员在其应用程序中集成加密功能的方式。应用程序可以使用应用程序块来执行各种任务,例如加密信息、从数据创建哈希,以及比较哈希值来检验数 据是否被更改。 加密应用程序块具有以下功能:
常见情况 开发人员经常编写一些需要加密和哈希功能的应用程序,以满足其组织的安全性要求。通常需要加密由应用程序创建和维护的数据以及配置信息。另外,还需要对用于访问应用程序功能或数据的密码进行哈希运算。 加密应用程序块通过将应用程序代码从特定的加密提供程序中抽象出来,从而简化了开发人员的工作。您可以通过更改配置来更改基础提供程序,而无需更改基础应用程序代码。它还可以封装与加密有关的常见难题(例如,加密和保留加密密钥)的最佳做法实现。 1.0 版的主要特点 Enterprise Library Cryptography Application Block 1.0 版包含以下新功能:
加密应用程序块依赖项 企业程序库提供的应用程序块被设计为能够彼此配合使用。有时,应用程序块依赖于其他应用程序块和企业程序库中包含的代码。加密应用程序块具有以下依赖项:
此外,应用程序块还使用 XML 文件来存储配置信息。修改该信息的推荐方法是使用企业程序库配置控制台 (Enterprise Library Configuration Console)。 加密应用程序块的设计加密应用程序块旨在实现以下目标:
图 1 展示了加密应用程序块的设计。 图 1. 加密应用程序块的设计 加密应用程序块设计为具体化有关如何从运行的应用程序处理加密的所有决策。这种设计使您可以在不更改应用程序代码的情况下更改加密行为。 异常处理应用程序块简介Enterprise Library Exception Handling Application Block 1.0 版,使开发人员和决策人员能够针对发生在企业应用程序体系结构层的异常处理创建一致的策略。它的实现方法如下:
常见情况 异常处理应用程序块被设计为支持包含在应用程序组件的 catch 语句中的典型代码。该应用程序块允许开发人员将此逻辑封装为可重用的异常处理程序,而不是在应用程序组件的相同 catch 块中重复这段代码(例如,记录异常信息)。异常处理程序是封装异常处理逻辑和实现名为 IExceptionHandler 的异常处理应用程序块接口的 .NET 类。异常处理应用程序块包含三个异常处理程序:
异常处理应用程序块可让您将异常类型与指定的策略相关联。您可以使用配置控制台来完成此项工作。策略可指定在应用程序块处理特定异常类型时执行的异常处理程序。您可以将这些处理程序串联起来,这样,在处理关联的异常类型时就可以执行一系列处理程序。 1.0 版的主要特点 Enterprise Library Exception Handling Application Block 1.0 版包含以下新功能:
从异常管理应用程序块迁移 早期版本的应用程序块名为异常管理应用程序块,它用于向特定位置发布异常信息。新版本的应用程序块名为异常处理应用程序块,它提供了一组更为广泛的工具,用于开发异常处理策略。异常处理应用程序块与异常管理应用程序块主要有三点不同:
异常处理应用程序块依赖项 企业程序库提供的应用程序块被设计为能够彼此配合使用。有时,应用程序块依赖于其他应用程序块和企业程序库中包含的代码。异常处理应用程序块具有以下依赖项:
应用程序块包括记录异常信息的异常处理程序。使用这个日志异常处理程序的应用程序需要日志和规范应用程序块。 默认情况下,应用程序块使用 XML 文件来存储配置信息。修改该信息的推荐方法是使用企业程序库配置控制台。 异常处理应用程序块的设计异常处理应用程序块旨在实现以下目标:
设计要点 图 1 展示了异常处理应用程序块中关键类的相互关系。 图 1. 异常处理应用程序块的设计 日志和规范应用程序块简介Enterprise Library Logging and Instrumentation Application Block 1.0 版使开发人员可以在其应用程序中集成标准的日志和规范功能。应用程序可以使用日志和规范块在多个位置记录事件:
日志和规范应用程序块在多个方面有助于应用程序的开发:
常见情况 开发人员经常编写需要日志和规范功能的应用程序。通常,这些应用程序必须适当地格式化事件和记录事件,不论是在本地还是通过网络。在某些情况下,您可能需要对一台计算机上来自多个源的事件进行整理。 日 志和规范应用程序块通过收集应用程序需要包含的多个最常见的日志和规范任务来简化应用程序的开发。每个任务都以一致的方式处理,并从特定的日志和规范提供 程序中抽象应用程序代码。体系结构模型可让您通过更改配置来更改基础事件接收器和格式化程序,而无需更改应用程序代码。 1.0 版的主要特点 日志和规范应用程序块是在两个早期应用程序块(日志应用程序块和异常管理应用程序块)功能的基础上构建的。该版本的日志和规范应用程序块包含了大量早期应用程序块所没有的功能:
从日志应用程序块迁移 日志应用程序块的用户应该了解日志和规范应用程序块针对的多种情况。虽然当前版本是基于从早期版本获得的知识和反馈而构建的,但它在如何解决那些情况方面有了重大改变。 企业程序库版本的日志和规范应用程序块与日志应用程序块的主要区别包括以下几点:
日志和规范应用程序块的依赖项 企业程序库应用程序块设计为能够彼此配合使用。在某些情况下,应用程序块依赖于其他应用程序块和企业程序库中包含的代码。日志和规范应用程序块具有以下依赖项:
根据您向日志和规范应用程序块要求的特定功能,您可能还需要数据访问应用程序块,日志和规范应用程序块将它用于数据库事件接收器。 该应用程序块使用 XML 文件来存储配置信息。修改该信息的推荐方法是使用企业程序库配置控制台。 日志和规范应用程序块的设计日志和规范应用程序块旨在实现以下目标:
设计要点 图 1 展示了日志和规范应用程序块的设计 图 1. 日志和规范应用程序块的设计 日志和规范应用程序块设计为能够具体化有关如何从运行的应用程序处理事件的所有决策。这种设计使您可以在不更改应用程序代码的情况下更改日志行为。
四.日志项概述: 在记录日志时,都是创建一个日至项来承载记录的信息。每个日志项具有以下属性: Message(必需项) Cagegory(提供缺省值) Priority(缺省值为-1) EventID(缺省值为-1) Severity(缺省值为Severity Unspecified) Title(缺省值为“”) 五.几个重要概念: Sink:日志记录的位置 Category:决定了你在程序中添加的日志写向何处,是通过配置来实现的。比如说我们有两个Category,第一个我们可以指定Sink为事件日志,第二个我们可以指定Sink为文本文件。 Formatter:格式器决定了日志记录的格式,通过配置实现,在进阶篇中我会重点去讲。 六.为应用程序添加日志: 为应用程序添加日志,步骤跟其他的应用程序块差不多,也是分为三步走:首先需要创建配置文件;在创建一个日志项对象,然后把它传给Logger.Write()方法。下面我们看一下具体的操作步骤:(同样我们认为您已经有了一个创建好的项目,并已经有了配置文件App.Config或Web.config) 1.运行配置工具后,选择File | Open Application打开应用程序的配置文件。 2.在Application上右击并选择New | Logging and Instrumentation Application Block。 3.日志和监测应用程序块默认的Client Settings定义了in-process distribution strategy和LogginEnabled为True。
6.最后别忘了拷贝目录。 "$(ProjectDir)\*.config" "$(TargetDir)" 7.在项目中添加对应用程序块的引用。 Microsoft.Practices.EnterpriseLibrary.Logging.dll 8.在程序中引用 1using Microsoft.Practices.EnterpriseLibrary.Logging; 9.添加日志: 在这之前,为程序的规范性和严谨,我们先定义两个枚举: 1/**//// <summary> 添加日志,添加日志的工作全部都由Write方法来完成。 1/**////创建一个日志项 10.打开事件查看器,我们可以看到,在里面写入了一条日志信息:
至此,一个完整的日志记录我们就做完了。入门篇就到这里,另外,大家可以看一下:
安全应用程序块简介Microsoft Enterprise Library Security Application Block 1.0 版有助于开发人员在其应用程序中实现与安全相关的常见功能。应用程序可以在多种情况下使用此应用程序块,例如,根据数据库对用户进行身份验证和授权、检索 角色和配置文件信息以及缓存用户配置文件信息。安全应用程序块具有以下功能:
常见情况 开 发人员经常编写需要安全功能的应用程序。这些应用程序通常需要执行一系列不同的安全操作,而且它们还经常与不同的基础安全提供程序(如 Microsoft Active Directory 目录服务、授权管理器、Active Directory 应用程序模式 (ADAM) 和自定义数据库等)进行交互。 安全应用程序块通过收集开发人员必须执行的许多最常见的安全任务,来简化开发人员的工作。每个任务都以一致的方式处理,从特定的安全提供程序中抽象出应用程序代码并使用最佳做法。您甚至可以通过更改配置来更改基础提供程序,而无需更改基础应用程序代码。 安全应用程序块提供的代码可以在以下方案中帮助您:
.0 版的主要特点 安全应用程序块是一个早期应用程序块(名为授权与配置文件应用程序块)的增强版。此版本的安全应用程序块包含大量授权与配置文件应用程序块所没有的功能。这些功能包括:
从授权与配置文件应用程序块迁移 授权与配置文件应用程序块的用户应该了解企业程序库安全应用程序块针对的多种情况。当前版本是基于从早期版本获得的知识和反馈而构建的,但它在如何解决那些情况方面有了重大改变。 企业程序库版本的安全应用程序块和授权与配置文件应用程序块的主要区别如下:
安全应用程序块的依赖项 企业程序库应用程序块被设计为能够彼此配合使用。有时,应用程序块依赖于其他应用程序块和企业程序库中包含的代码。安全应用程序块具有以下依赖项:
根据您向安全应用程序块要求的特定功能,您可能还需要以下一个或两个应用程序块,它们都包含在企业程序库中:
默认情况下,该应用程序块使用 XML 文件来存储配置信息。您可以修改此配置信息以更改应用程序块的行为。修改该信息的推荐方法是使用企业程序库配置控制台。 真正的安全信息(授权数据、身份验证存储和配置文件信息)由应用程序块中各个区域的提供程序管理。 安全应用程序块的设计安全应用程序块旨在实现以下目标:
设计要点 图 1 展示了安全应用程序块的设计。 图 1. 安全应用程序块的设计 安全应用程序块在其设计中集成了通常需要的应用程序安全功能的实现。这些任务包括授权、身份验证、配置文件管理和角色管理。
3.架构分析4.模式分析5.工具代码6.net的面向对象的功能 |
|