我继承了一个应用程序,它由一堆使用 COM 和 COleDispatchDriver 进行通信的 exe 文件组成。有一个主要的“客户端”exe 和几个提供服务的“服务器”可执行文件。
目前,客户端进程使用 COleDispatchDriver::CreateDispatch() 启动服务器,传递一个应用程序 ID,该应用程序 ID 被解析为一个类 ID。这样做的问题是它依赖于正在注册的 COM 服务器(一个潜在的故障点)。如果机器上有多个不同版本的 COM 服务器 exe,也可能会出现问题。
我想让它变得不那么脆弱,而不必在此时完全重新架构应用程序。有没有办法保持相同的通信机制,但显式启动特定的服务器应用程序?客户端知道服务器应用程序在哪里以及它们被称为什么(它们与客户端在同一目录中)。