Rickie is back .... 人生·工作的结果=思维方式×热情×能力

今天比昨天更好,明天比今天更好,为此,不屈不挠地工作、勤勤恳恳地经营、孜孜不倦地修炼,我们人生的目的和价值就是这样确确实实地存在着。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  397 随笔 :: 3 文章 :: 1310 评论 :: 129 引用

Microsoft patterns & practices Enterprise Library

January 2005

© 2005 Microsoft Corporation. All rights reserved.

 

翻译:Rickie Lee (rickieleemail#yahoo.com)

这里简单翻译了Microsoft patterns & practices Enterprise Library中附带的Enterprise Library Release Notes文档,中文内容仅供参考。译文中错误或不准确之处,欢迎指出Thanks

******

本文提供了关于Microsoft Enterprise Library的最近信息,不包含在线的最终用户文档。

 

1安装和卸载

1.1 卸载Enterprise Library Beta版本

在你安装Enterprise Library正式版本之前,你必须卸载先前安装的Beta版本。Enterprise Library Beta版本包含将Enterprise Library assemblies(程序集)装载到GACGlobal Assembly Cache)的选项,当卸载Enterprise Library程序时,这些assemblies并不会自动删除,需要使用GACUTIL.EXE工具手动删除。

1.2 卸载过程中没有删除文件夹和文件

Enterprise Library的卸载程序没有删除Enterprise Library编译的assemblies,也没有删除你在Enterprise Library目录中创建的文件。在你卸载Enterprise Library之后,你必须手工删除Enterprise Library目录。

 

2Application Blocks

2.1 Logging and Instrumentation Application Block: 在错误消息记入日志后,缺省的接收器(sink)不清除错误消息

Logging and Instrumentation Application Block试图将日志条目写入特定的目标时发生异常,Application Block会将异常信息写入缺省的日志池中。在异常信息写入缺省的日志池后,日志条目消息并没有清除。这意味着如果Application Block的配置文件指定额外的目标接受原始的日志条目,该异常信息也将写入到这些目标地。

2.2 Logging and Instrumentation Application Block: 缺省情况下不安装MSMQ Distributor ServiceMSMQ分发服务)

MSMQ Distributor Service运行在作为日志条目目标的机器上,这些日志条目将写入MSMQ接收器。当日志条目接受到MSMQ后,MSMQ分发服务负责处理并路由日志条目到Logging and Instrumentation Application Block。缺省情况下不安装MSMQ Distributor ServiceMSMQ分发服务),你可以执行如下的步骤来安装该服务:

1)如果你想安装MSMQ Distributor Service在不同于安装Enterprise Library的机器上,你需要复制MsmqDistributor.exe, MsmqDistributor.exe.config, loggingDistributorConfiguration.config等文件到目标机器上。在编译Enterprise Library之后(注:安装过程中默认编译Enterprise Library),可以在bin目录找到上述文件。(可以使用bin目录下的文件安装上述服务;服务将运行在安装有Enterprise Library的机器上)。为了MSMQ Distributor Service能正确运行,目标机器必须有安装Message Queuing(也称为MSMQ)。

2)打开Visual Studio命令行,并切换到第一步中复制文件的目标目录。

3)在命令行窗口运行如下命令:

installutil /i MsmqDistributor.exe

4)当弹出窗口(注:Set Service Login对话框)时,输入用来运行该服务的帐户的用户名和密码。用户名必须以domain\username的形式。(注:如果不是domain内帐户,可以使用YourComputerName\administrator.\administrator的形式)

5)运行服务。服务以手动启动的形式安装,你可以使用Windows Services Management Console管理控制台来启动服务。
Enterprise_LoggingDistributorService.GIF


2.3 Logging and Instrumentation Application Block: MSMQ Distributor Service
需要与应用程序相关设置的配置文件

MSMQ Distributor Service的缺省配置文件不包含服务的分发设置,这些设置与你的应用程序相关。这意味着你必须使用Configuration Console(配置控制台)为MSMQ Distributor Service创建合适的设置。执行如下的步骤来为你的应用程序配置MSMQ Distributor Service

1)使用文本编辑器打开MsmqDistributor.exe.config配置文件,删除配置文件loggingConfiguration节,并保存该文件。

删除如下Section

    <configurationSection name="loggingConfiguration" encrypt="false">

      <storageProvider xsi:type="XmlFileStorageProviderData" name="XML File Storage Provider" path="loggingConfiguration.config" />

      <dataTransformer xsi:type="XmlSerializerTransformerData" name="Xml Serializer Transformer">

        <includeTypes />

      </dataTransformer>

