Net下,如何通过Com组件实现自己实现事务

来源:互联网 发布:java 登录验证码 编辑:程序博客网 时间:2024/05/24 06:35
1、添加对dll System.EnterpriseServices引用,并且在程序的头部使用using System.EnterpriseServices;引入命名空间。

2、书写抽象类,public abstract class TransactionControllerBase:ServicedComponent ,该类类要从ServicedComponent继承

3、集成基类TransactionControllerBase,实现自己的事务类,并在类上增加 [Transaction(TransactionOption.Required)],以启用事务

    以下就是一个实现类,其他类似,也要定义自己的接口。

    /// <summary>
    /// 需要事务的事务控制器
    /// </summary>
    [ProgId("RequireTransaction")]
    [Guid("E42F5FFF-823B-4F20-AE80-B13A3C991113")]
    [Transaction(TransactionOption.Required)]
    public sealed class RequireTransaction:TransactionControllerBase
    {
        public RequireTransaction() { }
    }

4、修改AssemblyInfo.cs文件
[assembly: ComVisible(true)]
[assembly:AssemblyKeyFileAttribute("..//..//Enterprise.snk")]//强命名,snk文件在项目的根目录,可以与别的类库共用一个snk文件

5、如果是类库项目,该类库所生成的dll必须是强命名的,所以可以使用VS自带的SN(Strong Name)工具,生成签名秘钥。

在vs.net2005自带的 命令行工具(不使用自带的工具要对环境变量进行配置)

sn -k 路径/Enterprise.snk

路径就是项目所在的绝对路径

也可以使用类库项目的属性对话框的签名属性来生成强命名的dll,效果一样的。


6、把dll.注册到.Net Framework,注册的必须使用管理员的权限,否则注册会失败。

regsvcs 路径/*.dll

此路径必须是完成路径

7、现在就可以在Web Form或者MVC中调用了,引用.dll文件,实例化类,正常使用。

好了,这是第一篇文件,把自己的写代码的步骤记录下来,以备后查。





0 0