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

时间:2011-12-18 06:39:29

标签: dll com terminology

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

我意识到COM客户端将通过创建对象和调用函数等来利用COM DLL。

但是'服务器'应该是在OS中运行的实际进程。为什么术语“服务器”应用于COM DLL?

3 个答案:

答案 0 :(得分:6)

这就是定义COM模型和术语的方式。有客户端和服务器。 此术语不受特定COM服务器托管方式的影响,或特定COM客户端如何连接到所述服务器 - 会让您感到困惑! :)

(DLL本身不是COM服务器:而是COM DLL 包含 COM服务器。)

在一个理想的世界中,没有理由需要区分进程外的COM对象( 托管,就像“经典”的定义一样)服务器在一个单独的进程中)和进程内COM对象。但是,仅仅因为它在进程中并不意味着它是直接访问,COM将跨越线程边界进行编组! (在这种情况下,“经典服务器”的物理表现仍适用于,仅适用于子流程级别。)

我认为this is a good brief intro。我认为最好将COMCORBA进行比较,而不仅仅是库或类。也就是说,COM也定义了通信规则。这在大多数图书馆中都不存在 - 例如JAR文件中的类或非COM DLL - 实际上只包含“要执行的代码”。

快乐的编码。


以下是我认为相关的definition of COM

  

组件对象模型+(COM +)是Microsoft定义的二进制互操作性标准,它指定了分布式对象通信的模型。 COM +通过将对象分成客户端和服务器来定义通信。客户端被定义为想要访问特定服务的对象,而服务器是提供服务的对象。客户端和服务器可以独立于定义它们的编程语言相互通信,并且独立于它们之间的操作系统。

答案 1 :(得分:2)

术语“服务器”在相当宽松的意义上使用,因为它是提供服务的组件。特定组件可能作为进程内DLL可用的事实是实现细节。

答案 2 :(得分:1)

DLL为客户端提供服务。所以类似于网络中的Client-Server模型,我们也将DLL称为服务器。