您的位置:首页 > 其它

.Net下开发COM+组件

2007-11-02 18:30 204 查看
一、问题的提出
1、最终用户的每次请求,都将读取Mapping文件--可以通过缓存解决;
2、子系统需要不断的写入Mapping文件--也可以先写入内存然后批量写入文件解决;

二、分析解决问题
由于分别有2个或更多子系统需要对同一文件进行读写操作,而客户端又有很大的并发性,所以极可能出现读写冲突或错误,也必将影响系统的性能。
通过调用共同的进程外组件的方式来读写文件;而这个共同的进程外组件只有在自身启动的时候把文件内容load到内存,当文件有变化时更新内存。

三、实例剖析

1、首先新建一个类库。(在我的项目里叫ClassLibrary1) 它会生成两个文件,AssemblyInfo.cs和Class1.cs

2、添加引用(System.EnterpriseServices )

3、回到Class1.cs:

[ObjectPooling(MinPoolSize=0, MaxPoolSize=1)]
[JustInTimeActivation(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]

public class Class1:ServicedComponent
{
public Class1()
{

}
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);
}
public string visit(string name)
{
return "欢迎 " + name;
}

}

5、注册

E:/Test/ClassLibrary1> sn -k ClassLibrary1.snk

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

7、生成解决方案,服务器就构建完成!

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

8、客户端。
建一个winfrom来调用ClassLibrary1
加入引用:
using System.EnterpriseServices;
using XMLOperate;
在客户端要引用的地方new 一下就可以直接用其中的方法了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: