沙箱化解決方案概觀 (SharePoint Server 2010)

 

適用版本: SharePoint Foundation 2010, SharePoint Server 2010

上次修改主題的時間: 2016-11-30

Microsoft SharePoint Server 2010「解決方案」是內含功能、網站定義和其他功能的可部署且可重複使用的套件。解決方案可以個別進行啟用或停用。您可以將解決方案直接部署在 SharePoint Server 伺服器陣列,或將解決方案部署在「沙箱」中。沙箱是限制的執行環境,只讓程式存取特定的資源,而不讓沙箱中發生的問題影響其餘的伺服器環境。部署在沙箱中的解決方案稱之為「沙箱化解決方案」,無法使用某些電腦與網路資源,也無法存取其部署所在之網站集合外的內容。如需解決方案的詳細資訊,請參閱解決方案概觀 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=156638&clcid=0x404) (可能為英文網頁)。

因為沙箱化解決方案不會影響整個伺服器陣列,所以不必一定要由伺服器陣列管理員部署。沙箱化解決方案可由網站集合管理員或具有網站集合根之 [完全控制] 權限等級的使用者部署 (特定情況下)。不過,只有伺服器陣列管理員才能設定沙箱化解決方案相關設定 (如負載平衡、層、配額和資源點),而且只有伺服器陣列管理員才能升級沙箱化解決方案,使其直接在沙箱化環境外部的伺服器陣列上執行。

本文介紹與沙箱化解決方案相關的概念、說明沙箱化解決方案的使用和好處、說明沙箱化解決方案與伺服器陣列上部署之解決方案的差異、彙總沙箱化解決方案的部署方式、說明沙箱化解決方案服務、說明資源點和配額,以及說明與管理沙箱化解決方案相關的工作。本文不包含如何設定沙箱化解決方案或部署沙箱化解決方案的詳細程序。如需如何執行與沙箱化解決方案相關的特定工作的詳細資訊,請參閱<沙箱化解決方案管理 (SharePoint Server 2010)>和安裝、解除安裝和升級沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220252&clcid=0x404) (可能為英文網頁)。

本文內容:

  • 沙箱化解決方案的用途和好處

  • 了解沙箱化解決方案

  • 部署沙箱化解決方案

  • 了解沙箱化解決方案服務

  • 了解配額和資源點

  • 管理沙箱化解決方案

沙箱化解決方案的用途和好處

有兩種一般案例適合使用沙箱化解決方案:

  • 當組織想要對實際執行的 SharePoint Server 網站中之員工執行程式碼,但該程式碼尚未通過嚴格的檢閱及測試時。

  • 當主控者想讓架設 SharePoint Server 網站的擁有者上傳及執行自訂程式碼時。

使用沙箱化解決方案的主要好處如下:

  • 沙箱化解決方案可以新增至實際執行的 SharePoint Server 環境,而不會影響到沙箱以外的程序。

  • 網站集合管理員可以部署沙箱化解決方案。這樣會讓伺服器陣列管理員不用處理此項工作。

  • 延展性及彈性會增加,因為沙箱執行於受配額限制的不同程序中,而且它們對伺服器陣列的影響也會受到監視。

  • 若將解決方案從沙箱移出,直接在伺服器陣列上執行,不一定非要修改或重新編譯。

了解沙箱化解決方案

解決方案封裝為可包含功能、網站定義、網頁組件和組件的 .wsp 檔案。解決方案有兩種:伺服器陣列和沙箱化。伺服器陣列解決方案是由伺服器陣列管理員部署於前端 Web 伺服器、具有伺服器物件模型的完整存取權,而且不受限於任何使用狀況限制。相較之下,沙箱化解決方案可由網站集合管理員或具有網站集合根 [完全控制] 權限等級的使用者部署至網站集合的解決方案庫。沙箱化解決方案對伺服器物件模型的存取權有限,並執行於隔離與監視沙箱化解決方案程式碼的安全性受限內容中。伺服器陣列管理員可以啟用或停用沙箱化解決方案以及設定使用限制,以保護伺服器陣列中的伺服器免受惡意程式碼的攻擊。如需解決方案的詳細資訊,請參閱建置組塊:解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220253&clcid=0x404) (可能為英文網頁)。

