在2007年时刚刚接触微软的企业库,感觉运行比较稳定,但是,没有想象的那么好用,主要是不熟悉导致的,还是得花一定的时间来学习才能应用得上,特别是在日志库上,企业库的配置有许多局限性,开发的程序运行在服务器上还算稳定,主要是应用2.0版本的数据操作模块,偶然的机会,将编辑环境升级到了2008后,再打开原来的项目,发现企业库不兼容到Fw3.5版本,我就将企业库升级到了4.1版本,这个开源版本的更新速度还是挺惊人的,中间一些修复的历史都没法见到,查查帮助文档,将一些这个版本数据库模块的修改和企业库应用目标翻译一下吧,最近有点热血,尽管翻译得很烂,还就有点小上瘾。
企业库应用目的
企业库是一组提供给开发者应用于复杂企业级应用的应用程序块和服务,这些应用块被其他一些应用程序和系统做典型的部署处理(在安装企业库的时候会安装的一些应用程序,这些应用程序可以嵌入在VS中开启,对配置文件进行可视化编辑),除此之外,还有很强的安全性,灵活性和高效性。
企业库的主要目的是:
一致性:所有企业库的应用程序块的设计模式和实现都是保持一致的。
可扩展性:所有应用程序块都包含了可扩展位置,提供给开发人员进行自定义的设计,添加需要的代码。
简单易用:企业库在图形编辑工具,简单的安装过程和清晰详细的帮助文档和示例上做了很大的改进。
集成性:经过测试显示,企业库的每个应用程序块都可以相互配合的非常好,而且每个应用程序块都可以单独的应用。
下面是我个人比较关心的,就是数据库操作模块的改进,没想到只有一点点,不知道2.0到4.1版本一共做了多少的改进:
OracleDataReaderWrapper 类成员变申明公开了(public),这样就公开(可访问)了Wrapped reader中的方法。
Oracle数据库基本没有用过,这个只是一个小修改,看来数据访问模块已经做得比较成熟了。
还有一个就是日志模块啦,我比较常用的是Rolling Flat File Trace Listener,滚动式的文本日志模块,在写服务器程序必备的,特别是按天或者按小时差日志的时候,比较好用。
把属性表翻译下吧:
属性 | 描述 |
FileName | 日志文件的文件名,不能为空,可以包含环境变量,比如 %WINDIR%, %TEMP%, and %USERPROFILE%. |
Filter | 过滤功能,默认为All,还可以设置为Off,Critical,Error,Warning,Information,Verbose,Activity Tracing.这个设置以为这只记录特定级别的日志,比如Warning只记录warning,error,critical的日志。 |
Footer | 脚注,就是写一次日志后附加在后面的字符,默认是 "----------------------------------------." 可选. |
Formatter | 日志格式,使用已定义好的格式就可以了,模式为None,可选 |
Header | 头注,和脚注对应,默认为 "----------------------------------------." 可选. |
Name | 这个就是选择Rolling Flat File Trace Listener,是跟踪器的名称。必选 |
RollFileExistsBehavior | 添加日志文件的方式,这个取决于已经存在的日志文件了,如果选择 Overwrite,就会覆盖原来的文件,如果选择 Increment,应用程序块就会根据时间戳创建一个新的日志文件 。 |
RollInterval | 这个属性决定日志文件什么时候创建新文件,默认为None,选择Midnight就是在午夜创建新文件,也可以选择Minute, Hour, Day, Month, or Year.可选 |
RollSizeKB | 一个日志文件的大小,超过这个大小就创建新文件,可选。 |
TimeStampPattern | 创建新文件时的时间格式,要注意RoleFileExistsBehavior属性为Increment时有效,比如日期格式为yyyy-MM-dd,文件名为MyLog,就会创建一个新的文件MyLog2009-11-20.log,如果这个文件已经存在,就会创建MyLog2009-11-20.1.log以此类推。必选 |
TraceOutputOptions | 日志跟踪器输出模式,CallStack, DateTime, LogicalOperationStack, None(默认), ProcessId, ThreadId, 和Timestamp,具体参考TraceOutputOptions的使用,可选。 |
小结
企业库应用在企业级的程序中,可以大大提高程序运行的稳定性,降低维护成本,升级也是很方便的,升级只要替换项目中的引用dll就可以了,只要注意每个版本的企业库支持的框架就好了,企业库的使用完全可以替代SqlHelper的使用,作为数据中间件操作数据的主要应用,但是,我个人喜欢将企业库的数据操作放在一个类中,方便在类中加入其他日志模块,如果使用三层结构的数据中间开发,最好使用企业库中的全局错误事件模块和日志模块,只要不是在线程中的错误,和堆栈级别的错误,可以省去写很多Try-Catch.
原文地址:http://blog.youkuaiyun.com/much0726/archive/2009/11/20/4844018.aspx