如何生成可从 COM 客户端调用的 .NET 服务器

本节解释如何生成和安装将从 COM 应用程序使用的托管代码。生成过程包括以下步骤:

  1. 编写和编译托管代码。
  2. 使用 tlbexp.exe 实用工具为程序集生成类型库。
  3. 安装和注册程序集。
  4. 编写和编译引用程序集中类型的 COM 代码。
编写和编译托管代码
在开始生成将从 COM 使用的程序集之前,重要的是要了解公共语言运行库的互操作性服务的限制。请参阅互操作性入门,以获得关于这些限制的确切内容的详细信息。

如果您的托管程序集打算用来在几个应用程序之间进行共享,那么请确保该程序集有一个共享名称,以便能将其安装到全局程序集缓存中(请参阅如何创建具有共享名称的程序集)。如果程序集没有共享的名称,则它只能用于单个应用程序。

编写完托管代码后,编译过程就与其他任何托管代码的编译过程一样了。

生成类型库
大多数非托管应用程序的开发工具都要求先有一个类型库,然后您才能引用外部类型。可使用 tlbexp.exe 从程序集生成类型库,tlbexp.exe 将生成一个 .tlb 文件,非托管开发工具此后即可引用该文件。
tlbexp TestServer.dll 

例如,使用 Visual Basic 6.0 可以从“项目/引用”对话框来引用 .tlb 文件。在 Visual C++ 6.0 中,可以使用 #import 语句将类型定义从类型库直接导入到 C++。一旦向项目添加了对类型库的引用,就可从非托管代码引用在该库中定义的类型。

安装和注册程序集
为了从非托管代码真正创建托管类型,需要在全局程序集缓存 (GAC) 中安装该程序集,并将其注册以便从 COM 使用。

可使用 gacutil.exe 实用工具在全局程序集缓存中安装程序集。可使用 /u 选项来卸载程序集。

gacutil /i TestServer.dll 
如果程序集要由单个应用程序专用,则可将其直接复制到该应用程序目录中(而不是将该程序集安装在 GAC 中)。专用程序集不需要共享名称,但是必须将其注册以便从 COM 使用。

可使用 regasm.exe 实用工具来注册程序集。可使用 /u 选项来卸载程序集。

regasm TestServer.dll 

编写和编译非托管代码
程序集一旦完成注册并正确安装后,就可从 COM 使用程序集中定义的类型,就像使用正常的 COM 类型一样。例如,可通过调用 CoCreateInstance API,或者通过从 Visual Basic 或脚本语言调用 CreateObjectGetObject 来创建新对象。请参阅本节余下的示例以获得具体的编码细节。

posted on 2004-08-26 00:20  雪美·考拉  阅读(908)  评论(0编辑  收藏  举报