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

 

適用版本: SharePoint Foundation 2010

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

您可以將 Microsoft SharePoint Foundation 2010 解決方案直接部署在 SharePoint Foundation 伺服器陣列,或將解決方案部署在「沙箱」中。沙箱是限制的執行環境,只讓程式存取特定的資源,而不讓沙箱中發生的問題影響其餘的伺服器環境。

部署在沙箱中的解決方案稱之為「沙箱化解決方案」,無法使用某些電腦與網路資源,也無法存取其部署所在之網站集合外的內容。如需沙箱化解決方案限制的詳細資訊,請參閱<沙箱化解決方案無法包含的內容>。

因為沙箱化解決方案不會影響整個伺服器陣列,所以不必一定要由伺服器陣列管理員部署。沙箱化解決方案可由網站集合管理員或具有網站集合根之完全控制權的使用者部署 (特定情況下)。只有伺服器陣列管理員可以升級沙箱化解決方案,使其於沙箱外直接在伺服器陣列上執行。

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

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

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

本文介紹與沙箱化解決方案相關的概念,說明沙箱化解決方案與部署在伺服器陣列上的解決方案之間的差異,以及概要說明如何部署及執行沙箱化解決方案。本文不提供設定沙箱環境或部署沙箱化解決方案的詳細程序。

本文內容:

部署及執行沙箱化解決方案

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

以下清單識別出數個可能會部署在沙箱中的元件:

  • 網頁組件

  • 事件接收器

  • 功能接收器

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

  • Microsoft InfoPath 商務邏輯

下列步驟說明如何部署沙箱化解決方案:

  1. 伺服器陣列管理員要執行下列工作。只需要執行一次即可。

    • 伺服器陣列管理員要啟用沙箱環境,並在每部會執行沙箱化解決方案的伺服器上啟動沙箱服務。

    • 伺服器陣列管理員要決定所要使用的負載平衡配置。而負載平衡配置會套用至伺服器陣列中,所有網站集合內的所有沙箱化解決方案。

    • 伺服器管理員要設定資源配額,此為網站集合中所有沙箱化解決方案合計不得超過的限額。

  2. 網站集合管理員或具有網站集合根完全控制權的使用者,可將解決方案上傳至網站集合的解決方案庫。

  3. 網站集合管理員會啟動解決方案。若解決方案不包含組件,具有網站集合根完全控制權的使用者也可以啟動解決方案。驗證工具會針對解決方案執行。若解決方案驗證失敗,即不會啟動。

處理執行沙箱化解決方案的要求時,會出現下列活動:

  1. 根據負載平衡配置,SharePoint Foundation 會決定執行解決方案的伺服器。若於本機進行負載平衡,解決方案就會在處理要求的同一部伺服器上執行。若在遠端進行負載平衡,即會根據解決方案相關性選取解決方案執行所在的伺服器。在這兩種情況下,伺服器都必須執行沙箱服務。

  2. SharePoint Foundation 會選取沙箱工作者處理序以執行解決方案,然後將 “Shim” 動態連結程式庫 (dll) 載入至處理序,再將解決方案組件載入至該處理序。

  3. 解決方案在執行時,它的程式碼會先通過 Shim,再由 SharePoint Foundation 執行。解決方案程式碼若嘗試使用不准沙箱化解決方案使用的 API,Shim 會發出例外通知,而不會讓程式碼通過並執行。

  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=0x404)。

監視

不受監視。

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

負載平衡

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

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

解決方案功能

不限制。

受限制,如<沙箱化解決方案無法包含的內容>中所述。

使用沙箱化解決方案的好處

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

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

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

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

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

See Also

Concepts

沙箱化解決方案規劃 (SharePoint Foundation 2010)

Other Resources

沙箱化解決方案管理 (SharePoint Foundation 2010)
沙箱化解決方案架構 (https://go.microsoft.com/fwlink/?linkid=177368&clcid=0x404)(可能為英文網頁)
部署沙箱化解決方案 (https://go.microsoft.com/fwlink/?linkid=177369&clcid=0x404)(可能為英文網頁)