复制、基于主机和数据库服务的服务连接点

在使用服务连接点 (SCP) 发布服务时,请考虑客户端将如何定位服务的 SCP。 如果存在多种服务实例,请考虑客户端如何将具有所需功能的服务与具有不同功能的类似服务区分开来。 如果要发布复制服务,请考虑客户端将如何选择副本。 本主题讨论各类服务的这些问题。

可复制的服务

对于可复制的服务,可以有一个或多个服务实例(副本),客户端并不关心它们连接到哪个副本,因为每个副本都提供相同的服务。 Active Directory 域服务就是复制服务的示例:特定域的所有域控制器都具有相同的数据,会受复制延迟的影响并可提供相同的服务。

可复制的服务可在单个容器中为多个副本存储 SCP 和其他特定于服务的对象。 第一个副本的设置应用程序可以将容器创建为本地域的“系统”容器的子容器。 有关详细信息,请参阅在域系统容器中发布。 确保容器的安全描述符允许后续副本的安装程序在同一容器中创建其对象。 授予安装管理员指定可在容器中创建或修改对象的用户或组的权限。

可复制服务的一种策略是为每个副本创建一个 SCP。 当客户端查询服务的产品 GUID 或其他识别关键字时,它会查找所有副本的 SCP 对象,并随机或使用某种负载均衡算法选择其中之一。 例如,管理员可以为每个副本指定优先级和负载均衡数据,类似于 DNS SRV 记录的优先级和权重字段。 服务的设置应用程序可将此数据存储在每个副本的 SCP 的 serviceBindingInformation 属性中。 客户端从每个 SCP 获取数据,并以此来选择副本。

另一种策略是为所有副本创建一个 SCP,并将 SCP serviceDNSName 属性设置为 DNS SRV 记录的名称。 然后,每个副本的设置应用程序会以该名称注册一个 SRV 记录。 当客户端识别到服务的唯一 SCP 时,客户端会检索 SRV 记录的名称,并使用 DnsQuery 函数来检索副本的 SRV 记录数组。 每个 SRV 记录都包含主机计算机名称和其他数据,而客户端可利用这些数据来选择副本。

数据库服务

数据库服务的不同实例可能包含完全不同的数据,尽管它们都是同一种服务(通常称为服务类)。 要发布此类服务,SCP 的 keywords 属性可同时标识服务类别和特定数据库。 只知道服务类 GUID 的通用客户端可以查询该服务类发布的所有数据库,然后提供一个用户界面,以便让用户选择其中一个数据库。 对于专门为目标数据库设计的客户端,可以将数据库 GUID 硬编码到客户端代码中。

基于主机的服务

基于主机的服务是指与单个主机计算机密切相关的服务。 可以在许多计算机上安装服务类的实例,并且每个实例都提供用其主机计算机标识的服务。

基于主机的服务的每个实例都应在其主机的计算机对象下创建自己的 SCP。 在客户端使用产品 GUID 搜索基于主机的服务的 SCP 时,通常会在整个企业林中找到该服务类别的许多实例。 然后,客户端就可以使用 SCP 的 serviceDNSName 属性来查找所需主机计算机上服务实例的 SCP。