日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构

發(fā)布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???? Sharepoint的內容層次結構(Content Hierarchy)包括表示可發(fā)布數(shù)據(jù)項(publishable items),如列表項的類,還包括表示嵌套的數(shù)據(jù)容器(nested containers of data),如列表、內容數(shù)據(jù)庫、網(wǎng)站、網(wǎng)站集以及稱為"Web 應用程序"的網(wǎng)站集分組)的類。

??? 內容層次結構中的主要對象如下圖:

?????????????????

這里我們把Sharepoint的內容層次結構進一步細分成三個層次分別描述:

?一、高層次的對象模型(High Level Object Model)

在Sharepoint場中最高級別的內容容器(Content Container)就是Web應用程序(Web Application),它是由SPWebApplication類來表示的。

SPWebApplication?對象

??? SPWebApplication對象在SharePoint Foundation 中表示用于發(fā)布內容的 Web 應用程序。該對象包含一個或多個內容數(shù)據(jù)庫(Content Database)以用于存儲一個或多個網(wǎng)站集數(shù)據(jù)。每個此類 Web 應用程序都由 IIS 網(wǎng)站提供服務并且在 IIS 中通常具有自己的應用程序池。 而且每個Web應用程序都有它們自己的安全(security)和身份認證(authentication)的相關設置。

??? 一個由SPWebApplication類表示的 SharePoint Foundation Web 應用程序,它基本上就是一組內容數(shù)據(jù)庫,其中每個內容數(shù)據(jù)庫均包含網(wǎng)站集;而網(wǎng)站集自身是網(wǎng)站的集合,這些網(wǎng)站又是文件的集合。

??? 但SharePoint Foundation Web 應用程序并不僅僅是最高級別的網(wǎng)站分組,它還是 SharePoint Foundation 部署在其上對 IIS 可見的層。每個 SharePoint Foundation Web 應用程序均通過一個 IIS 網(wǎng)站公開,并在 IIS 管理器的網(wǎng)站樹中出現(xiàn)。 下圖就是在一個SharePoint Foundation 前端 Web 服務器上顯示應用程序池和 IIS 網(wǎng)站的 IIS 管理器:

???????????????

?? 上圖顯示的是在單一服務器上剛安裝 SharePoint Foundation 之后的 IIS 管理器。請注意,此安裝創(chuàng)建了兩個 IIS 網(wǎng)站,每個網(wǎng)站均具有它自己的應用程序池(和進程)。

?? 其中一個 IIS 網(wǎng)站針對的是用于向最終用戶提供內容的主要 SharePoint Foundation Web 應用程序,此網(wǎng)站名為"SharePoint - 80"("80"為服務器端口號,將通過此端口號傳入 SharePoint Foundation 頁面的請求);

?? 另一個 IIS 網(wǎng)站名為"SharePoint Central Administration v3",可供 IT 專業(yè)人士用來執(zhí)行高級管理任務。您也許能夠猜到為什么要創(chuàng)建單獨的 SharePoint Foundation Web 應用程序,而不是在"SharePoint - 80"內創(chuàng)建一個網(wǎng)站集或網(wǎng)站。通過將兩個 SharePoint Foundation Web 應用程序的進程隔離,即使"SharePoint - 80"內的某個網(wǎng)站上的錯誤代碼導致后面的 Web 應用程序在每次重啟后立即崩潰,網(wǎng)絡管理員仍然可以訪問管理中心。此外,通過使管理應用程序成為一個單獨的 Web 應用程序,管理員能夠為其指定與身份驗證和匿名用戶相關的不同策略。

??? 如果在具有多臺服務器的場中安裝 SharePoint Foundation,并且前端服務器和后端服務器(在 SharePoint Foundation 中稱作"應用程序服務器")的配置不同,則"SharePoint?–?80"僅在前端服務器上運行。"SharePoint Central Administration v3"在一臺應用程序服務器上(且僅在一臺應用程序服務器上)運行。

"SharePoint Central Administration v3"應用程序之外的 SharePoint Foundation Web 應用程序稱作"內容發(fā)布 Web 應用程序"。

