本文的发布号曾为 CHS306296
有关本文的 Microsoft Visual Basic .NET 版本,请参见
312902。
有关本文的 Microsoft Visual C++ .NET 版本,请参见 309108。
本文引用下面的 Microsoft .NET 框架类库名称空间:
有关本文的 Microsoft Visual C++ .NET 版本,请参见 309108。
本文引用下面的 Microsoft .NET 框架类库名称空间:
- System.EnterpriseServices
本任务的内容
概要
本分步指南演示了如何创建使用事务的 .NET 服务组件。本文还将说明如何创建测试服务组件的客户机。Microsoft Enterprise Service 为 .NET 组件提供 Microsoft COM+ 服务。返回页首
重要说明
- 服务组件需要有强名称。
- 应当在"全局程序集缓存"(GAC) 中注册服务组件,因为这些组件是系统级别的资源。服务器应用程序要求安装在 GAC 中,库应用程序则不要求这样(但是建议安装在 GAC 中)。
- 您可以通过延迟注册自动向 COM+ 注册服务组件,也可以通过 Regsvcs.exe 实用工具手动注册。Regsvcs.exe 位于下面的文件夹中:
/WINNT/Microsoft.NET/Framework/< 框架版本 >
有关 Regsvcs.exe 的更多信息,请参阅 Microsoft .NET 框架软件开发工具包 (SDK) 文档。 - 此示例假定本地计算机上已安装 Microsoft SQL Server。
- 提供此示例只是为了进行说明。严格地说,此示例的选择查询很适合在 COM+ 事务外运行,因为 COM+ 为事务采用最高隔离级别。若要增大数据库的吞吐量,良好的编程策略是考虑较低事务级别的读取查询。
创建 .NET 服务组件
- 创建名为 ServicedCOM 的新的 Visual C# 类库项目。
- 将默认类和文件名从 Class1.cs 重命名为 SimpleTrans.cs 。为此,请按照下列步骤操作:
- 在"类视图"窗口中,右键单击 Class1,然后单击属性。
- 在属性中,将名称属性更改为 SimpleTrans。
- 添加一个 System.EnterpriseServices 名称空间的引用。
- 将下列语句作为第一行添加到 SimpleTrans.cs 和 AssemblyInfo.cs 中:
using System.EnterpriseServices;
- 从 ServicedComponent 继承类(完全限定名:System.EnterpriseServices.ServicedComponent)。
- 将下面的代码添加到 *public class* 前:
[Transaction(TransactionOption.RequiresNew)]
- 将下面推荐的属性添加到 AssemblyInfo.cs 中:
[assembly:ApplicationActivation(ActivationOption.Library)] [assembly:ApplicationName("SimpleTrans")]
- ActivationOption 属性指示是否在调用方的进程中激活组件。您可以将 Activation.Option 设置为库或服务器。
- ApplicationName 属性是"COM+ 目录"和"组件服务管理"控制台中显示的 COM+ 应用程序的名称。
- 将下面可选属性添加到 SimpleTrans.cs中,就放在 using 语句之后:
[assembly:Description("Simple Transactional application to show Enterprise Services")]
此属性为"COM+ 目录"和"组件服务管理"控制台中的 COM+ 应用程序提供说明。 - 将下面的方法添加到 SimpleTrans.cs:
// Demos Explicit SetComplete/SetAbort public string DoTrans() { SqlConnection connection; SqlCommand command; SqlDataReader reader; string name; string query; try { query = "SELECT au_lname, au_fname FROM authors"; connection = new SqlConnection("data source = localhost; initial catalog = pubs; UID=sa;PWD="); command = new SqlCommand(query, connection); connection.Open(); reader = command.ExecuteReader(); reader.Read(); name = reader.GetString(0) + ", " + reader.GetString(1); } catch (Exception exc) { ContextUtil.SetAbort(); throw exc; } return name; } // Demo implicit SetComplete/SetAbort [AutoComplete] public void DoTxAuto() { // Do stuff }
- 根据您的环境相应地修改 SqlConnection 字符串。
为程序集提供强名称
- 单击开始,指向程序,指向 Microsoft Visual Studio .NET,再指向 Visual Studio .NET 工具,然后单击 Visual Studio .NET 命令提示。
- 在命令提示符下,键入 sn.exe -k ServicedCOM.snk,为程序集创建一个强名称。
有关使用强名称签署程序集的信息,请参阅 .NET 框架软件开发工具包 (SDK) 文档。 - 将 ServicedCOM.snk 复制到项目文件夹中。
- 在 AssemblyInfo.cs 中,将 AssemblykeyFile 代码替换为以下代码:
[assembly:AssemblyKeyFile("..//..//ServicedCOM.snk")]
将服务组件添加到 COM+
可以在创建第一个实例后让组件动态注册,或者用 Regsvcs.exe 手动注册组件。若要使用 Regsvcs.exe,请按以下步骤操作:- 单击开始,指向程序,指向 Microsoft Visual Studio .NET,再指向 Visual Studio .NET 工具,然后单击 Visual Studio .NET 命令提示。
- 在命令提示符下,键入 regsvcs servicedcom.dll。这将创建与类同名的 COM+ 库应用程序。忽略警告消息。
测试组件
- 在"记事本"中打开一个文本文件。
- 将下面的代码粘贴到文件中:
set o =createobject("ServicedCOM.SimpleTrans") MsgBox o.DoTrans()
- 在文件菜单上,单击保存。
- 在另存为对话框的文件名文本框中,键入 Test.vbs。在保存类型列表中,单击所有文件,然后单击保存。
- 双击该文件以运行示例。
这篇文章中的信息适用于:
- Microsoft Enterprise Services(随 .NET 框架提供)
- Microsoft Visual C# .NET (2002)
最近更新: | 2002-7-19 (1.0) |
关键字 | kbhowto kbHOWTOmaster KB306296 |