安装 COM+ 应用程序代理
为了能够从另外的(客户)计算机远程访问 COM+ 服务器应用程序,客户计算机必须装有服务器应用程序属性的子集,包括用于 DCOM 远程接口的代理/存根 DLL 及类型库。该子集的术语是“应用程序代理”。
您可利用组件服务管理工具,轻而易举地导出 COM+ 服务器应用程序,使其成为应用程序代理。COM+ 生成的应用程序代理是标准的 Windows Installer 安装软件包。安装后,应用程序代理会出现在客户计算机的“添加/删除程序”控制面板中。
在生成应用程序代理时,COM+ 会自动提供以下信息。这些信息是应用程序代理远程访问 COM+ 服务器应用程序时必需的。
类标识信息(CLSID 和 ProgID) - 一个应用程序代理最多可支持两个 ProgID。
应用程序标识及类与应用程序的关系 (AppID)。
每个应用程序的位置信息(远程服务器名称)。
应用程序的所有接口的调度信息(例如,类别库和代理/存根)。
MSMQ 队列名称与标识(如果应用程序中启用了排队组件服务)。
类、接口和方法属性,不包括角色信息。
应用程序属性。
与 COM+ 服务器应用程序不同,应用程序代理可安装在任何支持 DCOM 和 Windows Installer 的操作系统中。其它 Windows 平台上的客户机也可访问在 Windows 2000 服务器上运行的 COM+ 应用程序。在不是运行 Windows 2000(因而也就没有 COM+)的计算机上,将只安装 DCOM 远程访问所需的信息子集。这些信息将安装在 Windows 注册表中。在不是运行 Windows 2000 的计算机上安装应用程序代理(.msi 文件)时,有必要使 Windows Installer 在这些机器上运行。Windows Installer 作为 Platform SDK 的一部分,以可重新分布的格式出现。
设置 COM+ 安全
安全角色可模拟并实施 COM+ 应用程序的访问控制规则。角色是指为了确定对应用程序资源的访问权限,而为应用程序定义的用户类别。开发人员将角色(符号式用户类别)分配给应用程序,也就潜在地将其分配给了应用程序内的精细结构 - 包括组件、接口、方法或专用应用程序资源。然后,这些角色分配即用于确定哪些用户类别拥有访问应用程序内的哪些元素的权限。
如果应用程序使用基于角色的安全措施,那么每次调用应用程序时,均会检查调用者的角色成员身份。如果调用者不属于对该项目拥有访问权限的角色,调用将会失败。调用者对应用程序或其资源的访问权限,是严格按照调用者所属角色中定义的限制条件授予他们的。
系统管理员的工作是将 Windows 2000 用户帐户和组填充到为应用程序定义的角色中。在执行应用程序的安全规则过程中,这是个至关重要的阶段。给用户分配的角色必须正确代表用户可能会通过应用程序访问的数据和资源与用户之间的关系。
将用户填入角色的最好方法是使用 Windows 2000 组。首先,将用户帐户分配给适当的组,然后确保将该组分配给适当的角色。用 Windows 2000 组填充角色,使您更易于管理大量用户。
在企业计算环境中,常常很难有效跟踪每个用户在组织内的职位,也很难确定如何将用户的职位映射到每个应用程序所特有的基于角色的安全规则。随着用户、管理员和应用程序数量的增加,这项任务也变得越来越复杂。最易于扩展的解决方案是将用户组分配给 COM+ 应用程序角色。
只有在您理解应用程序安全规则后,才可以将组分配给角色。理想情况下,角色的名称应能表明哪些人应属于该角色,例如“Managers”和“Tellers”。此外,每个角色均包含一些描述,您可使用组件服务管理工具访问这些描述。描述中会介绍哪种类型的用户应属于该角色。但是,如果您无法确定哪些用户组属于哪个角色,请参考应用程序的附带文档,或请开发人员澄清。
您可以使用组件服务管理工具,在应用程序安装期间初步分配角色,也可以在应用程序使用期间,对角色成员身份进行任何必要的更改。
对象池
对象池是一种由 COM+ 提供的自动服务,您可用它配置组件,使组件的实例在对象池中保持活动状态,准备好供任何请求该组件的客户机使用。可以对给定组件所维护的对象池进行管理性的配置和监视,并为其指定一些特性,如池的大小和创建请求超时值。一旦应用程序开始运行,COM+ 将管理对象池,根据您指定的标准,处理对象激活和重新使用的细节。
以这种方式重新使用对象,可在性能和扩展性方面显著获益,尤其是将这些对象编写成能够充分利用重新使用时。通过对象池,您可以对池进行管理性配置,使之能够最大限度地利用可用硬件资源。池的配置会随着可用硬件资源的改变而改变。您还可以通过管理性的池管理,控制资源使用。
当您配置组件使之进入对象池时,COM+ 将会维护该组件在对象池中的实例,准备好当任何客户端请求该组件时,立即激活它。所有对象创建请求都会通过池管理器处理。
当应用程序启动时,只要成功创建了对象,对象池就会一直被填充,直到达到您管理性地指定的最低级别。客户机对组件的请求进入后,会以先入先处理为基础而满足。如果对象池中没有可用对象,而且对象池尚未达到其指定的最高级别,就会为该客户机创建并激活一个新对象。
当对象池达到其最高级别时,客户机请求就开始排队。每个请求均会接收来自对象池的第一个可用对象。对象的数量(包括已激活的和未激活的)永远都不会超过对象池的最大值。在一段管理性指定的时间过后,对象创建请求将超时,这样您就能控制客户机等候对象创建的时间。只要可能,在客户机释放一个对象后,COM+ 就会试着重新使用它,直到对象池达到其最高级别。
您可以用对象池的最大容量来精确控制资源使用。例如,如果您有权使用一定数量的数据库连接,您就可以随时控制已打开的连接的数量。
如果您能够考虑到客户使用模式、对象使用特征以及物理资源(如内存与连接),就有可能在调整性能时找到某种最佳平衡。池对象的产出量在达到某一点后,会逐渐衰减。您可确定自己需要哪一级别的性能,并将其与要达到此性能所需的资源相平衡。有了对象池,您就能控制资源的使用。
使 COM+ 的管理更容易
我们希望本文能帮助您较好地了解新组件服务管理工具的概况。我们还希望您能由此了解到,该工具的设计如何使您更易于管理跨远程计算机的 COM+ 应用程序。我们期待您能为我们提出一些问题、意见和想法,以便我们用于以后的文章。
如果有的读者需要有关 COM+ 的更详细信息,我们可向您提供很多资源。特向您推荐以下书目。虽然这些书目主要面向开发人员,但也能够为系统管理员提供有价值的信息。
查看本文来源