沙盒解决方案概述 (SharePoint Foundation 2010)

 

适用于: SharePoint Foundation 2010

上一次修改主题: 2016-11-30

可以将 Microsoft SharePoint Foundation 2010 解决方案直接部署到 SharePoint Foundation 服务器场上,也可以将此解决方案部署到沙盒 中。沙盒是一个受到限制的执行环境,只允许程序访问某些资源,并且阻止在沙盒中发生的问题影响到服务器环境的其余组成部分。

部署到沙盒中的解决方案称为沙盒解决方案,它们无法使用某些计算机和网络资源,并且无法访问它们部署到的网站集以外的内容。有关沙盒解决方案有哪些限制的详细信息,请参阅沙盒解决方案不能包含的内容

由于沙盒解决方案无法影响整个服务器场,因此,它们无需由服务器场管理员来部署。沙盒解决方案可以由网站集管理员来部署;在某些情况下,也可以由在网站集的根网站具有完全控制权限的用户来部署。只有服务器场管理员才能使沙盒解决方案直接在服务器场上运行(在其沙盒之外)。

在以下两种情况下使用沙盒解决方案特别合适:

  • 组织要在 SharePoint Foundation 生产网站上为员工运行代码,而且该代码尚未经过严格的评审和测试。

  • 主机托管服务提供商想允许托管的 SharePoint Foundation 网站的所有者上载和运行自定义代码。

本文介绍与沙盒解决方案有关的概念,说明沙盒解决方案与在服务器场上部署的解决方案之间有何区别,以及概述如何部署和运行沙盒解决方案。本文不包含配置沙盒或部署沙盒解决方案的详细过程。

本文内容:

部署和运行沙盒解决方案

SharePoint Foundation 应用程序的任何页都可以包含在沙盒中运行的组件(直接在服务器场上运行的组件除外)。部署到服务器场的组件在 Internet Information Services (IIS) 工作进程中运行。部署到沙盒的组件在沙盒进程中运行。

以下列表列出可以在沙盒中部署的多个组件:

  • Web 部件

  • 事件接收器

  • 功能接收器

  • 自定义的 Microsoft SharePoint Designer 工作流活动

  • Microsoft InfoPath 业务逻辑

以下步骤说明如何部署沙盒解决方案:

  1. 服务器场管理员执行以下任务。只需执行这些任务一次。

    • 服务器场管理员启用沙盒,并在将运行沙盒解决方案的每台服务器上启动沙盒服务。

    • 服务器场管理员确定使用哪种负载平衡方案。此负载平衡方案应用于服务器场上所有网站集中的所有沙盒解决方案。

    • 服务器场管理员设置网站集中所有沙盒解决方案的组合不能超过的资源配额。

  2. 网站集管理员或在网站集的根网站具有完全控制权限的用户向网站集的解决方案库上载解决方案。

  3. 网站集管理员激活此解决方案。如果此解决方案不包含程序集,则在网站集的根网站具有完全控制权限的用户也可以激活此解决方案。验证工具将运行以验证此解决方案。如果此解决方案验证失败,则表示它未激活。

在处理有关运行沙盒解决方案的请求时,将发生以下活动:

  1. SharePoint Foundation 根据负载平衡方案来确定在哪台服务器上运行此解决方案。如果是本地负载平衡方案,则此解决方案将在为该请求提供服务的同一台服务器上运行。如果是远程负载平衡方案,则会根据解决方案相关性选择运行此解决方案的服务器。在这两种情况下,服务器都必须运行沙盒服务。

  2. SharePoint Foundation 选择沙盒工作进程以在其中运行此解决方案,将“填充码”动态链接库 (dll) 加载到此进程中,然后将解决方案程序集加载到此进程中。

  3. 在此解决方案运行时,其代码将先通过填充码,然后再由 SharePoint Foundation 执行。如果此解决方案的代码尝试使用沙盒解决方案被禁止使用的 API,则填充码将引发异常,而不是允许代码通过并运行。

  4. SharePoint Foundation 监控沙盒解决方案使用的资源。如果沙盒解决方案超过硬性限制(例如,它使用的 CPU 时间量超过预定义的值),则 SharePoint Foundation 会终止沙盒工作进程。如果网站集中所有沙盒解决方案的组合超过网站集的资源配额,则 SharePoint Foundation 会在当天的其余时间里关闭网站集中的所有沙盒解决方案。

  5. 网站集管理员可以监控沙盒解决方案使用的资源,并且可以停用网站集中的解决方案。