???? 當創(chuàng)建初始"SharePoint - 80"Web 應用程序時以及創(chuàng)建任何內容發(fā)布 Web 應用程序時,都將為相應的 Web 應用程序創(chuàng)建新的內容數(shù)據(jù)庫。然后依次為新建的數(shù)據(jù)庫創(chuàng)建一個網(wǎng)站集,并為新建的網(wǎng)站集創(chuàng)建一個首要網(wǎng)站。

因此,SharePoint Foundation Web 應用程序中的所有網(wǎng)站集和網(wǎng)站(以及子網(wǎng)站)對于 IIS 來說只是一個大的網(wǎng)站而已。

???? 在創(chuàng)建 IIS 網(wǎng)站后,IIS 將自動為每個 IIS 網(wǎng)站提供它自己的應用程序池,并且每個應用程序池具有自己的進程。這樣,每個 SharePoint Foundation Web 應用程序將在自己的進程中運行。如果其中的某一個進程發(fā)生崩潰,則其他進程將繼續(xù)運行。這是 SharePoint Foundation Web 應用程序與對象模型層次結構中的較低層之間最重要的區(qū)別。

???? 內容數(shù)據(jù)庫(ContentDatabase)和網(wǎng)站集(Site Collection)彼此之間沒有進程隔離機制,但 Web 應用程序具有這種機制。

???? 嚴格來說,無需保持 IIS 網(wǎng)站與應用程序池之間的一對一關系。在 IIS 管理器中,可將網(wǎng)站從一個應用程序池移動到另一個應用程序池。因此,可以將多個 SharePoint Foundation Web 應用程序移動到同一個池中,從而共享同一進程。在某些情況下,為了獲得這種進程共享帶來的性能增強,有必要放棄崩潰保護。盡管如此,人們并不會經常使用進程共享。

?

SPWebApplication類的一些特征:

??? ?SPWebApplication 對象是 SPWebService 對象的子對象。?
??? ?SPWebApplication 類具有一個保存其所有子級 SPContentDatabase 對象的 ContentDatabases 屬性。(該類還具有一個方便使用的 Sites 屬性,利用該屬性可以獲取對其所有內容數(shù)據(jù)庫的全部網(wǎng)站集的引用,而不必首先獲取對一個或多個內容數(shù)據(jù)庫的引用。)
?????與管理中心應用程序類似,SPWebApplication 類使管理員能夠不用打開 IIS 管理器即可訪問 IIS 屬性。例如,IisSettings 屬性和 ApplicationPool 屬性提供對 SharePoint Foundation Web 應用程序分配到的 IIS 應用程序池的屬性的編程訪問。
??? ?SPWebApplication 繼承自 SPPersistedObject,這意味著該類的對象將保存在配置數(shù)據(jù)庫(Configuration Database)中。
??? ?SPWebApplication 具有很多可用于開發(fā)管理功能的成員。一些較重要的成員可幫助管理諸如: 安全策略,通知,文檔轉換,備份和還原 Web 應用程序,記錄 Web 應用程序的更改,出站電子郵件,外部工作流參與,使用 Windows Live MetaWeblog API,使用回收站,未使用的網(wǎng)站集,Web.config 文件修改 等等內容:
??? ?當 Web 應用程序需要使用某服務應用程序(Service Application)提供的數(shù)據(jù)或處理功能時,它會通過 SPServiceApplicationProxy 來完成。
??? ?SPWebApplication 類與 SPHttpApplication 類具有密切的關系。后一個類的對象是 HTTP 請求處理程序。SharePoint Foundation Web 應用程序分配到的進程(IIS 應用程序池)具有一個或多個處理定向到 Web 應用程序的頁面請求的 SPHttpApplication 對象

?

SPContentDatabase

