T Tianhao Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-19 #1 对于ISAPI的进程运行机制,服务器端在加载时DLL时是否只调用一次OnCreate事件,以后每次对于客户端的请求,除非WebServer重新启动,始终不会再调用Create事件了吗?
小 小猪 Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-19 #4 书上是这样说的: DLL由web服务器装入 客户端的请求信息以数据结构的形式 传递给DLL,DLL程序的TISAPIApplication 对象分析这些请求信息,然后创建TISAPIResquest 对象和TISAPIresponse对象。每次客户端的请求都在一个 独立的执行线程中执行。 一个ISAPI/NSAPI服务器应用程序是运行在web服务器进程空间 中的一个线程级安全的DLL。当发生HTTP请求调用这个ISAPI DLL 时,web服务器从它的线程池中取得一个线程,并启动这个在DLL中执行的线程 。线程池是一个由web服务器管理的工作线程的的集合。该线程池可随服务器 的负载情况动态的增大或缩小。在执行结果送回到客户端后,该线程也将被送回 线程池。这是一个比派生新进程的方法利用系统资源更为有效的方法。使用ISAPI的 一个缺点是线程级的安全代码难以编写和测试。另一个缺点是,一旦DLL被服务器加载,如果想替换这个DLL就需要停止服务器。 说实话,我也看不太懂。
书上是这样说的: DLL由web服务器装入 客户端的请求信息以数据结构的形式 传递给DLL,DLL程序的TISAPIApplication 对象分析这些请求信息,然后创建TISAPIResquest 对象和TISAPIresponse对象。每次客户端的请求都在一个 独立的执行线程中执行。 一个ISAPI/NSAPI服务器应用程序是运行在web服务器进程空间 中的一个线程级安全的DLL。当发生HTTP请求调用这个ISAPI DLL 时,web服务器从它的线程池中取得一个线程,并启动这个在DLL中执行的线程 。线程池是一个由web服务器管理的工作线程的的集合。该线程池可随服务器 的负载情况动态的增大或缩小。在执行结果送回到客户端后,该线程也将被送回 线程池。这是一个比派生新进程的方法利用系统资源更为有效的方法。使用ISAPI的 一个缺点是线程级的安全代码难以编写和测试。另一个缺点是,一旦DLL被服务器加载,如果想替换这个DLL就需要停止服务器。 说实话,我也看不太懂。
T Tianhao Unregistered / Unconfirmed GUEST, unregistred user! 2000-05-19 #5 非常感谢小猪猪,这是ISAPI高于cgi的地方. 据调试所知,在启动DLL时,主进程只调用一次初始化代码, 以后在产生线程要公用被初始化的东西. 不知你看的什么书,能否推荐?