为什么COM服务器被称为“服务器”?
服务器通常是在计算机上运行的进程,响应客户端的请求。
COM 'servers‘只是编译后的代码文件,可以由运行中的进程调用。它们不应该被称为服务器。
发布于 2016-02-19 07:35:15
从技术上讲,“服务器”只是一个提供服务的程序。所以,在COM中,您有客户端和服务器。当然,今天我们认为HTTP/REST/SOA/微服务等等,但是COM在此之前就已经存在了,甚至在诸如“网络”(甚至没有提到网络/internet)这样的明显概念还没有那么明显之前。
让我们引用官方文档:COM客户端和服务器
COM客户端是指任何代码或对象都可以获得指向COM服务器的指针,并通过调用其接口的方法来使用其服务。 COM服务器是向客户端提供服务的任何对象;这些服务以COM接口实现的形式出现,任何能够获得指向服务器对象上的接口之一的指针的客户端都可以调用这些实现。 有两种主要类型的服务器,即out-of-process.和in process。进程内服务器在动态链接库(DLL)中实现,进程外服务器在可执行文件(EXE)中实现.进程外服务器可以驻留在本地计算机上,也可以驻留在远程计算机上. 此外,COM还提供了一种机制,允许进程内服务器( DLL)在代理EXE进程中运行,以获得在远程计算机上运行进程的优势。了解更多信息
的确,许多COM服务器都是在DLL中实现的,但情况并不总是如此。众所周知的进程外服务器的例子: Word、Excel等.
此外,正如最后一段所说,您可以(几乎总是)通过使用代理程序进行配置,将进程内服务器(所以是DLL)转换为进程外服务器。COM提供了一个名为"dllhost.exe“的故障代理程序,有时您可以在任务管理器中看到它。例如,Windows资源管理器使用它来保护自己免受进程内恶意扩展的影响.
https://stackoverflow.com/questions/35494644
复制相似问题