??? 前面說了,每個 SharePoint Foundation Web 應用程序至少擁有一個內容數(shù)據(jù)庫(由SPContentDatabase類表示),此內容數(shù)據(jù)庫是在創(chuàng)建 Web 應用程序時自動創(chuàng)建的。可以根據(jù)需要向 Web 應用程序中添加更多內容數(shù)據(jù)庫。內容數(shù)據(jù)庫包含所有數(shù)據(jù)(列表、列表項、博客文章和評論、Wiki 網(wǎng)頁和文檔庫中的文檔)和大多數(shù)頁面文件,它們構成了屬于數(shù)據(jù)庫的網(wǎng)站集。

??? 某些屬于網(wǎng)站集的文件將存儲在 SharePoint Foundation 部署的前端服務器的文件系統(tǒng)中。乍一看,這似乎可能會損壞網(wǎng)站集作為內容數(shù)據(jù)庫的子集的系統(tǒng)性。不過,即使文件未存儲在內容數(shù)據(jù)庫中,它們也由該數(shù)據(jù)庫中的行表示。表示此類文件的表行將用作該文件的一種別名。

?SPContentDatabase類的某些特征

?? ?SPContentDatabase 對象是 SPWebApplication 對象的子對象。Web 應用程序的 ContentDatabases 屬性中將引用 Web 應用程序的內容數(shù)據(jù)庫的集合。
?? ?SPContentDatabase 類具有一個保存其所有子級 SPSite 對象的 Sites 屬性。?
?? ?SPContentDatabase 繼承自 SPPersistedObject,這意味著實例化類的對象將保存在配置數(shù)據(jù)庫中。?
?? ?SPContentDatabase 具有很多可用于開發(fā)管理功能的成員。一些較重要的成員可幫助管理諸如備份和還原數(shù)據(jù)庫、升級數(shù)據(jù)庫、遷移(移動)數(shù)據(jù)庫、修復數(shù)據(jù)庫、數(shù)據(jù)庫連接字符串以及登錄用戶名和密碼、限制網(wǎng)站集的數(shù)量等內容
?? ?SPContentDatabase 的大部分屬性是只讀的。?
?? ?SPWebApplication 與SPContentDatabase類都繼承自SPPersistedObject,也就是說,它們的實例化的對象將保存在配置數(shù)據(jù)庫中。

?

?二、中間層次的對象模型(Middle Level Object Model)

??? 處于中間層次的對象模型是網(wǎng)站集(SiteCollection)和它的子集。其中SPWeb對象代表一個單獨的網(wǎng)站對象,而SPSite對象則代表處于同一個WebApplication中的多個網(wǎng)站對象組成的集合,這樣打包的目的是出于管理的需要。

?SPSite類

??? SPSite類表示網(wǎng)站的集合,但它并不是一個實現(xiàn)了 ICollection 接口的類,因此SPSite 類其實并不是一個集合。(SPSiteCollection 類實現(xiàn)后一個接口。它才真正表示 SPSite 對象的集合。)
?以下是 SPSite 類的一些特征:?
??? ?SPSite 對象表示 SPContentDatabase 對象的內容的子集。?
??? ?SPSite 類具有一個保存其子級首要網(wǎng)站的 RootWeb 屬性。(在第一個版本的 SharePoint Foundation 中,即在 Microsoft SharePoint Team Services 中,首要網(wǎng)站【Top –level webstie】稱作"根網(wǎng)站"。)而表示首要網(wǎng)站的 SPWeb 對象則具有一個保存其所有"直接"子網(wǎng)站[immediate child subsites](但不是這些直接子網(wǎng)站所包括的更下一級的子網(wǎng)站)的 Webs 屬性。(AllWebs 屬性將返回所有 子網(wǎng)站和首要網(wǎng)站。)
?? ??SPSite 具有很多可用于開發(fā)管理功能的成員。一些較重要的成員可幫助管理諸如: 網(wǎng)站 URL 的最大長度、RSS 源、審核、不活動網(wǎng)站、功能、網(wǎng)站集的所有權、網(wǎng)站集的大小配額、網(wǎng)站使用率數(shù)據(jù)、網(wǎng)站集中的工作流、模板和 Web 部件庫、自助式網(wǎng)站創(chuàng)建等內容
?????SPSite 類中大約一半的方法都是用來返回某類信息的 Get* 方法,這些方法的大多數(shù)屬性都是只讀的。

