描述:
我原来有一个进程内组件,它的功能是负责客户端与服务器端通信,客户端可以调用该组件的函数去连接服务器,建立连接后客户端可以调用登录函数登录到服务器(作为服务器的一个客户),然后可以调用其他函数向服务器索取信息,服务器反馈信息后,组件会触发相应事件,并且在一台电脑上同时只允许一个客户存在,所以原来设计时同一时刻只允许一个程序调用该组件;
但是现在需求变了,要求在一台电脑上同时可以有多个程序去调用该组件,但是对于服务器来说还是只有一个客户,所以我想把原来的组件改为进程外组件,在该组件初始化就去连接服务器,连接成功后,任意一个程序都可以调用其他函数了(包括登录);
我想问对于进程外组件,是不是可以做到第一个调用该组件的程序启动时才初始化该组件,其他的程序启动时都不再初始化?
当最后一个调用该组件的程序关闭时,组件才释放?
组件触发的事件是不是每一个调用该组件的程序都会收到?
解决方案1:
对于进程外组件,是这样工作的: 当你的EXE程序第一次启动时, 组件向系统注册你的类厂,
这样,当一个客户程序请求服务的时候,系统查询他保存的类厂列表,,如果有的话,就不会启动程序,没有就以服务的形式启动你的EXE程序.所以你说的第一条是可以实现的.
进程外组件也确实是要等所有的调用者关闭时才关闭(其实也不会马上关闭,要等待一段时间)
组件的中的事件触发是由连接点来实现的..组件发生事件时会通知所有在连接点中注册过的调用者.
将进程内组件改成进程外组件, 应该不是太麻烦(不过你要找一个水平比较高的人来做)