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 Provider和XML 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下的上述四个方法即可进行使用,如果对于哪一个加解密算法不够满意的话,可以在下层对其进行扩展)
2.Cryptography Application Block加解密算法
基于.NET Framework已提供的Cryptography/Hash算法
对称算法:DES,RC2,Rijndael(在发布软件提供密码的情况下使用比较多) Managed and TripleDES(三维加密算法)
散列:SHA1,SHA256,SHA284,SHA512,SHA1Crypto,MD5Crypto,MACTripleDES
允许集成自己开发的加解密算法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.角色管理
4.Profile管理
1.封装通用的应用安全相关的任务
2.最小化应用安全相关的编码(通过少量的方法Authenticate(认证),Authorize(授权),GetRoles,SetProfile,GetProfile……)
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:例外程序处理应用程序块
1.Exception Handling application block提供了简单的功能强大的例外处理机制,在应用系统的不同层面采用一致的例外处理策略
2.Exceptions由配置工具进行定义和维护 - 不需要通过编码控制例外处理的行为
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 Acces
4.Exception Handlers提供了附加的处理行为
将例外写入日志
用另一个例外进行封装
采用不同的例外替代以便隐藏敏感的例外信息
创建自己的Handler
Logging & Instrumentation Application Block:日志处理应用程序块(实际上就是实现了一个把某一个东西写出去)
1.提供简单标准一致的Logging机制
2.取代了原有的Enterprise Instrumentation Framework和Logging Application Block
3.能灵活指定哪类信息以何种格式输出、输出到何处
实现了应用程序代码与日志策略的隔离
4.Sinks(一种管道的方式)提供了以下日志输出
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)
可配置的expiration和scavenging策略