如有必要,服务器场管理员可以阻止解决方案在服务器场上运行。服务器场管理员还可以取消在沙盒中运行解决方案的要求。如果取消在沙盒中运行解决方案的要求,则当解决方案在服务器场中的任何网站集内运行时,它将不再在沙盒中运行。

隔离沙盒解决方案

可以按照不同的级别隔离沙盒解决方案。隔离的级别越高,就越能保护 SharePoint Foundation 网站主要部分免受可能消耗过多资源的代码影响。在第一个级别,沙盒代码在权限受限制的隔离进程中运行。代码访问安全 (CAS) 限制代码可以执行的操作。可以通过使用远程负载平衡和通过仅在特定的服务器上运行沙盒服务来提高隔离级别。在生产环境中,我们建议您使用远程负载平衡,并且专门使用一台独立的服务器来运行沙盒解决方案。

沙盒解决方案不能包含的内容

SharePoint Foundation 解决方案必须包含名为 manifest.xml 的配置文件,并且还可以包含其他配置文件和程序集。如果解决方案将在沙盒中运行,则程序集和配置文件可以包含的内容将受到限制。

以下列表列出将在沙盒中运行的程序集不能做的最常见事情。

  • 连接到不在本地服务器上的资源。

  • 访问数据库。

  • 更改线程模型。

  • 调用非托管代码。

  • 写入到磁盘。

  • 访问在另一个网站集中的资源。

manifest.xml 文件引用功能文件,功能文件引用元素文件,而元素文件包含 feature 元素。沙盒解决方案中允许的 feature 元素只有:

  • ContentType

  • Field

  • CustomAction

  • Module

  • ListInstance

  • ListTemplate

  • Receivers

  • WebTemplate

  • WorkflowAssociation

  • PropertyBag

  • WorkflowActions

沙盒解决方案与服务器场解决方案的比较

下表从多个方面对在服务器场中运行的解决方案和在沙盒中运行的解决方案进行比较。

方面 服务器场 沙盒

部署过程

添加解决方案,然后将其部署到服务器场。

将解决方案上载到网站集,然后在网站集中激活它。

谁能部署

服务器场管理员。

如果解决方案包含程序集,则只有网站集管理员可以部署它。如果解决方案不包含程序集,则在网站集的根网站具有完全控制权限的用户可以部署它。

数据访问

无限制。

解决方案只能访问它部署到的网站集中的内容。

运行解决方案的进程

无限制的 IIS 工作进程,或解决方案部署到的任何进程。

权限受限制的单独工作进程。

代码访问安全

解决方案开发人员可以在将解决方案打包时设置代码访问安全策略。

受限制。有关详细信息,请参阅部署沙盒解决方案(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=177369&clcid=0x804)(该链接可能指向英文页面)。

监控

不受监控。

受监控,并且受服务器场管理员设置的配额的限制。

负载平衡

根据解决方案种类而变化。

可独立于非沙盒的解决方案进行配置。

解决方案功能

无限制。

受限制,如沙盒解决方案不能包含的内容中所述。

使用沙盒解决方案的优点

使用沙盒解决方案的主要优点如下:

  • 可以将解决方案添加到 SharePoint Foundation 生产环境中,而且不会有影响沙盒之外的进程的风险。

  • 网站集管理员可以代服务器场管理员部署沙盒解决方案,从而减轻其工作负担。

  • 由于沙盒在可以通过配额加以限制的独立进程中运行,因此提高了可伸缩性和灵活性,而且可以监控沙盒对服务器场的影响。

  • 如果从沙盒中移动解决方案以直接在服务器场上运行,则无需修改或重新编译解决方案。

See Also

Concepts

沙盒解决方案规划 (SharePoint Foundation 2010)

Other Resources

沙盒解决方案管理 (SharePoint Foundation 2010)
沙盒解决方案体系结构 (https://go.microsoft.com/fwlink/?linkid=177368&clcid=0x804)(该链接可能指向英文页面)
部署沙盒解决方案 (https://go.microsoft.com/fwlink/?linkid=177369&clcid=0x804)(该链接可能指向英文页面)