在我的一个应用程序中,我正在查询active directory,以获得给定用户下所有用户的列表(使用“直接报告”)。因此,基本上,给定人员的姓名,在AD中进行查找,然后读取直接下属。但是,对于每个直接上级,工具都需要检查直接上级的直接上级。或者,更抽象的:该工具将使用一个人作为树的根,然后沿着整个树遍历,以获得所有叶子的名称(可以是几百个)。
现在,我关心的显然是性能,因为这需要做很多次。我的想法是手动缓存(基本上只是将所有名称放在一个长字符串中,并将其存储在某个位置,然后每天更新一次)。
但我想知道是否有更好的方法来先获取信息,然后缓存它,可能是使用System.DirectoryServices命名空间中的内容?
发布于 2008-09-02 09:26:14
为了控制你想要缓存的属性,你可以调用'RefreshCache()‘来传递你想挂起的属性:
System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry();
// Push the property values from AD back to cache.
entry.RefreshCache(new string[] {"cn", "www" });发布于 2008-08-28 20:23:47
Active Directory在存储信息方面非常有效,检索应该不会对性能造成太大影响。如果你真的想存储这些名字,你可能会想把它们存储在某种树结构中,这样你就可以看到所有人的关系。根据人数的不同,您可能会提取每天所需的所有信息,然后根据缓存副本查询所有请求。
发布于 2008-08-31 09:46:57
广告为你做了这种缓存,所以不要担心它,除非性能成为问题。我的软件整天都在企业内部网上运行,每小时有成千上万的点击量,而且从来没有在这方面调整过性能。
https://stackoverflow.com/questions/33250
复制相似问题