Sharepoint學習筆記—習題系列--70-573習題解析 -(Q125-Q126)

Question 125
You are creating an application for SharePoint Server 2010.
The application will run on a remote computer.
You need to identify a data access method to query lists in the application.
Strongly-typed access to columns must be provided from within Microsoft Visual Studio 2010.
Which method should you use?
A. client object model
B. LINQ to SharePoint
C. Representational State Transfer (REST)
D. server object modelhtml

解析:
   本題是想在一個遠程運行的應用程序上經過強類型方式訪問Sharepoint列表數據。
   因此核心是:遠程+強類型
   咱們知道REST(Representational State Transfer)不是強類型訪問,REST協議的一個特色,就是能夠把咱們須要的操做都濃縮在一個URL中,並能夠經過GET、POST、PUT、DELETE、MERGE這幾種HTTP訪問方式,來實現列表數據的增、刪、查、改。經過這種方式訪問的時候,客戶端使用JSON的格式把須要的數據經過某種HTTP方法發送至服務器,服務器收到相關請求,處理後便可以返回Xml格式(Atom協議),也能夠返回JSON格式(若是不特別聲明的話,默認使用Atom協議,也就是Xml格式)的處理結果。和客戶端對象模型相同的是,咱們經過Url,能夠定義所須要返回的那些字段值,從而減小客戶端和服務器端的數據傳遞大小。因此,REST所提供的接口XML/JSON都是字符串類型(須要注意:由VS建立的用於封裝你的List/Content類型的代理類[Proxy]倒是強類型的)。
   LINQ to SharePoint 提供程序是在 Microsoft.SharePoint.Linq 命名空間中定義的。它將 LINQ 查詢轉換爲協做應用程序標記語言 (CAML) 查詢。開發人員無需再瞭解如何編寫 CAML 查詢。LINQ 查詢可在服務器代碼中使用。若要從客戶端應用程序中查詢請使用 SharePoint 對 ADO.NET Data Services 的支持。因此LINQ to SharePoint不能在客戶端(Remote Computer)使用。
   server object model 就是服務器端對象模型,顧名思義,只能在服務器端使用。
    server object model 即客戶端對象模型。客戶端對象模型包含了許多與Sharepoint對象打交道的強類型類。Microsoft SharePoint Foundation 2010 引入了三個用於從如下位置與 SharePoint 網站交互的全新客戶端 API:.NET 託管應用程序(Microsoft .NET Framework 3.5 或更高版本)、Microsoft Silverlight 應用程序(Silverlight 2.0 或更高版本)或在瀏覽器中執行的 ECMAScript(JavaScript、JScript)。這些新的 API 可訪問服務器端對象模型的 Microsoft.SharePoint 命名空間中包含的部分類型和成員。
新客戶端對象模型提供了面向對象的系統,用於從遠程計算機與 SharePoint 數據進行互操做,而且這些客戶端對象模型在許多方面都比現有 SharePoint Foundation Web 服務更易於使用。您能夠先檢索表明當前請求上下文的客戶端上下文對象,經過此上下文,您能夠訪問網站集級別或 SharePoint Foundation 層次結構中更低級別的客戶端對象。客戶端對象從 ClientObject 類 (JavaScript: ClientObject (該連接可能指向英文頁面)) 繼承,您可使用它們檢索特定 SharePoint 對象的屬性、檢索子對象及其屬性,或檢索集合中的子項。
 
因此本題目正確選項應該是A
參考:
http://msdn.microsoft.com/en-us/library/ee535231.aspx
http://msdn.microsoft.com/zh-cn/library/ee535491(v=office.14).aspxweb

 

Question 126
You create a custom list named Products.
You need to perform a Representational State Transfer (REST) query that returns products 30 to 39.
Which URL should you use?
A. /ListData.svc/Products(30) $skip=10
B. /ListData.svc/Products(39) $skip=30
C. /ListData.svc/Products $skip=10&$top=30
D. /ListData.svc/Products $skip=30&$top=10編程

解析:
 本題試圖經過REST方式從Sharepoint的Products列表中讀取從第30到39條記錄。
 先了解一下REST的相關知識點:
  SharePoint Foundation 2010 引入了客戶端對象模型,容許開發人員經過其選擇的 Web 編程技術與 SharePoint 遠程交流:.NET Framework、Microsoft Silverlight 或 JavaScript。     SharePoint 2013 引入了可與客戶端對象模型徹底匹敵的表明性狀態傳輸 (REST) 服務。在 SharePoint 2013 中,客戶端對象模型的幾乎每一個 API 都將有對應的 REST 端點。如今,開發人員能夠經過任何支持 REST Web 請求的技術與 SharePoint 對象模型遠程交互。
  SharePoint 2013 新增了使用 REST 與 SharePoint 網站遠程交互的功能。如今,您可使用任何支持標準 REST 功能的技術直接與 SharePoint 項目進行交互。
 要使用內置於 SharePoint 2013 的 REST 功能,您能夠根據對應於所需客戶端對象模型 API 的開放數據協議 (OData) 標準構建 RESTful HTTP 請求。client.svc Web 服務能夠處理 HTTP 請求並以 Atom 或 JSON(JavaScript 對象表示法)格式做出適當的響應。而後,客戶端應用程序必須分析該響應。
   SharePoint 2013 REST 服務中的終結點對應於 SharePoint 客戶端對象模型中的類型和成員。經過 HTTP 請求,您可使用這些 REST 端點對 SharePoint 工件(如列表和網站)執行典型的 CRUD(Create、Read、Update 和 Delete)操做。
  默認狀況下,經過使用 Atom 協議根據 OData 規範對 SharePoint 2013 REST 服務響應進行格式設置。此外,REST 服務支持 HTTP Accept 標題,容許您規定以 JSON 格式返回響應。
