上一主题: UUID下一主题: Where 子句


列表

某些 Web 服务方法会返回由唯一整型句柄表示的列表。列表只是一个由相同类型对象组成的集合。列表在处理较大的对象集合(例如,系统中的所有联系人)时特别有用,因为您可以在列表范围内检索有关项目的信息。缺点是,您必须进行更多的方法调用以获得列表句柄、检索信息,最后释放该列表句柄。如果预期的列表行数少,则可以使用不包含列表句柄的方法,如 doSelect()。

以下内容描述了有关列表的详细信息:

列表是同质的

列表可能只包含单一类型的对象,例如,联系人列表、组织列表等等。

列表是静态的

例如,如果在获得所有联系人的列表对象后,又将另一个联系人添加至系统,则不会在列表中反映该更新。必须获得另一个列表句柄才能获取最新数据。

列表句柄

列表请求会返回表示相同类型对象列表的整型句柄。不向客户端发送其它信息。客户端可以查询列表中有关列表行的特定信息。客户端完成一个列表后,必须使用 freeListHandles() 释放句柄。CA SDM 服务器负责维护列表,因此会占用系统资源。因此,释放列表非常重要。与对象句柄不同,列表句柄在各个会话间并不持续。

整型索引

一些方法要求列表中存在整型索引。由于列表是零基的,因此第一个元素的索引等于 0。

如前所述,对于可能多次查询的大型数据集,使用列表句柄最有用。但是对于某些操作,列表是多余的。有多种方法可用,但是最值得注意的是 doSelect(),它可以返回所请求的有关数据集的信息,无需进行列表句柄。

决定使用列表句柄还是方法(如 doSelect())取决于能否提高性能以及是否方便。例如,假设您的应用程序正在处理系统中全部 15,000 个联系人。doSelect() 方法可以在一个调用中检索所有联系人数据,但是当它汇编和返回超大数据集时,应答将会延迟,并且对系统总性能产生负面影响。在这种情况下,doQuery() 方法则可以非常迅速地返回一个列表引用。可以从列表中查询数据的范围,以缩短服务器的响应时间。如果数据集超过 250 项,则最好使用列表引用。

有时使用列表句柄毫无意义。例如,某个投诉具有一个活动日志列表。根据安装情况,可以有数个到数十个日志。与请求列表引用、查询数据然后再释放列表相比,一次请求所有数据可能更快。

返回数据集(而不是返回列表引用)的方法示例包括:

如前所述,如果查询返回较多行数,可能会严重影响服务器的性能。为避免此情况发生,CA SDM 将返回的行数限制为 250。这会影响返回对象列表的所有 CA SDM Web 服务方法,包括:

即使您请求采用其中一种方法检索超过 250 行的内容,此限制也将适用。

要检索较多行数,您应该获得结果列表的句柄,然后使用 getListValues() 检索行块,每个块包含 250 行或更少行。此策略有助于避免服务器在为大量数据提供服务时运行变慢。