網(wǎng)站集(由 SPSite 類表示)的存在可為網(wǎng)站所有者、服務器管理員和銷售 SharePoint Foundation 宿主服務的企業(yè)提供管理上的便利。

?? 以下是網(wǎng)站集的一些最重要的特征:?
?? ?與 SharePoint Foundation Web 應用程序相比,SharePoint Foundation 網(wǎng)站集能夠為 SharePoint Foundation 部署提供更細化的管理,但特定網(wǎng)站自身的管理仍由網(wǎng)站所有者(他們通常不是 IT 專業(yè)人士)負責。
????每個網(wǎng)站集有且僅有一個首要網(wǎng)站。對于某些類型的管理任務,最好是將網(wǎng)站集及其首要網(wǎng)站視為單個實體。例如,首要網(wǎng)站的"網(wǎng)站設置"頁面中包含一個"網(wǎng)站集管理"區(qū)域,首要網(wǎng)站的所有者可在此區(qū)域中激活網(wǎng)站集的功能,并從回收站中還原任何已刪除的網(wǎng)站集內容。另外,可以在首要網(wǎng)站中創(chuàng)建某些自定義實體(如自定義列)。之后,網(wǎng)站集中的所有網(wǎng)站都可以使用這些實體。
? ??網(wǎng)站集橫跨網(wǎng)站所有者的管理責任與網(wǎng)站集管理員(通常不是 IT 專業(yè)人士)的管理責任之間的邊界。如上一條中所述,一些網(wǎng)站集級別的管理任務將由首要網(wǎng)站的所有者處理。但服務器管理員和網(wǎng)絡管理員可以使用管理中心的"應用程序管理"選項卡來創(chuàng)建和刪除網(wǎng)站集以及設置網(wǎng)站集的大小配額。
? ??網(wǎng)站集(或嚴格來說是網(wǎng)站集的首要網(wǎng)站)是痕跡導航中最高級別的對象。(盡管子網(wǎng)站的用戶不一定能夠訪問層次結構中較高級別的每個網(wǎng)站,但他們可以在痕跡導航中看到這些網(wǎng)站。)
? ??由網(wǎng)站集范圍和網(wǎng)站范圍的功能(feature)、內容類型(content type)、列表(list)、主題(theme)和工作流(workflow)組成的池在網(wǎng)站集級別進行維護并提供給子網(wǎng)站使用。也就是說Sharepoint中的master pages, Web Parts, themes, lists, content types, 以及 Features的作用范圍都可以達到Site Collection級別。也就是說可以把它們部署到Site Collection級別并對此Site Collection下的所有子級起作用。
?? ?網(wǎng)站集是可從中激活 SharePoint Foundation 功能的四個級別之一。其他三個級別為網(wǎng)站、Web 應用程序和場。?
?? ?用戶組是在網(wǎng)站集級別進行維護并分配默認權限的。(可以在任何網(wǎng)站、列表或列表項級別更改這些權限。可以在任何網(wǎng)站的"網(wǎng)站設置"頁面上創(chuàng)建組。但不管在何處創(chuàng)建組,該組都將處于網(wǎng)站集級別并且對網(wǎng)站集中的所有網(wǎng)站可用。)也即一個Site Collection是Sharepoint用于創(chuàng)建用戶組(create groups of users)以及分配默認權限(default permission)的級別
????可以在網(wǎng)站集內而不是網(wǎng)站集之間共享母版頁和 Web 部件。

