HOW TO:在 Visual C# .NET 中创建 .NET 服务组件

文章翻译 文章翻译
文章编号: 306296 - 查看本文应用于的产品
本文的发布号曾为 CHS306296
展开全部 | 关闭全部

本文内容

概要

本分步指南演示了如何创建使用事务的 .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 服务组件

  1. 创建名为 ServicedCOM 的新的 Visual C# 类库项目。
  2. 将默认类和文件名从 Class1.cs 重命名为 SimpleTrans.cs 。为此,请按照下列步骤操作:
    1. 在"类视图"窗口中,右键单击 Class1,然后单击属性
    2. 属性中,将名称属性更改为 SimpleTrans
  3. 添加一个 System.EnterpriseServices 名称空间的引用。
  4. 将下列语句作为第一行添加到 SimpleTrans.cs AssemblyInfo.cs 中:
    using System.EnterpriseServices;
  5. ServicedComponent 继承类(完全限定名:System.EnterpriseServices.ServicedComponent)。
  6. 将下面的代码添加到 *public class* 前:
    [Transaction(TransactionOption.RequiresNew)]
  7. 将下面推荐的属性添加到 AssemblyInfo.cs 中:
    [assembly:ApplicationActivation(ActivationOption.Library)]
    [assembly:ApplicationName("SimpleTrans")]	
    • ActivationOption 属性指示是否在调用方的进程中激活组件。您可以将 Activation.Option 设置为服务器
    • ApplicationName 属性是"COM+ 目录"和"组件服务管理"控制台中显示的 COM+ 应用程序的名称。
  8. 将下面可选属性添加到 SimpleTrans.cs中,就放在 using 语句之后:
    [assembly:Description("Simple Transactional application to show Enterprise Services")]
    此属性为"COM+ 目录"和"组件服务管理"控制台中的 COM+ 应用程序提供说明。
  9. 将下面的方法添加到 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
    }
  10. 根据您的环境相应地修改 SqlConnection 字符串。

为程序集提供强名称

  1. 单击开始,指向程序,指向 Microsoft Visual Studio .NET,再指向 Visual Studio .NET 工具,然后单击 Visual Studio .NET 命令提示
  2. 在命令提示符下,键入 sn.exe -k ServicedCOM.snk,为程序集创建一个强名称。

    有关使用强名称签署程序集的信息,请参阅 .NET 框架软件开发工具包 (SDK) 文档。
  3. 将 ServicedCOM.snk 复制到项目文件夹中。
  4. 在 AssemblyInfo.cs 中,将 AssemblykeyFile 代码替换为以下代码:
    [assembly:AssemblyKeyFile("..\\..\\ServicedCOM.snk")]

将服务组件添加到 COM+

可以在创建第一个实例后让组件动态注册,或者用 Regsvcs.exe 手动注册组件。若要使用 Regsvcs.exe,请按以下步骤操作:
  1. 单击开始,指向程序,指向 Microsoft Visual Studio .NET,再指向 Visual Studio .NET 工具,然后单击 Visual Studio .NET 命令提示
  2. 在命令提示符下,键入 regsvcs servicedcom.dll。这将创建与类同名的 COM+ 库应用程序。忽略警告消息。

测试组件

  1. 在"记事本"中打开一个文本文件。
  2. 将下面的代码粘贴到文件中:
    set o =createobject("ServicedCOM.SimpleTrans")
    
    MsgBox o.DoTrans()
  3. 文件菜单上,单击保存
  4. 另存为对话框的文件名文本框中,键入 Test.vbs。在保存类型列表中,单击所有文件,然后单击保存
  5. 双击该文件以运行示例。

属性

文章编号: 306296 - 最后修改: 2002年7月19日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft .NET Framework Service Pack 2
  • Microsoft Visual C# .NET 2002 标准版
关键字:?
kbhowto kbhowtomaster KB306296
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com