Visual C# .NET 中创建 .NET 服务组件

本分步指南演示了如何创建使用事务的 .NET 服务组件。本文还将说明如何创建测试服务组件的客户机。Microsoft Enterprise Service 为 .NET 组件提供 Microsoft COM+ 服务。

重要说明

<script type=text/javascript> loadTOCNode(2, 'summary'); </script>
  • 服务组件需要有强名称。
  • 应当在"全局程序集缓存"(GAC) 中注册服务组件,因为这些组件是系统级别的资源。服务器应用程序要求安装在 GAC 中,库应用程序则不要求这样(但是建议安装在 GAC 中)。
  • 您可以通过延迟注册自动向 COM+ 注册服务组件,也可以通过 Regsvcs.exe 实用工具手动注册。Regsvcs.exe 位于下面的文件夹中:
    /WINNT/Microsoft.NET/Framework/< 框架版本 >
    有关 Regsvcs.exe 的更多信息,请参阅 Microsoft .NET 框架软件开发工具包 (SDK) 文档。
  • 此示例假定本地计算机上已安装 Microsoft SQL Server。
  • 提供此示例只是为了进行说明。严格地说,此示例的选择查询很适合在 COM+ 事务外运行,因为 COM+ 为事务采用最高隔离级别。若要增大数据库的吞吐量,良好的编程策略是考虑较低事务级别的读取查询。

创建 .NET 服务组件

<script type=text/javascript> loadTOCNode(2, 'summary'); </script>
  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 字符串。

为程序集提供强名称

<script type=text/javascript> loadTOCNode(2, 'summary'); </script>
  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+

<script type=text/javascript> loadTOCNode(2, 'summary'); </script> 可以在创建第一个实例后让组件动态注册,或者用 Regsvcs.exe 手动注册组件。若要使用 Regsvcs.exe,请按以下步骤操作:

  1. 单击开始,指向程序,指向 Microsoft Visual Studio .NET,再指向 Visual Studio .NET 工具,然后单击 Visual Studio .NET 命令提示
  2. 在命令提示符下,键入 regsvcs servicedcom.dll。这将创建与类同名的 COM+ 库应用程序。忽略警告消息。

测试组件

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

http://support.microsoft.com/kb/306296/zh-cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值