?? ?網(wǎng)站集是層次結構中最高級別的對象,可以審核對它的訪問權。將在此級別維護審核數(shù)據(jù)庫。?
?? ?一個網(wǎng)站集(Site Collection)是具有實用的備份和還原 API 的最小單元。(但可以使用未連接的數(shù)據(jù)庫和數(shù)據(jù)庫快照功能來備份和還原列表和其他更細化的單元。
? ??在SharePoint Foundation中Site Collection是搜索(search)功能所能作用的最大范圍,如果你的搜索功能想要突破這個范圍限制,就必須要使用SharePoint Server 2010。
????一個網(wǎng)站集(site collection)的內容(content)總是被存儲在一個內容數(shù)據(jù)庫(a single content database)中的。?
?? ?每個網(wǎng)站集都有一名網(wǎng)站集管理員

?

SPWeb類

?? SPWeb 類表示一個 SharePoint Foundation 網(wǎng)站。網(wǎng)站是一個包含一個或多個網(wǎng)頁的集合,它通常包含一組列表、文檔庫、內容類型、字段(列)類型、一組可用功能、一組用戶警告以及一組工作流實例。此外,網(wǎng)站還具有一個所有者和一組關聯(lián)的用戶和用戶組。可以通過編程方式在網(wǎng)站中添加或刪除所有這些類型的實體。網(wǎng)站也可以作為搜索范圍。
?? 以下是 SPWeb 類的某些特征:?
?? ?SPWeb 對象可以是另一個 SPWeb 對象或 SPSite 對象的子對象。如果它是 SPSite 對象的子對象,則將是網(wǎng)站集中的首要網(wǎng)站(Top-level Website)。
? ??SPWeb 對象具有一個可返回其他 SPWeb 對象的集合(具體是指它下面的直接子網(wǎng)站)的 Webs 屬性。?
?? ?該類提供了一組非常豐富的成員,可用于編程管理和網(wǎng)站自定義。?
?? ?網(wǎng)站的層次結構始終必須具有一個首要網(wǎng)站。此網(wǎng)站是 SPSite 對象的子對象。

?? 一個SPWeb類有許許多多的屬性和方法用于處理網(wǎng)站(Website)的相關內容,包括它們的用戶、列表、字段,內容類型,功能,報警等方方面面。SPWeb類也包含一個關鍵的Update()方法,該方法用于將更改提交到 SharePoint Foundation 數(shù)據(jù)庫。

Sharepoint的網(wǎng)站 與ASP.NET傳統(tǒng)網(wǎng)站的比較:

???一個由 SPWeb 類表示的 SharePoint Foundation 網(wǎng)站,它是經過優(yōu)化以便進行內容管理和協(xié)作的 ASP.NET 網(wǎng)站。該網(wǎng)站主要在以下幾個方面與其他 ASP.NET 應用程序不同:
??? ?該網(wǎng)站不再強調頁面,而是改為強調列表(List)和列表項(List Item)。例如,SharePoint Foundation 網(wǎng)站(類型為 STS)的"快速啟動"會顯示一個網(wǎng)站、子網(wǎng)站和列表(包括列表的列表)的層次結構,而不是頁面本身構成的層次結構。如果向此網(wǎng)站添加頁面,則新的頁面在"快速啟動"中將作為共享文檔列表中的新項出現(xiàn),而不是作為主頁或某些其他頁面下的子節(jié)點出現(xiàn)。
? ? ?該網(wǎng)站賦予用戶管理能力。任何給定用戶所具有的能力大小由授予該用戶的權限決定。通常,最終用戶能夠創(chuàng)建全新的網(wǎng)站(作為現(xiàn)有網(wǎng)站的子網(wǎng)站),并能夠在現(xiàn)有網(wǎng)站上添加和編輯內容。
??? ?該網(wǎng)站是可以在其上激活 SharePoint Foundation 功能(Feature)的四個級別之一。其他三個級別為網(wǎng)站集(Site Collection)、Web 應用程序(Web Application)和場(Farm)。
??? ?網(wǎng)站是網(wǎng)站集內容的子集這一事實并不表示給定集合中兩個網(wǎng)站的內容會相互排斥:例如,一個給定列表可以在多個網(wǎng)站上出現(xiàn)。

?

關于SPSite與SPWeb兩個對象的創(chuàng)建與銷毀:

???? 由于Sharepoint的最早期版本在.NET Framework出現(xiàn)之前就存在了,而現(xiàn)在Sharepoint中的SPWeb與SPSite則是源自早期的版本并由此發(fā)展而來的,所以,甚至到了現(xiàn)在SPWeb與SPSite仍包裝了一些COM對象,這些COM對象是無法讓.NET Framework的垃圾回收(Garbage collection)機制自動回收的,如果你在使用它們之后沒有正確的銷毀它們,就很容易引起Sharepoint場服務器的內存泄漏。所以Sharepoint開發(fā)人員有必要調用SPWeb或SPSite的Dispose方法來及時釋放它們。值得注意的是,SPContext?對象由 SharePoint 框架進行管理并且不應該在代碼中明確釋放。SPContext.SiteSPContext.Current.SiteSPContext.Web和?SPContext.Current.Web?返回的?SPSite?和?SPWeb?對象也是如此。每當在同一行上合并 SharePoint 對象模型調用時,必須慎重并知道運行庫所做的操作。這種情況引發(fā)的泄露最難找到。

?

?三、低層次的對象模型(Low Level Object Model)

??這個層次的對象模型包括列表(List)和列表項(List items),它們分別由SPList 和 SPListItem 這兩個類來表示。

SPList類提供了不少的成員支持程序員通過代碼增、刪和獲取列表項,并支持管理諸如內容類型(content type)和字段(fields)等的元數(shù)據(jù)(metadata)。返回特定列表的高效方法是通過 SPWeb 或 SPListCollection 的 GetList 方法。ListItem類也提供了成員以支持管理列表項的字段(fields)、字段值(value of its fields)、它的內容類型以及與之關聯(lián)的工作流(workflow)。返回列表項或 SPListItemCollection 的高效方法是通過 SPList 或 SPWeb 的 GetItem* 方法。 文件夾(Folder)在Sharepoint則由SPFolder類表示。SPFolder 類的 Files 屬性返回文檔庫文件夾中的所有文件,而 SPWeb 的 Files 屬性返回網(wǎng)站中使用的 .aspx 文件。返回特定文件夾的有效方式是使用網(wǎng)站的 GetFolder() 方法。列表項中的字段由SPField對象來表示。。
?
?? 需要注意的是,雖然任何給定的列表項都有特定的內容類型與之關聯(lián),Sharepoint的對象模型只提供SPListItem類來表示所有的列表項。因此,當你操作列表項及其字段時,你更像在與一個弱類型環(huán)境(weakly typed enviorment)打交道。所以Sharepoint提供了SPMetal這個工具,SPMetal 是一類用于生成實體類的命令行工具,這些類可向 Microsoft SharePoint Foundation 內容數(shù)據(jù)庫提供面向對象的界面。雖然這些類主要用于 LINQ to SharePoint 查詢,但它們也可用于通過利用并發(fā)沖突解決方法來添加、刪除和更改列表項。此外,還可將它們作為用于引用內容的常規(guī) SharePoint Foundation 對象模型的替代項使用。使用SPMetal生成的實體類的好處就是你可以在編碼階段就發(fā)現(xiàn)那些有可能在運行時才能發(fā)現(xiàn)的某些錯誤。 比如說:某個列表中有一個字段名為Country的字段,程序員在通過傳統(tǒng)方式獲取這個字段的值時可能使用了myItem["Country"]代碼,如果他把字段名用錯了,比如用成了myItem["Countyr"],類似這種拼寫錯誤,那么這種錯誤只會在運行時才能表現(xiàn)出來。但當你使用了SPMetal來生成實體類時,你就會看到myTask.Country這樣的代碼自動提示,從而更早避免了此類錯誤。

?

當然SPMetal也有如下限制:

?? ?SPMetal 只能為內容類型的字段 生成代碼。不存在到 SPListItem 對象的屬性(例如 Properties 屬性包或 Attachments 屬性)的內置映射。
????SPMetal 不能為使用自定義字段數(shù)據(jù)類型的字段生成代碼。?
?? ?SPMetal 無法預測未來,因此無法映射在部署解決方案后用戶將添加到列表中的字段(列)

下圖展示了Sharepoint各對象之間的關系(當然,還包括了物理層次結構與服務結構)。

總結

以上是生活随笔為你收集整理的Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。