Windows 什么';COM&x2B的目的是什么;图书馆应用?

Windows 什么';COM&x2B的目的是什么;图书馆应用?,windows,com,interop,com-interop,com+,Windows,Com,Interop,Com Interop,Com+,创建COM+应用程序时,向导提供在库和服务器应用程序之间进行选择 服务器应用程序在一个单独的进程中激活,这可用于廉价地将64位使用者与32位in-proc COM组件进行互操作 在调用进程中激活的库应用程序有什么用途?为什么要在proc COM服务器中使用它们而不是普通的旧服务器?有几种: 性能—由于您不必经历消息自动化(编组和解编组),因此速度更快 隔离-如果许多不同的应用程序正在使用库,那么每个应用程序都有自己的副本。在处理MTA(多线程单元)和STA(单线程单元模型)之间的差异时,这一点非

创建COM+应用程序时,向导提供在库和服务器应用程序之间进行选择

服务器应用程序在一个单独的进程中激活,这可用于廉价地将64位使用者与32位in-proc COM组件进行互操作

在调用进程中激活的库应用程序有什么用途?为什么要在proc COM服务器中使用它们而不是普通的旧服务器?

有几种:

  • 性能—由于您不必经历消息自动化(编组和解编组),因此速度更快

  • 隔离-如果许多不同的应用程序正在使用库,那么每个应用程序都有自己的副本。在处理MTA(多线程单元)和STA(单线程单元模型)之间的差异时,这一点非常重要

  • IN-PROC服务器(实际上是进程外的,调用方的进程外的)由所有不同的调用方共享(这是一种使用廉价IPC/RPC的好方法)

    好的,我正在编辑更多的定义和更多的参考:

  • 上下文实际上是关于对象使用的所有状态
  • 因果关系实际上是一个线状概念,指示在上下文中使用对象。(“因果关系是一个分布式COM方法调用链,它跨越任意数量进程中任意数量的上下文”-来自ISBN:0-201-61594-0)
  • Tim Ewald的优秀著作“Transactional COM+”ISBN:0-201-61594-0第2章约30页讨论了这些概念

    因此,直接引用第2章的总结: “对象可以使用对象上下文与其上下文进行交互,也可以使用调用上下文与给定的因果关系进行交互。这两个对象提供了与COM+运行时服务交互的接口。这种编码方式,‘深入上下文’使COM+开发与经典COM开发有很大不同。”

    最后,第2章讨论了“为什么要使用库应用程序?”, (这与你的问题不同,为什么不只是简单的旧COM?) 他的论点主要表明使用COM对象的原因相同, 1.每个应用程序都有自己的实例。 2.加载到非DLLhost.exe进程中。 3.开销要小得多。 4.普通对象的简单部署

    因此,底线是,如果您不是分布式的,并且本质上不是事务性的,那么使用COM+而不是COM可能没有真正的优势。但是,如果您编写一个COM+应用程序并将其部署为库应用程序,它的行为将更像一个COM组件


    希望能有所帮助。

    主要目的是从中受益

    对于
    IObjectContext
    IObjectContextActivity
    将从纯进程内组件返回E_NOTINTERFACE,同时它将在COM+库应用程序(当然还有服务器应用程序)中成功工作

    安全上下文也可通过for
    ISecurityCallContext
    获得

    它与性能或隔离无关


    作为站点说明,检查COM+库应用程序可用内容的一种方法是运行dcomcnfg.exe导航到组件服务、计算机、我的计算机、COM+应用程序,创建一个新的库应用程序,并检查仍然启用的内容(与服务器应用程序相反)。

    我一点也不了解。当使用in-proc服务器时,它由每个客户机单独加载,并且不使用封送。让我知道你是否在寻找它(认为你真的在试图理解“COM”和“COM+库应用程序”之间的区别,而不是“COM+服务器应用程序”和“COM+库应用程序”之间的区别)