耗尽流程com服务器 - 每个呼叫过程一个服务器进程
Out of Process COM Server - One server process per calling process?
我有一个逐步的com服务器,将clsctx_local_server指定为上下文,而连接类型的regcls_multiperuse。这导致多个客户端的多个调用重复使用单个服务器进程。
我现在想对服务器进行一些更改,不幸的是,该服务器无法与客户之间共享的单个过程使用(有原因是这样做的原因,但它们却很长)。我知道您可以将服务器设置为使用REGCLS_SINGLEUSE作为连接类型,这将为每个调用的OOP服务器创建一个新的过程。这解决了我的问题,但在流程使用方面是不开始的。短期内多次调用会导致许多过程,并且该特定服务器可能经常被击中。
有人碰巧知道混合这两种连接类型的机制吗?从本质上讲,我想要的是每个调用过程的单个服务器过程。(即客户端一个人创建一个过程,并且该过程被重复使用该客户端的后续调用。客户端两个尝试调用服务器,并创建一个新的过程)。我怀疑我可以通过强迫rengcls_singleuse服务器在客户端永久打开,但这既不优雅也不可能(因为我无法更改一个客户端)。
想法?
更新正如预期的那样,似乎没有办法这样做。如果允许时间和资源,我很可能会将其转换为程序内解决方案。但是,目前,我必须处理任何用于任何呼叫客户端的新行为。幸运的是,这种变化的影响非常小,客户可以接受。
,我将调查更加急剧和适当的更改。注意我将汉斯的答复标记为答案,因为它实际上确实为维持OOP解决方案的问题提供了解决方案。我只是没有能力实施它。
cal
com不支持此激活方案。它应该由程序中的服务器覆盖,请确保在其相当优势的情况下,这不是您想做的方式。
使用REGCLS_SINGLEUSE是替代方案,但这需要您扩展对象模型以避免现在创建的服务器实例的风暴。Application
镜是样板方法。为其提供工厂方法,使您可以实现现有接口的实例。
我将提到一种截然不同的方法,当我想解决相同的问题时使用的方法,但是需要 以利用弥合点差距。您不会遇到com为您启动服务器流程,客户端也可以启动它。当然,它对服务器的安装位置有足够的了解。现在,客户当然可以完全控制服务器实例。该服务器称为CoreGisterClassObject(),带有更改的CLSID,我将GUID的一部分与流程ID隔离。客户端执行了相同的操作,因此它始终与正确的服务器连接。客户端需要额外的代码,以确保其等待时间足够长,以使服务器有机会注册其对象工厂。效果很好。
- 递归函数计算序列中的平方和(并输出过程)
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 是否删除在对象构造过程中创建的对象
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从服务器传输到客户端的消息不会出现
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- OpenSSL TLS服务器-使用客户端证书白名单
- 我正在开发服务器,ip作为参数传递不起作用
- 如何在鼠标挂钩过程中检测拖动
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 提升 Asio TCP 服务器 处理多个客户端
- 是否可以使用InProceChannel使用Java客户端在同一过程中调用C 服务器
- C 中的远程过程调用(RPC):在硬编码端点时,可以多个客户端侦听一台服务器
- 推荐的方法让PHP与同一服务器上的过程进行通信
- 耗尽流程com服务器 - 每个呼叫过程一个服务器进程
- MSSQL服务器存储过程在从c++调用时不返回输出参数
- 为什么SQL服务器将值传递给存储过程中的OUTPUT变量?