</configurationSection>

 

2)使用Configuration Console(配置控制台)打开MsmqDistributor.exe.config配置文件,该文件和MsmqDistributor.exe文件在相同目录。关于包含上述文件的目录可以查阅2.2

3)右击Distributor Settings配置节点,点击New,然后点击MSMQ Distributor Service。这将在配置树(Configuration Tree)中增加MSMQ Distributor Service节点。

4)点击MSMQ Distributor Service节点,显示该节点的配置设置。

5)(可选)改变MsmqPath属性值,该值必须匹配client端应用程序的MSMQ Distribution Strategy配置中指定的队列名称。

Enterprise_MSMQDistributorServiceConfiguration.GIF

 

2.4 Data Access Application Block: Default Oracle cursor cur_OUT(缺省Oracle游标cur_OUT

Oraclemanaged provider需要你在你的参数集合中显示绑定你的引用游标,这意味着你必须在你的应用程序代码中为游标显式创建一个output参数。然而,对于不需要游标参数的数据库系统而言,这些代码不具有移植性。Oracle数据库允许你创建不指定游标的命令,它将为执行存储过程并不带游标output参数的命令创建一个名为cur_OUT的游标。这意味着你可以命令你的引用游标为cur_OUTData Access Application Block将为你绑定它;你不必为游标显式创建output参数。如果你的存储过程(stored procedure)使用一个不是cur_OUT的游标,你必须为命令中每一个游标显式增加一个参数。相似地,如果你的存储过程中包含多个游标,你必须为命令中每一个游标显式增加参数。

 

2.5 Configuration Application Block: ConfigurationChangedEventArgsConfigurationFile属性

ConfigurationChangedEventArgs包含ConfigurationFile属性,该属性包含配置文件改变后的文件名。如果配置文件被一个应用程序使用Configuration Application BlockWriteConfiguration方法修改,则ConfigurationFile属性将包含配置元数据文件(configuration metadata file)的名称。如果application block配置被外部修改(例如,通过文本编辑器),ConfigurationFile属性将包含application block配置文件的名称。

 

3.配置工具

3.1 规则名称不能在Rule Expression编辑器中修改

当一个新的规则增加到Security Application BlockAuthorization Rule Provider的配置信息中时,显示的Rule Expression编辑器包含一个规则名称的文本框。在这个文本框中改变规则名称没有效果。你可以通过如下的步骤来改变规则名称:

右击配置树中的Rule节点,点击Rename,然后输入新的名称。

3.2 你不能够添加多个分发策略(distribution strategies)到Logging and Instrumentation Application BlockClient Settings

配置工具允许你添加多个定制分发策略到Logging and Instrumentation Application Block的配置中。如果配置已经包括一个分发策略,它不允许你增加In ProcessMSMQ分发策略。为了创建一个In ProcessMSMQ分发策略,你必须首先删除所有现存的分发策略,然后增加合适的分发策略。

3.3 删除Application Blockconfiguration section节点不会删除application block节点

配置工具为configuration section创建configuration节点,并为每一个增加到application configurationapplication block创建一个application block相关的configuration节点。当相关的configuration sectionconfiguration节点删除时,Configuration控制台不删除application blockconfiguration节点。使用Configuration控制台时,在保存application configuration之前,你必须删除application blockconfiguration节点。

 

4QuickStarts

4.1 Logging and Instrumentation QuickStart

Logging and Instrumentation QuickStart中使用的Trace目录没有在配置文件中定义。发送到这一目标的日志条目将使用缺省的General目录来记录。

 

 

posted on 2005-01-30 07:29 Rickie 阅读(14728) 评论(19) 编辑 收藏

评论

#1楼 2005-01-30 08:54 生活、工作      
非常好。
 回复 引用 查看   

DAAB部分在初始化数据库的最后会出错,导致quick start无法正常演示,你遇到了吗?
 回复 引用 查看   

#3楼[楼主] 2005-01-31 02:19 Rickie      
To 灵感之源,

It's working correctly on my local computer when I demonstrate the DAAB QuickStart.

 回复 引用 查看   

#4楼 2005-02-03 15:49 bobo
初始化数据库时出错应该是在中文版的SQL Server才会出的问题,
好像是一些字符乱码把'变了造成的,建议把insert部份的语名单独拷出来在查询分析器里分开几部份单独执行。
 回复 引用   

#5楼 2005-02-03 17:02 powerword      
其中的部分引号变成了问号,所以执行insert的时候会报错。手工修改一下就可以,好像有3个吧。
 回复 引用 查看   

#6楼 2005-03-13 10:12 Tony Qu      
问一个问题:为啥删除了LoggingConfiguration配置节后,配置控制台就不报错了,知道原因的话请指教,谢谢
 回复 引用 查看   

#7楼 2005-03-13 11:23 Tony Qu      
正如powerword所说,通过修改sql文件可以完成insert
DataAccessQuickStarts.sql修改位置:
370行126列,'?'->单引号
388行93列,'?'->单引号
 回复 引用 查看   

#8楼 2005-04-08 16:41 Jarod      
请问可以使用 XCOPY 部署方法来部署 Enterprise Library程序集吗?
 回复 引用 查看   

#9楼[楼主] 2005-04-08 23:51 Rickie      
Jarod,

I think so.
 回复 引用 查看   

#10楼 2005-06-10 15:25 好的
未处理的“System.Configuration.ConfigurationException”类型的异常出现在 microsoft.practices.enterpriselibrary.configuration.dll 中。

其他信息: Invalid section name. The section 'loggingConfiguration' does not exist in the requested configuration file 'D:\Code\ABStudyOne\bin\Debug\ABStudyOne.exe.config' or the file 'c:\winnt\microsoft.net\framework\v1.1.4322\Config\machine.config'. Make sure that the 'enterpriseLibrary.configurationSections' configuration section exists in one of the files and that the section 'loggingConfiguration' is defined.

在执行系统时,出现上面的错误,我到配置文件中找到这个节点了,为什么系统会出错呢?
jiandwish@hotmail.com
 回复 引用   

#11楼 2005-08-06 10:32 jaron[未注册用户]
The section 'loggingConfiguration' does not exist in the requested configuration file 'D:\Code\ABStudyOne\bin\Debug\ABStudyOne.exe.config' or the

这是因为你的程序里面可能用错了接点名称,而是用了另一个名称,所以就样
 回复 引用   

#12楼 2005-08-17 11:27 maple[未注册用户]
你的配置文件的路径可能没对,Check your Path attribute in App.config
 回复 引用   

#13楼 2005-09-18 00:04 bing[未注册用户]
INSERT INTO [Products] ([ProductName],[CategoryID],[UnitPrice])VALUES('Gustaf''s Kn鋍kebr鰀',5,21.0000)
INSERT INTO [Products] ([ProductName],[CategoryID],[UnitPrice])VALUES('Tunnbr鰀',5,9.0000)

我的DataAccessQuickStarts.sql出现很多行乱码,如上,不知道怎么办?
 回复 引用   

#14楼 2005-09-21 17:38 badi[未注册用户]
做Exception Handling Block的quick start时想将例外记入日志,使用Logging&Instrumentation Block记入windows事件没有问题。
想记入数据库时,具体操作如下:
建database sink,指到建好的dbInstance上
建Category和destination,并指到先前的sink上
建policy-exception-handler,并指到先前的logCatetory上
运行程序时在执行HandleEception()时
出现错误"An unexpected exception occrued while calling HandleExpection with policy 'Global Policy'.。

后来经过进一步验证,发现都不用建policy,只要new一个Database Sink,就会出现此错误。
各位有遇到这种情况吗?
 回复 引用   

在安装 enterprise library 的quick start 数据库时,由于SQL语句是西欧字体写成的,在简体中文版的WinXP Win200X中将出现楼上朋友说的乱码。

解决方法:用Word打开SQL语句,打开时选用西欧字体(默认)。再将之拷贝到SQL 查询分析器中运行。

另一问题:在WinXP中使用enterprise library 默认的数据库连接,不能正常运行。
修改如下:
<connectionString name="Sql Connection String">
<parameters>
<parameter name="database" value="EntLib_WYA" isSensitive="false" />
<parameter name="Integrated Security" value="True" isSensitive="false" />
<!--原先的,但不能用-->
<!--
<parameter name="server" value="localhost" isSensitive="false" />
-->
<!--修改后的。不但在WinXp中可用在Win200x中也一样能用-->
<parameter name="server" value="(local)" isSensitive="false" />
</parameters>
</connectionString>
 回复 引用   

俺是新手,有没有介绍性质的文档啊,不知道这个玩意干什么的。
 回复 引用   

#17楼 2009-05-25 15:50 于为元      
谢谢
 回复 引用 查看