沙箱化解決方案無法執行的作業

SharePoint Server 解決方案必須包含名為 manifest.xml 的設定檔,也可以包含其他設定檔及組件。解決方案若執行於沙箱中,組件及設定檔即會受限於其可執行的作業。

下列清單識別要在沙箱中執行的組件無法執行的最常見事項:

  • 連接至不位於本機伺服器陣列上的資源。

  • 存取資料庫。

  • 變更執行緒模型。

  • 呼叫未受管理的程式碼。

  • 寫入磁碟。

  • 存取其他網站集合中的資源。

如需沙箱化解決方案可執行和不可執行作業的詳細資訊,請參閱可在沙箱化解決方案中實作的作業 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220254&clcid=0x404) (可能為英文網頁) 和沙箱化解決方案的限制 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220255&clcid=0x404) (可能為英文網頁)。

了解沙箱化解決方案的負載平衡

SharePoint Server 提供兩種負載平衡配置,用來決定要在其上執行沙箱化解決方案的伺服器。伺服器陣列管理員可以選取下列其中一種負載平衡配置,將沙箱化解決方案套用至整個伺服器陣列:

  • 本機負載平衡   沙箱化解決方案會在與收到要求的同一部伺服器上執行。

  • 遠端負載平衡   在其上執行沙箱化解決方案的伺服器會根據解決方案相關性來選取,而且沙箱化解決方案會在已載入它的伺服器上執行,而且應該早已經執行。這樣可以節省花在處理解決方案各項要求的時間。

不論選取哪種負載平衡配置,在想要執行沙箱化解決方案的每部伺服器上,都必須執行沙箱化解決方案服務。

注意

沙箱化解決方案服務的名稱不同,取決於服務的存取位置。在 SharePoint 管理中心網站中,服務稱為 Microsoft SharePoint Foundation Sandboxed Code Service。在伺服器的 [服務] 主控台中,服務稱為 SharePoint User Code Host 服務。為了避免混淆,本文將服務稱為「沙箱化解決方案服務」。

您可以使用遠端負載平衡,以及只在特定伺服器上執行沙箱化解決方案服務,藉以增加沙箱化解決方案的隔離。在實際執行環境中,建議您使用遠端負載平衡並指定個別的伺服器執行沙箱化解決方案。如需如何決定要使用之負載平衡配置的詳細資訊,請參閱<規劃沙箱化解決方案 (SharePoint Server 2010)>中的<規劃進行沙箱化解決方案程式碼的負載平衡>。

沙箱化及伺服器陣列解決方案的比較

下表為在伺服器陣列與在沙箱中執行之解決方案的各方面比較。

觀點 伺服器陣列 沙箱

部署程序

新增解決方案,再部署至伺服器陣列。

將解決方案上傳至網站集合,再於網站集合中啟動。

可部署的人員

伺服器陣列管理員。

若解決方案包含組件,只有網站集合管理員可進行部署。若解決方案不包含組件,則具有網站集合根 [完全控制] 權限等級的使用者即可進行部署。

資料存取

不限制。

解決方案只可存取其部署所在之網站集合的內容。

解決方案執行所在的處理序

不受限制的 IIS 工作者處理序,或解決方案部署所在的任何處理序。

權限受限的個別工作者處理序。

程式碼存取安全性

解決方案開發人員可以在封裝解決方案時,設定程式碼存取安全性原則。

受限制。

監視

不受監視。

受監視,並受伺服器陣列管理員所設定的配額限制。

負載平衡

隨解決方案的種類而變化。

可與非沙箱化解決方案分開設定。

解決方案功能

不限制。

受限制 (如<沙箱化解決方案無法執行的作業>中所述)。

