技术开发 频道

.NET下开发COM+组件

    四、实例剖析

    1、首先新建一个类库。(在我的项目里叫XMLOperate)

    它会生成两个文件,AssemblyInfo.cs和Class1.cs(我把Class1.cs改成了Main.cs,具体名称可以自己定)

    2、添加引用(System.EnterpriseServices )

    3、回到Main.cs:

using System; using System.Reflection; using System.Runtime.InteropServices; using System.EnterpriseServices; namespace XMLOperator { /// <summary> /// OMPmSAXMLOperator 的摘要说明。 /// </summary> [ObjectPooling(MinPoolSize=0, MaxPoolSize=1)] [JustInTimeActivation(true)] [ClassInterface(ClassInterfaceType.AutoDual)] public class XMLOperate : ServicedComponent { protected override void Construct(string constructString) { base.Construct(null); } protected override void Activate(){} protected override void Deactivate(){} protected override bool CanBePooled(){return true;} protected override void Dispose(bool disposing) { base.Dispose(disposing); } /// ///把我的很多方法都去掉了,写个简单的visit来演示一下就OK了。 /// [AutoComplete] public string visit(string name) { return "欢迎 " + name; } } }

    4、回到AssemblyInfo.cs,添加引用using System.EnterpriseServices;

    添加代码:

//将组件设置为服务器启动模式。 [assembly: ApplicationActivation(ActivationOption.Server) ] //制定应用服务器名称 [assembly: ApplicationName("XMLOperate")]
    5、接下来,给服务器程序一个强名称(相当于注册)。打开 Visual Studio .Net2003 (也许你用的是2005)命令提示,找到文件的地址,输入sn -k ,生成密匙比如我的文件在D盘,work中,

    D:\work\XMLOperate> sn -k XMLOperate.snk

    XMLOperate.snk为生成的文件名称,( 执行完成后,文件里会多出一个文件server.snk )

    6、强名称生成完后,回到程序中,在AssemblyInfo.cs中最后几排,可以发现[assembly: AssemblyKeyFile(" ")],把文件路径写进去[assembly: AssemblyKeyFile("……/……/XMLOperate.snk")]

    7、生成解决方案,在OBJ \ debug 中会有个XMLOperate.dll,回到Visual Studio .Net2003 命令提示,到文件obj\debug目录下,执行regsvcs 命令,注册服务。(完全可以不用手工注册,在步骤9中,客户端调用new的时候的时候如果没有注册该组件服务,则系统会自动注册,详细请见(三)部分最后的注册方式。)

    我的项目中是这样的D:\work\XMLOperate\obj\debug > regsvcs XMLOperate.dll;

    这样,服务器就构建完成。

    打开我的电脑,控制面板,管理工具,组件服务,com+应用程序,现在我们可以看到com+中多了个,XMLOperate这个就是刚所建的服务器。

    8、在XMLOperate上按右键,打开属性,修改安全性:调用身份验证级别为:无,模拟级别为标识。授权下的勾去掉( 这些是根据情况需要更改的,现在仅仅做个本机上的列子)。然后找到激活,远程服务器名称改成你自己机器的IP地址。

    9、建立客户端。建一个winfrom(在我的项目里其实有1个web service和一个window service来调用XMLOperate)

    加入引用:
using System.EnterpriseServices; using XMLOperate;
    在客户端要引用的地方new 一下就可以直接用其中的方法了。

0
相关文章