下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在 SharePoint Server 中编写有效代码SharePoint 2010 如果使用 SharePoint 对象模型编写自定义解决方案,应该注意与性能、可扩展性和可伸缩性相关的常见问题。本主题可以帮助您有效地对现有 SharePoint 应用程序进行故障排除并提高其性能,或者编写新 SharePoint 应用程序。在这两种情况下,都需要了解如何使 SharePoint 对象模型高效地工作,以及如何将常规编程技巧专门应用于 SharePoint 平台。使用 SPQuery 对象 设计合理的查询可以帮助您避免随着时间的推移而可能出现的性能问题,因为网站的列表和文件夹数目会不断增加。以下技
2、巧可以帮助您尽可能最高效地使用 SPQuery 对象。 使用界定的 SPQuery 对象。RowLimit 没有相应值的 SPQuery 性能不佳,并且无法用于大型列表。请为 RowLimit 指定一个 1 到 2000 之间的值,并根据需要分页显示列表。要获取演示如何执行此操作的代码示例,请参阅处理大型文件夹和列表。 限制结果集。 如果查询返回的项目多于在 Microsoft SharePoint Foundation 2010 中配置的查询阈值,则将阻止查询并且不显示结果。默认查询阈值为 5,000 项,但您可以将其设置为更小的值。对于 Microsoft SharePoint Serve
3、r 2010 查询,如果您需要所有项目,请使用 ContentIterator.MaxItemsPerQuery 并分页显示结果。 使用索引字段。 如果所查询的字段未编制索引,并且生成的扫描在列表中遇到的项目多于查询阈值,则将阻止查询。请将 SPQuery.RowLimit 设置为小于查询阈值的值。确保 ContentIterator.MaxItemsPerQuery 的值小于或等于该阈值,这是为 SharePoint Server 2010 推荐的值。 确保包含以下三个 OrderBy 子句之一,以便允许使用索引:ContentIterator.ItemEnumerationOrderByI
4、D、ContentIterator.ItemEnumerationOrderByPath 或 ContentIterator.ItemEnumerationOrderByNVPField。如果没有 OrderBy 子句,则查询可能会被阻止。SharePoint Server 2010 添加了默认 OrderBy 子句,该子句按内容类型进行排序,以便确保先返回文件夹,然后再返回列表项。除非使用上面列出的三个 OrderBy 子句之一覆盖此行为,否则查询将不能充分发挥使用索引字段的优势,并且当查询的限制不够严格,无法保证返回的项目少于最大项目数时,查询将会被阻止。以下代码示例演示如何使用 Cont
5、entIterator.ItemEnumerationOrderByNVPField 子句。该示例假定您要查询索引字段。VB C# C+ F# JScript 复制 SPQuery query = new SPQuery();query.Query = FieldValue + ContentIterator.ItemEnumerationOrderByNVPField;ContentIterator ci = new ContentIterator();ci.ProcessItemsInList(query, delegate(SPListItem item) / Work on each
6、item. , delegate(SPListItem item, Exception e) / Handle an exception that was thrown while iterating. / Return true so that ContentIterator rethrows the exception. return true; );使用 PortalSiteMapProvider 使用 PortalSiteMapProvider(仅限 Microsoft Office SharePoint Server 2007 和 Microsoft SharePoint Serve
7、r 2010)。Steve Peschka 的白皮书在 Office SharePoint Server 2007 中处理大型列表(该链接可能指向英文页面)介绍了使用 PortalSiteMapProvider 类检索列表数据的有效方法。PortalSiteMapProvider 提供了用于检索列表数据的自动缓存基础结构。PortalSiteMapProvider 的 GetCachedListItemsByQuery 方法采用 SPQuery 对象作为参数,然后检查其缓存以确定项目是否已经存在。如果已经存在,则该方法返回缓存的结果。如果不存在,则该方法查询列表并将结果存储在缓存中。当检索的列
8、表数据在一段时间内不会频繁更改时,该方法尤其有效。如果数据集频繁更改,则除了从数据库读取数据所产生的开销外,该类还会因为不断写入缓存而产生性能开销。请注意,PortalSiteMapProvider 类使用网站集对象缓存来存储数据。此缓存默认大小为 100 MB。您可以在每个网站集的对象缓存设置页上增加网站集的此缓存大小。但是,由于此内存来自供应用程序池使用的共享内存,因此可能会影响其他应用程序的性能。另一个重要限制是您不能在基于 Windows 窗体的应用程序中使用 PortalSiteMapProvider 类。以下代码示例显示如何使用此方法。 良好的编码实践 使用 PortalSiteM
9、apProvider VB C# C+ F# JScript 复制 / Get the current SPWeb object. SPWeb curWeb = SPControl.GetContextWeb(HttpContext.Current); / Create the query. SPQuery curQry = new SPQuery(); curQry.Query = Hotel; / Create an instance of PortalSiteMapProvider. PortalSiteMapProvider ps = PortalSiteMapProvider.WebSiteMapProvider; PortalWebSiteMapNode pNode = ps.FindSiteMapNode(curWeb.ServerRelativeUrl) as PortalWebSiteMapNode; / Retrieve the items. SiteMapNodeCollection pItems = ps.GetCachedListItemsByQuery(pNode, myList
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室内游乐园设计要点
- 安全纪律教育知识
- 教育传播理论发展历程
- 乡村儿童教育发展路径探索
- 劳动专题教育体系构建
- 趣味课堂教学设计指南
- 工业设计史中的包豪斯
- 房屋借住协议书
- 妻子股权继承协议书
- 租房无合同终止协议
- 2026年甘肃兰州市初二学业水平地理生物会考考试试题及答案
- 2026年高考考前预测卷-化学02(上海卷)(考试版及全解全析)
- 2026年及未来5年市场数据中国实体书店行业市场发展现状及投资前景展望报告
- DB32∕T 5314-2025 高速公路电动汽车清障救援作业规范
- 肝移植管理制度
- 2025-2030猪肉加工产业链行业市场现状供需分析及投资评估规划分析研究报告
- 车间员工计件薪酬方案范本
- 2026年盐城市机关事业单位工勤人员技师选拔考试试卷及答案
- 高炉煤气干法精脱硫技术规范
- 天平使用步骤课件
- 高原铁路隧道供氧系统管道施工
评论
0/150
提交评论