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

时间:2016-02-18 23:37:22

标签: com

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

服务器通常是在机器上运行的进程,它响应来自客户端的请求。

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

1 个答案:

答案 0 :(得分:2)

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

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

  

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

     

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

     

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

     

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

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

另外,正如在最后一句中所说的那样,您可以(几乎总是)通过使用代理进行配置,很容易地将进程内服务器(因此是DLL)转换为进程外服务器。 COM提供一个名为" dllhost.exe"的defaut代理。您有时可以在任务管理器中看到。例如,Windows资源管理器使用它来保护自己免受恶意进程内扩展。