您可以从开发人员的角度检查 SharePoint 开发,该开发人员构建了在大型服务器场上运行的高度可扩展的松散耦合 Web 应用程序。这些应用程序每分钟必须处理数百个或数千个页面视图。
SharePoint 的核心基于 ASP.NET,并在 IIS 上运行,它可具有多个处理负载平衡的前端 Web 服务器。SQL Server 提供了 SharePoint 网站中存储的数据和文档的完整性、可伸缩性、可靠性和安全性。以下是可伸缩性影响 SharePoint 开发的一些重要方法。
API 设计。可伸缩性将驱动 SharePoint 的编程接口的某些特征。当您了解编程接口的设计可提高可伸缩性时,就能更轻松地理解这些接口了。例如,托管客户端对象模型,抽象地说,该模型与 SharePoint Foundation 服务器端对象模型非常类似,但实际上它更为复杂,因为它使您能够在从服务器中检索数据或内容时明确进行控制。
解决方案设计。可伸缩性将影响您设计基于 SharePoint 构建的解决方案的方式。您必须避免在服务器上导致不必要的计算或查询活动的设计。您必须编写资源消耗量不会多于应有资源消耗量的应用程序。例如,这意味着合理使用协作应用程序标记语言核心架构 和 LINQ to SharePoint 来查询列表项。
最佳实践。可伸缩性隐藏在作为 SharePoint 开发的最佳实践 的某些编程方法和问题后面。例如,SharePoint 对象模型中的某些对象具有关联的非托管数据。因此,您必须了解并遵循对象处理规则。类似地,在使用 SharePoint 中的大型列表时,可考虑几个最佳实践。如果您不遵循这些规则,则可能会对服务器场产生负面影响。有关详细信息,请参阅 SharePoint Foundation 的最佳做法和 SharePoint Server 的最佳做法。另请参见Best Practices: Using Disposable Windows SharePoint Services Objects (该链接可能指向英文页面)和释放对象。您可使用自动化工具改进您的代码评审。有关详细信息,请参阅使用 SPDisposeCheck 自动执行 SharePoint Dispose() 代码评审(该链接可能指向英文页面)。
有一些与构建高度可扩展的 Web 应用程序的开发人员所面临的问题相同或类似的问题。我听过这样一个情景,一个 SharePoint 开发人员编写代码以便按设定时间间隔循环访问其网站集中的所有文档并收集要在树控件中显示的信息。这在其测试环境中能够正常工作。但是,代码设计会产生一个与文档和列表项的实际数量相关的性能问题。
可伸缩性通过两种不同的方式影响解决方案设计:
您必须构建可分发的应用程序,这些应用程序在部署到多个前端 Web 服务器上时可正常工作。例如,您可为在本地 XML 文件中存储数据的 Microsoft Business Connectivity Services (BCS) 构建小型 Create/Retrieve/Update/Delete Web 服务(请参阅 Business Connectivity Services)。但是,它在部署到负载平衡服务器场上时将无法正常工作。
您必须构建可正常执行的应用程序。例如,除非您确定某个列表将包含几个列表项,否则不要使用对象模型循环访问它;而是使用 LINQ to SharePoint,并为 SharePoint 提供优化机会。
有关 SharePoint 开发与 ASP.NET 开发的相似之处和不同之处的详细信息,请参阅 针对 ASP.NET 开发人员的滑动路径。另请参见 ASP.NET 开发人员的 SharePoint 2010 开发(该链接可能指向英文页面)。
SharePoint Foundation 的最佳做法包含可帮助您避免对性能造成负面影响的缺陷的指南,其中包括有关对象处理、事件接收器、大型文件夹和列表以及代码性能优化的指导。 将 SharePoint 应用程序与数据库应用程序进行比较