T trancebaby Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-03 #1 因为好像Multiple Instance只有在dll里才能选吧? 如果在exe里,一有客户连接就会运行一个实例,比较讨厌. 是不是这样?
L langer Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-03 #3 trancebaby你错了,实例模式只对EXE服务器有效,对DLL类型被忽略。 不论采用什么类型的服务器,一般都会创建一个新的实例。如果将远程模块放在DLL 里可以采用MTS,或则自己创建一个代理EXE来负责启动DLL类型服务器。
trancebaby你错了,实例模式只对EXE服务器有效,对DLL类型被忽略。 不论采用什么类型的服务器,一般都会创建一个新的实例。如果将远程模块放在DLL 里可以采用MTS,或则自己创建一个代理EXE来负责启动DLL类型服务器。
T trancebaby Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-03 #4 那么怎样创建一个代理exe, 是不是很复杂,如果是的话我就不尝试了.
T trancebaby Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-03 #5 同志,你才错了呢. 我试过了,可以编成dll服务器的,不过需要注册一下. 不过我也说错了,其实Multiple Instance都可以选的, 只不过dll不像exe那样生成对应的实例,就装载一次吧.
M maming Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-05 #6 如做成DLL的话, 一启动,那不就与数据总是联接的吗? 而且好象不会自退了啊!
T trancebaby Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-05 #7 1?这倒是个问题.这个不知能不能编程解决呢?
L langer Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-09 #8 to trancebaby: 你真的错了,如果在本地运行是DLL还是EXE都没有关系,但想在远 程启动DLL类型的服务器,如果不用代理或MTS(其实也可理解为代理服务器进程)的话你试一试?其实DLL必须被装载到某个进程空间,没有代理进程存在的话,远程的 DLL被装载在哪个进程中?千万不要告诉我它将装载在你的客户进程中!
to trancebaby: 你真的错了,如果在本地运行是DLL还是EXE都没有关系,但想在远 程启动DLL类型的服务器,如果不用代理或MTS(其实也可理解为代理服务器进程)的话你试一试?其实DLL必须被装载到某个进程空间,没有代理进程存在的话,远程的 DLL被装载在哪个进程中?千万不要告诉我它将装载在你的客户进程中!
T trancebaby Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-09 #9 >DLL被装载在哪个进程中? 不要问我啊,我实在是个新手, 我也想知道这个问题的答案. 和怎样编个代理服务器进程?要不然dll老在内存里,感觉真不好. 有答案吗?分全给啦.
D davidc Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-09 #10 首先,如果是生成Exe文件,不管有几个客户端,只会有一个应用程序服务器 的实例。另外,如果生成Dll,在NT服务器上的MTS控制台注册之后,如果没 有客户端连接上来,MTS服务不会启动,Dll不会加载。在本地Win98上直接注 册这个动态链接库也是一样的。
首先,如果是生成Exe文件,不管有几个客户端,只会有一个应用程序服务器 的实例。另外,如果生成Dll,在NT服务器上的MTS控制台注册之后,如果没 有客户端连接上来,MTS服务不会启动,Dll不会加载。在本地Win98上直接注 册这个动态链接库也是一样的。
L langer Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-10 #11 如果使用MTS的话,DLL将被自动被加载在MTS的地址空间中(进程)。如果不使用 MTS,简单的做法可以自己编写一个EXE型服务器,然后由它为你创建所需要的各 种存放在DLL中对象,并将接口指针返回客户端(客户端获得接口罗嗦一点)。 我认为你的问题并不在于是否需要一个代理EXE,而是如何释放不再使用的DLL库 的问题,有很简单就可解决这个问题,首先需要编写并挂接Application.OnIdle 事件,在该事件中加入一行释放无用DLL库的API函数,好像是FreexxxxLibaray 具体名称我记不清楚了,如果你还查不到的话,晚上我给你准确的API名。它的原 理就是:在主程序没有事情做的情况下清理已装载但不再使用的DLL库。
如果使用MTS的话,DLL将被自动被加载在MTS的地址空间中(进程)。如果不使用 MTS,简单的做法可以自己编写一个EXE型服务器,然后由它为你创建所需要的各 种存放在DLL中对象,并将接口指针返回客户端(客户端获得接口罗嗦一点)。 我认为你的问题并不在于是否需要一个代理EXE,而是如何释放不再使用的DLL库 的问题,有很简单就可解决这个问题,首先需要编写并挂接Application.OnIdle 事件,在该事件中加入一行释放无用DLL库的API函数,好像是FreexxxxLibaray 具体名称我记不清楚了,如果你还查不到的话,晚上我给你准确的API名。它的原 理就是:在主程序没有事情做的情况下清理已装载但不再使用的DLL库。
L langer Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-10 #12 释放库函数找到了:CoFreeUnusedLibraries