COM 服务器是“服务器”吗?

CJ7*_*CJ7 1 com

为什么 COM 服务器被称为“服务器”?

服务器通常是在计算机上运行的进程,用于响应客户端的请求。

COM“服务器”只是可以由正在运行的进程调用的已编译代码的文件。它们不应该被称为服务器。

Sim*_*ier 5

从技术上讲,“服务器”只是一个提供服务的程序。因此,在 COM 中,有客户端和服务器。当然,今天我们想到的是 HTTP/REST/SOA/微服务等。但是 COM 早在这之前就已经存在了,甚至在诸如“网络”(甚至不谈互联网)这样明显的概念还没有那么明显之前。

让我们引用一下官方文档:COM Clients and Servers

COM 客户端是获取指向 COM 服务器的指针并通过调用其接口的方法来使用其服务的任何代码或对象。

COM 服务器是为客户端提供服务的任何对象;这些服务采用 COM 接口实现的形式,任何能够获取指向服务器对象上的接口之一的指针的客户端都可以调用这些服务。

服务器主要有两种类型:进程内进程外。进程内服务器在动态链接库(DLL)中实现,进程外服务器在可执行文件(EXE)中实现。进程外服务器可以驻留在本地计算机或远程计算机上。

此外,COM 提供了一种机制,允许进程内服务器(DLL)在代理 EXE 进程中运行,以获得能够在远程计算机上运行该进程的优势。了解更多信息

确实,许多 COM 服务器都是在 DLL 中实现的,但情况并非总是如此。众所周知的进程外服务器示例:Word、Excel 等。

另外,正如最后一句话中所说,您可以(几乎总是)通过使用代理进行配置,轻松地将进程内服务器(因此是 DLL)转换为进程外服务器。COM 提供了一个名为“dllhost.exe”的默认代理,您有时可以在任务管理器中看到它。例如,Windows 资源管理器使用它来保护自己免受流氓进程内扩展的侵害。