Question 19
You are designing a custom SharePoint 2010 solution package. It will include a feature that contains a Web Part,which requires a custom assembly for its functionality. You need to design the feature based on the following requirements:
.The Web Part must be a partial trust application and support a custom Code Access Security (CAS) policy.
.The solution package must be deployed without the need of farm-level administrator permissions.
Which approach should you recommend?
A. Create the Web Part feature and deploy the required assembly to the bin directory of only the Web applications that require it. Then delegate administration to the site administrator. Lastly, create a custom CAS policy file and point to it the web.config file of the application.
B. Create the Web Part feature assembly with a strong name and deploy it using a .wsp file to the _app_bin directory of all Web applications where it is needed. Then activate it using delegated administration.
C. Create an assembly with a strong name and deploy it to the global assembly cache at the farm level. Activate the feature at the site collection level with delegated administration.
D. Create the Web Part feature as a sandboxed solution.web
解析:
本題須要你建立一個包含有WebPart的解決方案,此Webpart須要基於客戶定義的程序集實現其功能。解決方案須要知足以下條件:
要求1. 此WebPart必須實現的是部分信任的應用,並支持代碼訪問安全性策略(CAS)
要求2.此解決方案不須要場管理員的支持就能部署。
看到上面的要求,尤爲是第2個要求,立刻就應該反應出SandBox Solution了。本題的備選項只有選項D使用了沙盒方案,因此應該是選項D。
可是咱們仍是須要過一遍其它備選項以確定咱們的判斷:
選項 A. Create the Web Part feature and deploy the required assembly to the bin directory of only the Web applications that require it. Then delegate administration to the site administrator. Lastly, create a custom CAS policy file and point to it the web.config file of the application.
本選項把WebPart部署到Bin目錄,咱們來了解下這種狀況。
在 SharePoint 網站內,能夠將 Web 部件程序集部署到多個位置。
1.解決方案庫 – 解決方案庫是使用沙盒解決方案部署 Web 部件時的建議位置。默認狀況下,它爲 Web 部件提供監視和安全性。
2. bin 目錄 — bin 目錄是一個存儲在 Web 應用程序根目錄下的文件夾。在 Internet Information Services (IIS) 中建立網站時將肯定此文件夾的位置。在 SharePoint Foundation 中,能夠經過管理中心網站或經過在 IIS 管理器中手動建立新網站來實現此目的。
重要信息:若是 bin 目錄不存在,您必須手動添加一個 bin 目錄。請不要在本地 _app_bin 目錄中存儲 Web 部件,此目錄是專爲 Microsoft 保留的。
3.全局程序集緩存 — 可用於部署已簽名程序集的全局位置。利用全局程序集緩存,能夠跨多個應用程序共享程序集。全局程序集緩存將隨 .NET 運行庫一塊兒自動安裝。一般,組件將存儲在 C:\WINNT\Assembly 文件夾中。
其中,針對本選項所採起的第2種方式即bin目錄方式,其優勢是:默認狀況下,程序集以部分信任的形式運行。從該目錄運行的代碼具備較低級別的代碼訪問安全性 (CAS) 權限。因爲管理員必須明確提高已向 Web 部件授予的權限以使該部件可以正常運行,所以他們一般更願意程序集在 bin 目錄中經過已知的必需 CAS 權限集運行。每一個 Web 應用程序都有一個 bin 目錄。這樣,就能夠隔離特定 Web 應用程序的代碼。但缺點是:爲了使此 Web 部件可以在多個 Web 應用程序中運行,您必須將此 Web 部件部署到全局程序集緩存中。【這句就是破解本選項的要點,既然要求部署到全局程序集緩存中,那就不可能脫離場管理員的支持了】緩存
選項B. Create the Web Part feature assembly with a strong name and deploy it using a .wsp file to the _app_bin directory of all Web applications where it is needed. Then activate it using delegated administration.
此選項就更直接,咱們來看看微軟的說明:」 Web 部件程序集能夠安裝在 Web 應用程序的 bin 目錄或全局程序集緩存中,若是 bin 目錄不存在,您必須手動添加一個 bin 目錄。請不要在本地 _app_bin 目錄中存儲 Web 部件,此目錄是專爲 Microsoft 保留的。」 因此僅就這一句就能夠排除本選項了。安全
選項C. Create an assembly with a strong name and deploy it to the global assembly cache at the farm level. Activate the feature at the site collection level with delegated administration.
本選項也與選項A相似,都要涉及到全局程序集緩存,因此也必然被排除了。服務器
所以本題答案應該選 Dapp
參考
http://msdn.microsoft.com/zh-cn/library/ff798425.aspx
http://msdn.microsoft.com/zh-cn/library/cc768621(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/bb815365(v=office.12).aspxide
Question 20
A SharePoint 2010 server farm has a custom feature installed that provides specialized business logic for a SharePoint solution package. The solution package is being updated to include additional functionality. Your job isto specify a deployment method for the updates that will:
.Add the additional application business logic to the solution package.
.Provide the least downtime for the application.
.Automate the application upgrade a much as possible.
You need to update the solution package with additional business logic and meet all these requirements. Which
approach should you recommend?
A. Create a new feature containing the new business logic. Use the feature upgrade process to deploy the solution package by incrementing the version number of the feature in the Feature.xml file.
B. Add the new business logic to the existing feature. Use the feature upgrade process to deploy the solution package by incrementing the version number of the feature in the Feature.xml file.
C. Use Visual Studio 2010 to add the new business logic to the existing code in the .wsp package for the feature. Create two timer jobs - one to retract the current solution package and one to deploy the solution package with
the updated feature.
D. Use the object model to create a custom feature receiver to increment the version property of the SPFeatureDefinition class. Increment the version number of the current solution in the Feature.xml file.佈局
解析:
本題題意是你的服務器場中已經包含了某個功能,此功能是經過一個方案包部署到場中的。如今,你須要在這個原有的功能中加入更多的操做,而後經過更新升級那個原有的方案包以替換成新的這個具備更多操做的功能。要求是:
要求1. 新的操做邏輯應該被添加到解決方案包中
要求2 儘可能減小已有方案的停用時間
要求3. 升級操做盡能夠自動化
咱們先來回顧一下Sharepoint關於Feature升級的部分:
在 Microsoft SharePoint Foundation 中,每一個功能(Feature)都具備一個在與其對應的 Feature.xml 文件中指定的版本號。在某個特定範圍內激活一個功能時,會建立一個與該功能的版本關聯的功能實例。利用 SharePoint Foundation 中的功能版本控制,可輕鬆跟蹤功能及其關聯實例。以後,當您部署新版本的功能時,SharePoint Foundation 檢測到關聯的功能也須要進行升級,由於功能實例的版本號小於當前的 Feature.xml 文件中指定的新版本號。
註釋: 最佳作法是,決不將 FEATURES 文件夾中的功能文件與解決方案部署文件或解決方案升級文件分開放置,由於功能升級是一個高級部署選項,它不會在部署期間驗證功能 XML。
在運行功能升級時,還會根據新 Feature.xml 文件中指定的升級操做對須要升級的功能實例進行升級。
接下來分析各備選項:
選項A. Create a new feature containing the new business logic. Use the feature upgrade process to deploy the solution package by incrementing the version number of the feature in the Feature.xml file.
此選項是從新建立一個新的Feature,這顯然不符合在原有Feature的基礎上進行升級的要求。並且如上面描述:決不將 FEATURES 文件夾中的功能文件與解決方案部署文件或解決方案升級文件分開放置。另外一個層面,你不須要從新定義一個新的Feature來實現升級。因此本選項應該被排除。
選項B. Add the new business logic to the existing feature. Use the feature upgrade process to deploy the solution package by incrementing the version number of the feature in the Feature.xml file.
在已有的Feature代碼中添加新的操做,而後經過Feature升級的相關處理以替換更新原有的Feature。符合上面Feature升級描述。網站
選項C. Use Visual Studio 2010 to add the new business logic to the existing code in the .wsp package for the feature. Create two timer jobs - one to retract the current solution package and one to deploy the solution package with the updated feature.
本選項試圖在VS2010中修改wsp包的代碼,向其中添加新的操做邏輯。咱們知道,所謂wsp包就是解決方案包, 是一個分發包,可將您的 SharePoint Foundation 2010 自定義開發工做成果分發到服務器場中的 Web 服務器或應用程序服務器。使用解決方案可打包和部署自定義功能、網站定義、模板、佈局頁、Web 部件、級聯樣式表和程序集。解決方案包是一個擴展名爲 .wsp 的 CAB 文件和一個指令清單文件。能夠打包到解決方案中的組件包括:
1 .NET Framework 程序集,一般是 Web 部件程序集和事件接收器程序集。
2.部署文件,例如資源文件、網頁或其餘幫助程序文件。
3.功能,使您可以激活和停用網站中的代碼,並提供包括自定義列表、庫、字段和內容類型等元素的功能。
4.新的模板和網站定義。
5.必須在 Web 服務器級別執行的配置,例如,將自定義項部署到 Web.config 文件,以用於註冊 Web 部件。您還可使用隨功能分發的功能修改這些配置。
6.被稱爲網頁的 Web 內容(如網頁和圖像)。若是您必須在斷開鏈接的環境中部署 Web 內容,應該使用內容部署包。
Sharepoint支持建立和部署自定義 Web 部件解決方案包。
本題的目標是,你須要添加新的操做邏輯去升級原有的Feature,所以,本選項的侷限在於:1.經過直接修改wsp包的代碼是沒法添加新的操做邏輯的,由於這些操做邏輯很大程度上是須要被從新編譯的,而這樣一來,就須要從新生成wsp包,而不只僅是修改其內部的代碼來直接達到。2. 僅添加新的business logic並無解決如何對Feature進行升級的操做。而至於後續的timer jobs也只是去完成wsp包的卸載與從新安裝部署,咱們固然能夠經過Replacements 方式去升級一個Solution,但這種方式必需要重啓咱們的IIS,由此會形成downtime時間,這也是本題所不想要的。因此,本選項也應該被排除。
選項D. Use the object model to create a custom feature receiver to increment the version property of the SPFeatureDefinition class. Increment the version number of the current solution in the Feature.xml file.
本選項沒有解決向原有Feature中添加新的操做,只是圍繞着如何經過修改版本屬性來影響升級,因此也應該被排除。
所以本題答案應該選 Bui
參考
http://msdn.microsoft.com/zh-cn/library/ee535723(v=office.14).aspx
http://technet.microsoft.com/zh-cn/library/ff607688(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/aa544500.aspx
http://msdn.microsoft.com/zh-cn/library/ee535708(v=office.14).aspxspa