代码改变世界

Enterprise Library学习所得(一):总体概述

2006-01-25 10:55  努力学习的小熊  阅读(1684)  评论(1编辑  收藏  举报

每一个设计模式都是针对于某一个问题点的最佳的解决方法。

Patterns:基于.NET提出的对反复出现的问题提供原子级的解决方案。

Application Blocks:面向公共服务的字系统级的应用指南。

Reference Architectures:(包括一个Smart Client的应用架构)针对客户向通场景的系统级架构指南。

Enterprise Library是一个可重用的程序块库,用于解决共性的企业级的开发过程中遇到的问题。

下图为第一版本中各个Application Block之间的依赖关系。

 

Configuration Application Block:配置管理,为我们的应用提供一个灵活性的解决方案。

1.为应用系统提供了公共的配置管理解决方案,允许应用程序方便灵活的从不同配置存储读写配置信息。

2.隔离应用程序和配置数据的物理存储位置(Storage Location

    Stroage Providers:允许从不同的物理存储读写信息(如:SQL/XML

    Transformers:将读取的配置数据经转换器转换为结构化数据

3.内置了XML Storage ProviderXML Transformer

    也能扩展为对纯数据库的支持

4.改善安全性(支持加密保存)

5.配置文件监控器(watchers)能够监测到配置文件的变化并发出事件通知

6.增强设计时(Design-Time)的易用性

 

Data Access Application Block:数据库访问应用程序块,提供了一个简单的数据库访问方式。

1.对数据库访问提供了简单、高效的访问方式

    减少编写重复累赘代码去执行标准的数据访问任务

    易于使用,使用单条语句即可完成Stored Procedure的调用

    屏蔽了对常用ADO.NET使用的复杂度,提供了基于最佳实践,正确快速使用接口

2.对不同类型的数据库(SQLServer/Oracle/DB2)提供了编程上的透明性

    为不同数据库类型提供了统一的编程

    当移植应用程序到不同数据库类型时,减少重写代码的数量(移植时需要注意一些数据类型在不同数据库中的不同方式,需要适当修改代码)

3.搭起了逻辑数据库与物理数据库之间的桥梁,降低改变物理数据库目标的难度(编程时不需关心使用的什么数据库、放在哪里,在程序里仅是一个字符串,对于具体在哪、什么数据库都是在配置时通过配置工具去实现的)

4.增强的数据库联接串的安全性

5.容易对数据库访问的配置信息进行调整和验证

 

Crypto Application Block:加解密应用程序块

1.使用对称加密算法对敏感信息进行加密保存、或对其进行解密

2.对单台机器上使用的信息进行加密(without using keys

3.创建密码信息的散列值进行保存,使用时需要对用户提供的密码散列值与保存值进行对比(一般使用哈希算法,这个算法是不可以进行逆运算的)

1.简化了开发人员为敏感信息进行加解密工作

    加解密任何类型(Stream/Byte)的信息

    提高易用性

        CreateHash / CompareHash(创建一个哈希散列值并能进行比较)

        EncryptSymmetric / DecryptSymmetric(使用对称算法进行加密解密)

(在使用时我们仅需要知道使用Cryptographer下的上述四个方法即可进行使用,如果对于哪一个加解密算法不够满意的话,可以在下层对其进行扩展)

2Cryptography Application Block加解密算法

    基于.NET Framework已提供的Cryptography/Hash算法

        对称算法:DESRC2Rijndael(在发布软件提供密码的情况下使用比较多) Managed and TripleDES(三维加密算法)

        散列:SHA1SHA256SHA284SHA512SHA1CryptoMD5CryptoMACTripleDES

    允许集成自己开发的加解密算法Provider

3.提高集成性

    Supports all .NET crypto algorithms out of the box, or implement your own

    Supports DPAPI for keyless crypto on a single machine

    Algorithms and keys can be managed through the configuration tool

 

Security Application Block:一些关于安全的处理程序块

提供了以下功能:

1.认证:

2.授权

3.角色管理

4Profile管理


    
    1
.封装通用的应用安全相关的任务

2.最小化应用安全相关的编码(通过少量的方法Authenticate(认证),Authorize(授权),GetRolesSetProfileGetProfile……)

3.提供标准的安全Provider模型

    DbAuthenticationProvider – authenticate users against database

    AzManAuthorizationProvider – authorize users against Authorization Manager

    DbRolesProvider – retrieve roles from a database

    DbProfileProvider – retrieve profiles from a database

    AdRolesProvider – retrieve roles from Active Directory

4.基于应用安全的最佳实践

实现了.Net支持的基于角色的安全特性,是通过Identity(身份,自身唯一身份的一种认证方法)和Principle(主体特征,这个人所具有的角色和这些角色的认证)实现的认证和授权

 

Exception Handling Application Block:例外程序处理应用程序块

1Exception Handling application block提供了简单的功能强大的例外处理机制,在应用系统的不同层面采用一致的例外处理策略

2Exceptions由配置工具进行定义和维护 - 不需要通过编码控制例外处理的行为

3.定义“Exception Policies”,可指定该策略发生时的行为

    Exceptions of type ApplicationException should be logged

    Exceptions of type SqlClientException should be caught and wrapped with an exception of type DataLayerException and rethrown

    Exceptions of type SecurityException should caught and replaced with an AccessDeniedException which will be thrown

4Exception Handlers提供了附加的处理行为

    将例外写入日志

    用另一个例外进行封装

    采用不同的例外替代以便隐藏敏感的例外信息

    创建自己的Handler

 

Logging & Instrumentation Application Block:日志处理应用程序块(实际上就是实现了一个把某一个东西写出去)

1.提供简单标准一致的Logging机制

2.取代了原有的Enterprise Instrumentation FrameworkLogging Application Block

3.能灵活指定哪类信息以何种格式输出、输出到何处

    实现了应用程序代码与日志策略的隔离

4Sinks(一种管道的方式)提供了以下日志输出

    Event Log

    Database

    Text File

    MSMQ

    Email

    WMI

    自己开发的Sink……

 

Caching Application Block:缓存应用机制

1.提供了灵活可扩展的缓存机制可以用于以下各种类型的应用框架中:

    Windows Forms

    Console application

    NT Service / COM+ Server

    ASP.NET Web application or Web service if you need features not include in the ASP.NET cache

2.支持两类Caching机制

    In-memory cache(在内存中) 非永久缓存,但性能很好

    Backing store – 永久性缓存,但较慢

        Database

        Isolated Storage

3.易于使用——提供了Cache处理所需的所有功能(retrieve(提取), add(追加), remove(移除) cached data

    可配置的expirationscavenging策略