雖然沙箱化解決方案受限於它們可用和不可用的程式碼,以及可存取和不可存取的資料,但是您可以建立特殊類型的作業,以在完全信任程序中執行,並且可以從沙箱化解決方案呼叫。這稱為「完全信任 Proxy」。如需完全信任 Proxy 的詳細資訊,請參閱與完全信任 Proxy 有合作關係的沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220256&clcid=0x404) (可能為英文網頁) 和第 4 章:沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=219528&clcid=0x404) (可能為英文網頁)。

部署沙箱化解決方案

SharePoint Server 網站中的任何頁面,除在伺服器陣列中直接執行的元件之外,還可以包含在沙箱中執行的元件。部署在伺服器陣列中的元件,執行於網際網路資訊服務 (IIS) 工作者處理序中。部署在沙箱中的元件,則執行於沙箱化程序中。

下列清單識別可能會部署在沙箱中的元件:

  • 網頁組件

  • 事件接收器

  • 功能接收器

  • 自訂的 Microsoft SharePoint Designer 工作流程活動

  • Microsoft InfoPath 商務邏輯

下列步驟說明準備和部署沙箱化解決方案所需的工作:

  1. 伺服器陣列管理員要執行下列只執行一次的工作:

  2. 網站集合管理員或在網站集合的根網站中具有 [完全控制] 權限等級的使用者,可將解決方案上傳至網站集合的解決方案庫。如需如何將解決方案上傳至解決方案庫的詳細資訊,請參閱安裝、解除安裝和升級沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220252&clcid=0x404) (可能為英文網頁)。

  3. 網站集合管理員會啟動解決方案。若解決方案不包含組件,則在網站集合的根網站中具有 [完全控制] 權限等級的使用者也可以啟動解決方案。驗證工具會針對解決方案執行。若解決方案驗證失敗,即不會啟動。如需如何驗證和啟動沙箱化解決方案的詳細資訊,請參閱安裝、解除安裝和升級沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220252&clcid=0x404) (可能為英文網頁)。

網站集合管理員可以監視沙箱化解決方案所使用的資源,也可以停用網站集合中的沙箱化解決方案。如果部署沙箱化解決方案之後,開始使用太多資源或導致沙箱化環境中的問題,則伺服器陣列管理員可以封鎖沙箱化解決方案,使其無法在伺服器陣列上執行。伺服器陣列管理員也可以重新安裝解決方案作為伺服器陣列解決方案,以移除在沙箱中執行沙箱化解決方案的需求。如果移除要在沙箱中執行的需求,當解決方案下次在伺服器陣列的任何網站集合中執行時,即不再會於沙箱化環境中執行。如需如何封鎖沙箱化解決方案的詳細資訊,請參閱<封鎖或解除封鎖沙箱方案 (SharePoint Server 2010)>。如需如何安裝伺服器陣列解決方案的詳細資訊,請參閱<部署方案套件 (SharePoint Server 2010)>。

了解沙箱化解決方案服務

沙箱化解決方案服務管理整個伺服器陣列的沙箱化解決方案執行。沙箱化解決方案服務內執行兩個程序:工作者處理序和 Proxy 程序。每個沙箱化解決方案都是在工作者處理序的應用程式網域內執行。工作者處理序管理沙箱化解決方案,方法是節流每個解決方案所存取的資源,以及停止執行時間過長的程序。一個工作者處理序會配上一個處理 SharePoint 物件模型呼叫的 Proxy 程序。如需沙箱化解決方案服務運作方式的詳細說明,請參閱沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220257&clcid=0x404) (可能為英文網頁) 中的<沙箱化執行模型的運作方式>。

了解層

根據沙箱化解決方案使用之每個要求的平均資源數目,可以在沙箱化解決方案服務中分成數個「層」。如下列說明所示,沙箱化解決方案服務中的層包含沙箱化解決方案在其中執行的一個或多個工作者處理序。每個沙箱化解決方案都是在其專屬應用程式網域中執行,並在呼叫解決方案時重複使用該應用程式網域。

沙箱化解決方案服務中的各層

