使用C#开发COM+组件

.NET 技术是微软大力推广的下一代平台技术,自从 .NET 技术架构 Beta2 版本的正式发布,此项技术也逐渐走向成熟和稳定。按照微软的平台系统占有率,我们不难想象得到,在未来的一两年内 .NET 技术必定会势如破竹一般的登上主流的技术平台,而一个新的技术平台得以快速发展的最重要的前提是:他不会彻底的摒弃以前的技术,这一点对于 .NET 技术来说指的就是 COM/COM+ 技术了。

一般来说,在 IT 技术界以及硬件产业,技术的更新换代速度非常得惊人,而惯例是所有的新技术都会遵循向下兼容的原则,但是 .NET 技术不仅仅做到了这一点, .NET 甚至实现了相互之间的各自调用,这一点是非常难能可贵的。也就是说,不但我们可以在 .NET 组件中调用 COM 组件,同时也可以在 COM 组件中正常的调用 .NET 组件。这点带来的好处是显而易见的,一方面我们可以保持现有的技术资源,另一方面,在现有资源中可以利用 .NET 所带来的各种新技术。

在 E\ClassLibrary1\ 目录下用 SN 命令生成一个 GUID ,如下所示:

sn –k keyfile.snk

在工程的 AssemblyInfo.cs 文件中加入如下语句:

[assembly: AssemblyKeyFile(@"e:\classlibrary1\keyfile.snk")]

作用是使这个工程文件创建的 DLL 文件拥有 GUID (全球唯一标识符),也就是拥有一个强名称( strong name ),这是 COM+ 要求的。

CS 的详细代码如下:

using System;

using System.Runtime.InteropServices; //为了调用GUID

using System.EnterpriseServices; //引用COM+的类

using System.Web.Services;

namespace ClassLibrary1

{

//如果不指定guid,每次都会随机生成CLSID

[Guid("539448DE-9F3B-4781-A1F6-F3C852091FC9")]

public interface ISharpObject2

{

string Name //Property: Name, Get/Set

{

get ;

set ;

}

void Test();

}

public class Class1: ServicedComponent,ISharpObject2

{

public Class1()

{

//

// TODO: Add constructor logic here

//

}

private string m_strName;

public string Name //Property: Name, Get/Set

{

get { return m_strName; }

set { m_strName = value ; }

}

public void Test(){}

}

}

生成 DLL 文件后可以有 3 种方法,在 COM+ 的管理服务器中创建一个 COM+ 应用程序,这里使用的方法是在 DOS 操作下,使用命令

regsvcs /c class1.dll MyCom “MyCom 是要生成的 COM+ 应用程序名“

Published At
Categories with Web编程
Tagged with
comments powered by Disqus