OData 查詢運算符支持
SharePoint REST 服務支持多種 OData 查詢字符串運算符,使用這些運算符,您能夠選擇、篩選及訂購您請求的數據。
選擇要返回的字段:使用 $select 查詢選項指定針對給定列表、列表項或實體集表示的其餘 SharePoint 對象返回的字段。您可使用 $select=* 來返回全部可用字段。
一般,若是您不指定 $select 查詢選項,則 REST 服務默認返回全部可用字段。可是,在少數幾種狀況下,某些 SharePoint 對象包含檢索資源極爲密集的屬性;爲了優化 REST 服務性能,默認查詢中並不包含這些屬性,必須顯式請求。例如,默認狀況下不返回 SPWeb.EffectiveBasePermissions 屬性,必須使用 $select 查詢選項顯式請求。
此外,您能夠指定請求從其餘列表返回預計字段和查詢值。爲此,請在 $select 和 $expand 查詢選項中指定字段名稱。例如:
http://server/site/_api/web/lists('guid')/Products?$select=Title,Products/Name&$expand=Products/Name
 選擇要返回的項
 使用 $filter 查詢選項選擇要返回的項。下圖列出 SharePoint REST 服務支持的篩選查詢比較選項和功能。
  api

  下圖展現了支持的 OData 查詢選項:
  
單個值循環字段查詢:單個值循環字段由 SharePoint REST 服務中兩個單獨的字段表示:一個字段表示實際字段值,另外一個表示字段名稱。您能夠像對該數據類型的任何其餘字段同樣對循環字段值執行查詢。例如,若是查詢字段值爲字符串,則能夠在查詢中使用字符串比較選項。
用戶查詢:在 SharePoint REST 服務中,用戶用用戶的友好(顯示)名稱,而非其別名或域\別名組合表示。所以,您必須陣對用戶的友好名稱構造用戶查詢。它不支持基於成員類型的用戶查詢。不支持使用 Current 運算符查詢當前用戶的 ID。
多值循環字段和用戶查詢: 因爲多值循環字段做爲多值字符串返回,所以沒法進行查詢(例如,不支持 Includes 元素或 NotIncludes 元素的等效物)。
對返回的項進行排序:使用 $orderby 查詢選項指定如何對查詢返回集中的項進行排序。要對多個字段進行排序,請指定以逗號分隔的字段列表。您還能夠經過將 asc 或 desc 關鍵字附加到查詢指定是按升序仍是降序對項進行排序。
翻閱返回的項:使用 $top 和 $skip 查詢選項選擇查詢以其餘方式返回的項的子集。
使用 $top 選項,您能夠選擇返回返回集的前 n 個項。例如,如下 URI 請求實際返回潛在返回集中的前 10 個項:
http://server/site/_api/web/lists('<guid>')/items$top=10
使用 $skip 選項,您能夠跳過指定數目的項返回剩餘的項。
下面是REST的URL的通常語法結構:
http://SPServer/_vti/bin/ListData.svc/{Entity}[({identifier})]/[{Property}]
對於上述的元素:
ListData.svc – wcf srevices that follows REST protocol.
Entity – 是Sharepoint的列表的名字
Identifier –能夠是列表項的ID
Property –列表的字段
你也可使用過濾功能,例以下面的示例返回列表Cites中City字段爲’NJ’的列表項
/_vti/_bin/ListData.svc/{Entity}?filter=Cities/ City eq ‘NJ’瀏覽器

   如今回到本題,本題其實就是考你使用REST方式翻閱返回的項,本題的目的是讀取從第30到39條記錄:
選項A. /ListData.svc/Products(30) $skip=10  找到ID的值爲30的項並返回,忽略前10條記錄
選項B. /ListData.svc/Products(39) $skip=30  找到ID的值爲39的項並返回,忽略前30條記錄
選項C. /ListData.svc/Products $skip=10&$top=30  返回從10到39條的記錄
選項D. /ListData.svc/Products $skip=30&$top=10  返回從30到39條的記錄
 
因此本題目正確選項應該是D服務器


參考:
http://mysharepointwork.blogspot.com/2010/09/using-rest-to-get-data-form-sharepoint.html
http://msdn.microsoft.com/en-us/library/ff798339.aspxapp

相關文章
相關標籤/搜索