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

 

适用于: SharePoint Foundation 2010, SharePoint Server 2010

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

Microsoft SharePoint Server 2010 解决方案 是可部署且可重用的包,它可以包含特性、网站定义以及其他功能。可以单独启用或禁用解决方案。可以将解决方案直接部署到 SharePoint Server 服务器场上,或将其部署到一个沙盒 内。沙盒是一个受限制的执行环境,可使程序仅访问某些资源,并使在沙盒中发生的问题不会影响服务器环境的其余部分。部署到沙盒中的解决方案称为沙盒解决方案,它们不能使用某些计算机和网络资源,也不能访问它们部署到的网站集以外的内容。有关这些解决方案的详细信息,请参阅解决方案概述 (http://go.microsoft.com/fwlink/?linkid=156638&clcid=0x804)。

因为沙盒解决方案不会影响整个服务器场,因此不必由服务器场管理员进行部署。沙盒解决方案可以由网站集管理员部署,或者,在某些情况下,可由具有对网站集根目录的完全控制权限级别的用户部署。但是,只有服务器场管理员才能配置沙盒解决方案相关设置(如负载平衡、层、配额和资源点),也只有服务器场管理员才能提升沙盒解决方案,使其直接在沙盒环境之外的服务器场中运行。

本文介绍与沙盒解决方案相关的概念、介绍沙盒解决方案的用途和好处、说明沙盒解决方案与在服务器场中部署的解决方案的差异、总结部署沙盒解决方案的方式、介绍沙盒解决方案服务、说明资源点和配额,并介绍与管理沙盒解决方案有关的任务。本文未包含有关如何配置沙盒解决方案或部署沙盒解决方案的详细过程。有关如何执行与沙盒解决方案相关的特定任务的信息,请参阅沙盒解决方案管理 (SharePoint Server 2010)安装、卸载和升级沙盒解决方案 (http://go.microsoft.com/fwlink/?linkid=220252&clcid=0x804)。

本文内容:

  • 沙盒解决方案的用途和好处

  • 了解沙盒解决方案

  • 部署沙盒解决方案

  • 了解沙盒解决方案服务

  • 了解配额和资源点

  • 管理沙盒解决方案

沙盒解决方案的用途和好处

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

  • 组织希望在 SharePoint Server 生产网站上运行员工代码,并且此代码没有经过严格的评审和测试。

  • 宿主希望让所承载的 SharePoint Server 网站的所有者上载和运行自定义代码。

使用沙盒解决方案的主要好处如下:

  • 可以将沙盒解决方案添加到 SharePoint Server 生产环境中,而不存在影响沙盒外的进程的风险。

  • 网站集管理员可以部署沙盒解决方案。这将使服务器场管理员从此项任务中解脱出来。

  • 由于沙盒在可受配额限制的单独进程中运行,并且可以监控其对服务器场的影响,因此增加了可伸缩性和灵活性。

  • 可以将解决方案从沙盒中移出并直接在场中运行,而不必修改或重新编译解决方案。

了解沙盒解决方案

沙盒解决方案将打包为可包含多种功能、网站定义、Web 部件和程序集的 .wsp 文件。有两种解决方案:服务器场解决方案和沙盒解决方案。服务器场解决方案由服务器场管理员在前端 Web 服务器上部署,它具有对服务器对象模式的完全访问权限,且没有任何使用限制。相比之下,沙盒解决方案可由网站集管理员或具有对网站集根目录的完全控制权限级别的用户部署到网站集的解决方案库中。沙盒解决方案具有对服务器对象模型的有限访问权限,并在提供了隔离和沙盒解决方案代码监视的安全受限上下文中运行。服务器场管理员可以启用或禁用沙盒解决方案,并设置使用限制以保护服务器场中的服务器免受恶意代码攻击。有关解决方案的详细信息,请参阅构建基块:解决方案 (http://go.microsoft.com/fwlink/?linkid=220253&clcid=0x804)。

沙盒解决方案无法实现的内容

SharePoint Server 解决方案必须包含名为 manifest.xml 的配置文件,也可能包含其他配置文件和程序集。如果解决方案要在沙盒中运行,则程序集和配置文件可实现的内容会受到限制。

以下列表标识了将在沙盒中运行的程序集无法完成的最常见任务:

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

  • 访问数据库。

  • 更改线程模型。

  • 调用非托管代码。

  • 写入到磁盘。

  • 访问不同网站集中的资源。

有关沙盒解决方案可实现和不可实现的内容的详细信息,请参阅可以在沙盒解决方案中实现哪些内容 (http://go.microsoft.com/fwlink/?linkid=220254&clcid=0x804) 和沙盒解决方案的限制 (http://go.microsoft.com/fwlink/?linkid=220255&clcid=0x804)。

了解沙盒解决方案的负载平衡

SharePoint Server 提供了两种可用于确定要运行沙盒解决方案的服务器的负载平衡方案。服务器场管理员可选择以下负载平衡方案中的一种来应用于服务器场中的沙盒解决方案:

  • 本地负载平衡   沙盒解决方案在收到请求的同一台服务器上运行。

  • 远程负载平衡   基于解决方案相关性选择运行沙盒解决方案的服务器,并且沙盒解决方案在已加载并运行它的服务器上运行。这样可节省处理解决方案请求的时间。

不管选择哪种负载平衡方案,沙盒解决方案服务都必须在要运行沙盒解决方案的所有服务器上运行。

备注

沙盒解决方案服务具有不同的名称,具体取决于您访问该服务的位置。在 SharePoint 管理中心网站上,该服务称为“Microsoft SharePoint Foundation 沙盒代码服务”。在服务器上的“服务”控制台中,该服务称为“SharePoint 用户代码主机服务”。为避免混淆,本文将该服务称为“沙盒解决方案服务”。

通过使用远程负载平衡并且仅在特定服务器上运行沙盒解决方案服务,可增加沙盒解决方案的隔离。在生产环境中,推荐您使用远程负载平衡,并专门使用一个单独的服务器来运行沙盒解决方案。有关如何确定要使用的负载平衡方案的信息,请参阅规划沙盒解决方案 (SharePoint Server 2010) 中的规划沙盒解决方案代码的负载平衡

沙盒解决方案与场解决方案的比较

下表对在场中运行的解决方案和在沙盒中运行的解决方案进行了各方面的比较。

方面 沙盒

部署过程

添加解决方案,然后将它部署到场中。

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

可以部署的人

服务器场管理员。

如果解决方案中包含一个程序集,则只有网站集管理员可以部署它。如果解决方案不包含程序集,则拥有对网站集根目录的完全控制权限级别的用户可以部署它。

数据访问

不受限制。

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

运行解决方案的进程

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

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

代码访问安全性

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

受限制。

监控

不受监控。

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

负载平衡

不定,具体取决于解决方案的种类。

可从非沙盒解决方案单独配置。

解决方案功能

不受限制。

受限制,如本文前面的沙盒解决方案无法实现的内容所述。

尽管沙盒解决方案在其可使用和不可使用的代码以及可访问和不可访问的数据方面受到限制,但您可以创建一种特殊操作,该操作在一个完全信任进程中运行,并且可从沙盒解决方案调用。这称为完全信任代理。有关完全信任代理的详细信息,请参阅与完全信任代理结合使用的沙盒解决方案(该链接可能指向英文页面) (http://go.microsoft.com/fwlink/?linkid=220256&clcid=0x804)(该链接可能指向英文页面) 和第 4 章:沙盒解决方案(该链接可能指向英文页面) (http://go.microsoft.com/fwlink/?linkid=219528&clcid=0x804)(该链接可能指向英文页面)。

部署沙盒解决方案

SharePoint Server 网站的任何页面除了包含直接在场中运行的组件之外,还可包含某些在沙盒中运行的组件。部署到场中的组件将在 Internet Information Services (IIS) 工作进程中运行。部署到沙盒中的组件将在沙盒进程中运行。

下面的列表标识了可能会在沙盒中部署的组件:

  • Web 部件

  • 事件接收器

  • 功能接收器

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

  • Microsoft InfoPath 业务逻辑

以下步骤介绍准备和部署沙盒解决方案需要完成的任务:

  1. 服务器场管理员只执行一次以下任务:

  2. 网站集管理员或拥有对网站集根目录的完全控制权限级别的用户将一个解决方案上载到网站集的解决方案库。有关如何将解决方案上载到解决方案库的信息,请参阅安装、卸载和升级沙盒解决方案 (http://go.microsoft.com/fwlink/?linkid=220252&clcid=0x804)。

  3. 网站集管理员激活解决方案。如果解决方案不包含程序集,则拥有对网站集根目录的完全控制权限级别的用户也可以激活解决方案。将针对解决方案运行验证工具。如果解决方案验证失败,则不会将其激活。有关如何验证和激活沙盒解决方案的信息,请参阅安装、卸载和升级沙盒解决方案 (http://go.microsoft.com/fwlink/?linkid=220252&clcid=0x804)。

网站集管理员可以监控沙盒解决方案使用的资源,也可以停用网站集中的沙盒解决方案。如果某个沙盒解决方案在部署后开始使用过多资源或导致沙盒环境中出现问题,则服务器场管理员可以阻止该沙盒解决方案在服务器场上运行。或者,服务器场管理员也可以通过将解决方案作为服务器场解决方案重新安装,取消在沙盒中运行沙盒解决方案的要求。如果取消在沙盒中运行的要求,则当解决方案下次在服务器场中的任何网站集中运行时,它将不再在沙盒环境中运行。有关如何阻止沙盒解决方案的信息,请参阅阻止或取消阻止沙盒解决方案 (SharePoint Server 2010)。有关如何安装服务器场解决方案的信息,请参阅部署解决方案包 (SharePoint Server 2010)

了解沙盒解决方案服务

沙盒解决方案服务管理整个服务器场中沙盒解决方案的执行。沙盒解决方案服务中运行了以下两个进程:工作进程和代理进程。每个沙盒解决方案在工作进程中的应用程序域内运行。工作进程通过限制每个解决方案访问的资源和停止执行时间过长的进程来管理沙盒解决方案。每个工作进程与处理对 SharePoint 对象模型的调用的代理进程配对。有关沙盒解决方案服务的工作方式的详细说明,请参阅沙盒解决方案(该链接可能指向英文页面) (http://go.microsoft.com/fwlink/?linkid=220257&clcid=0x804)(该链接可能指向英文页面) 中的“沙盒执行模式的工作方式”。

了解层

根据沙盒解决方案所使用的每个请求的资源平均数,可将这些解决方案组织到沙盒解决方案服务的 中。如下图所示,沙盒解决方案服务中的每层包含一个或多个用来运行沙盒解决方案的工作进程。每个沙盒解决方案将在自己的应用程序域中运行,在调用解决方案时,将重新使用这些应用程序域。

沙盒解决方案服务中的层

默认情况下,所有沙盒解决方案在沙盒解决方案服务的一个层中运行,该层包含单个工作进程。默认情况下,该工作进程最多可运行 10 个应用程序域。服务器场管理员可在沙盒解决方案服务内配置其他层和工作进程来隔离沙盒解决方案,从而获得更好的性能、安全性和可靠性。如果特定工作进程中的某个沙盒解决方案使用了过多资源,则该解决方案将导致该工作进程内的所有沙盒解决方案停止。由于沙盒解决方案的资源使用率受到监控,所以系统会根据其前一天的资源使用率自动将这些沙盒解决方案分离到其他层。因此,创建额外的工作进程和层可帮助隔离沙盒解决方案,并通过强制运行状况较差的解决方案在其他层中运行,将运行状况良好的解决方案与运行状况较差的解决方案隔开。

服务器场管理员可为每层设置以下属性:

  • ResourceMaxValue   此属性是一个数字,用于确定将在层中运行的沙盒解决方案。默认值为 0,必须将它设置为一个较大的值,否则将从不会使用该层。

  • MaximumWorkerProcesses   此属性表示可在层中运行的最大工作进程数。默认值为 1。将此属性设置为大于 1 将导致在处理请求的服务器上额外创建一个工作进程。

  • MaximumAppDomainsPerProcess   此属性表示可在层中的工作进程中运行的最大应用程序域数。默认值为 10。

  • MaximumConnectionsPerProcess   此属性表示层中从沙盒解决方案服务到工作进程允许的最大连接数。默认值为 1。

  • PriorityPerProcess   此属性表示操作系统已分配给层中的工作进程的优先级。

有关层的详细信息,请参阅使用执行层来保护运行状况良好的沙盒解决方案(该链接可能指向英文页面) (http://go.microsoft.com/fwlink/?linkid=220258&clcid=0x804)(该链接可能指向英文页面) 和沙盒层(该链接可能指向英文页面) (http://go.microsoft.com/fwlink/?linkid=217145&clcid=0x804)(该链接可能指向英文页面)。有关如何配置层的信息,请参阅配置沙盒解决方案服务层 (SharePoint Server 2010)

了解配额和资源点

系统将基于默认配额监控沙盒解决方案的资源使用率,而每个网站集的默认配额也将受到监控。为网站集设置配额可帮助防止任何沙盒解决方案使用过多的系统资源。如果一个或多个沙盒解决方案超过为网站集设置的配额,则该网站集中的所有沙盒解决方案将自动停止,直至“解决方案每日资源使用率更新”计时器作业运行。这种情况通常在每晚出现。

可通过 SharePoint 管理中心网站将配额作为单个数字进行管理,该数字控制每天允许网站集中的所有沙盒解决方案使用的资源点的聚合总计。服务器场管理员可以创建可应用于服务器场中任何网站集的配额模板。有关如何规划配额的信息,请参阅规划配额管理 (SharePoint Server 2010)。有关如何创建配额模板的信息,请参阅创建、编辑和删除配额模板 (SharePoint Server 2010)。有关如何为特定网站集设置最大资源配额的信息,请参阅管理网站集存储限制 (SharePoint Server 2010) 中的更改网站集的存储限制

若要限制沙盒解决方案使用的资源,您可以定义资源点。资源点对应于特定的资源使用率级别,而您可以对多达 15 个资源度量(即您想要监视的系统资源)定义资源使用率级别,并且,在运行沙盒解决方案时,将针对整个网站集计入资源点。当您查看配额内的资源度量时,将会看到每个点的资源数;这些资源数是在计入一个资源点之前可以使用特定资源的次数。对每个资源度量,服务器场管理员可配置以下属性:

  • MinimumThreshold   在将资源使用率聚合到网站集配额的运行总计之前,它必须达到的最低级别。

  • AbosoluteLimit   在工作进程停止之前可在单个请求内发生的资源使用率的最大级别。

  • ResourcesPerPoint   特定资源的数量或级别,它等于一个资源点,并且将计入到网站集的总配额中。

当资源使用率超出 ResourcesPerPoint 属性所指定的限制时,网站集将计入一个资源点。如果资源点的累积数目超出网站集的配额,则当天余下的时间将禁用网站集中的所有沙盒解决方案。

默认的资源点限制在大多数情况下可能都满足需求。不过,您可以调整单个资源点限制以允许适当提高限制值。有关如何调整单个资源点限制的详细信息,请参阅为沙盒解决方案配置资源点 (SharePoint Server 2010)

服务器场管理员可通过在脚本中使用 Windows PowerShell 微调资源点分布,以配置各个资源点在网站集的沙盒解决方案配额内的分布。有关各个资源度量和每个资源度量的最小阈值、绝对限制以及每个点的资源数的列表,请参阅 SharePoint 2010 中沙盒解决方案的资源使用率限制 (http://go.microsoft.com/fwlink/?linkid=217149&clcid=0x804)。有关如何针对特定资源度量配置设置的信息,请参阅为沙盒解决方案配置资源点 (SharePoint Server 2010)

备注

如果您确定某个沙盒解决方案自始至终都在误用服务器资源,则您可以阻止该解决方案,直至开发人员能够纠正此情况。有关如何阻止和取消阻止沙盒解决方案的详细信息,请参阅阻止或取消阻止沙盒解决方案 (SharePoint Server 2010)

管理沙盒解决方案

作为服务器场管理员,您可以执行以下操作来管理沙盒解决方案和沙盒解决方案服务:

  • 在服务器场的服务器上启用沙盒解决方案服务。

  • 更改服务器场的负载平衡方案。

  • 在服务器场中阻止或取消阻止沙盒解决方案。

  • 在服务器场中为网站集配置配额。

  • 在服务器场中配置配额模板。

  • 使用 Windows PowerShell 执行以下操作:

    • 显示网站集的配额设置。

    • 显示和配置特定资源度量的资源点。

    • 为沙盒解决方案服务显示和配置层。

有关如何管理沙盒解决方案和沙盒解决方案服务的详细信息,请参阅沙盒解决方案管理 (SharePoint Server 2010)

网站集管理员可以执行以下操作来管理沙盒解决方案:

See Also

Concepts

规划沙盒解决方案 (SharePoint Server 2010)
沙盒解决方案管理 (SharePoint Server 2010)

Other Resources

沙盒解决方案资源中心(该链接可能指向英文页面)
沙盒解决方案体系结构 (http://go.microsoft.com/fwlink/?linkid=177368&clcid=0x804)
SharePoint 2010 中的沙盒解决方案
在 SharePoint 2010 中安装、卸载和升级沙盒解决方案
资源中心:Microsoft SharePoint Server 2010 中的新增内容