根據預設,在沙箱化解決方案服務中執行的所有沙箱化解決方案都在一層,內含單一工作者處理序。該工作者處理序依預設最多可執行 10 個應用程式網域。伺服器陣列管理員可以在沙箱化解決方案服務內設定其他層和工作者處理序,以區隔沙箱化解決方案的效能、安全性和可靠性。如果特定工作者處理序中的沙箱化解決方案使用太多資源,則該解決方案會導致該工作者處理序內的所有沙箱化解決方案停止。因為會監視沙箱化解決方案所使用的資源量,所以會根據前天的資源使用狀況,自動將它們分成其他層。因此,建立其他工作者處理序和層有助於隔離沙箱化解決方案,並強制在不同層執行執行異常的解決方案,保護正常執行的解決方案,不要產生執行異常的解決方案。

伺服器陣列管理員可以針對每層設定下列屬性:

  • ResourceMaxValue   此屬性可決定要在層中執行沙箱化解決方案的數目。預設值為 0,而且必須設為較大的值,否則永不會使用該層。

  • MaximumWorkerProcesses   此屬性代表可以在層中執行的最大工作者處理序數目。預設值為 1。將此屬性設為大於 1,會在伺服器上建立其他工作者處理序,以處理要求。

  • MaximumAppDomainsPerProcess   此屬性代表可在層的工作者處理序中執行的最大應用程式網域數目。預設值為 10。

  • MaximumConnectionsPerProcess   此屬性代表從沙箱化解決方案服務到層中之工作者處理序的最大允許連線數。預設值為 1。

  • PriorityPerProcess   此屬性代表層中作業系統指派給工作者處理序的優先順序。

如需各層的詳細資訊,請參閱使用執行層保護正常執行的沙箱化解決方案 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=220258&clcid=0x404) (可能為英文網頁) 和沙箱層 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=217145&clcid=0x404) (可能為英文網頁)。如需如何設定層的詳細資訊,請參閱<設定沙箱化解決方案服務層 (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 中沙箱化解決方案的資源使用狀況限制 (可能為英文網頁)(https://go.microsoft.com/fwlink/?linkid=217149&clcid=0x404) (可能為英文網頁)。如需如何設定特定資源測量之設定的詳細資訊,請參閱<設定沙箱化解決方案的資源點 (SharePoint Server 2010)>。

注意

如果您認為某個沙箱化解決方案持續誤用伺服器資源,就可以封鎖該解決方案,直到開發人員更正狀態為止。如需封鎖及解除封鎖沙箱化解決方案的詳細資訊,請參閱<封鎖或解除封鎖沙箱方案 (SharePoint Server 2010)>。

管理沙箱化解決方案

伺服器陣列管理員可以執行下列作業,以管理沙箱化解決方案和沙箱化解決方案服務:

  • 在伺服器陣列的伺服器上啟用沙箱化解決方案服務。

  • 變更伺服器陣列的負載平衡配置。

  • 封鎖或解除封鎖伺服器陣列上的沙箱化解決方案。

  • 設定伺服器陣列上網站集合的配額。

  • 設定伺服器陣列上的配額範本。

  • 使用 Windows PowerShell 執行下列作業:

    • 顯示網站集合的配額設定。

    • 顯示和設定特定資源測量的資源點。

    • 顯示和設定沙箱化解決方案服務的層。

如需如何管理沙箱化解決方案和沙箱化解決方案服務的詳細資訊,請參閱<沙箱化解決方案管理 (SharePoint Server 2010)>。

網站集合管理員可以執行下列作業以管理沙箱化解決方案:

See Also

Concepts

規劃沙箱化解決方案 (SharePoint Server 2010)
沙箱化解決方案管理 (SharePoint Server 2010)

Other Resources

沙箱化解決方案資源中心 (可能為英文網頁)
沙箱化解決方案架構 (https://go.microsoft.com/fwlink/?linkid=177368&clcid=0x404) (可能為英文網頁)
SharePoint 2010 中的沙箱化解決方案 (可能為英文網頁)
在 SharePoint 2010 中安裝、解除安裝和升級沙箱化解決方案 (可能為英文網頁)
資源中心:Microsoft SharePoint Server 2010 新增功能