在聊SharePoint開發以前,有必要說下什麼是SharePoint.web
在我工做的過程當中,常常遇到客戶對SharePoint不太瞭解的狀況。有客戶說,SharePoint太爛了,DropBox能作到的什麼什麼功能,SharePoint居然作不到,很明顯這種客戶把SharePoint當成了一個雲盤。那麼什麼是SharePoint呢?shell
根據Microsoft的說法,SharePoint是一個企業級的協做平臺。這個提及來有點抽象啊 :) 那咱們先看看SharePoint的發展歷史吧。其實最開始的時候,SharePoint不是這麼個你們夥。數據庫
1. SharePoint的發展歷史。編程
1)其實SharePoint在開始之初,其只是一個很小的產品,最開始是Sharepoint Team Service 1.0 ,其做爲Frontpage的一部分。服務器
2) 後來發佈SharePoint Team Service2.0. 其與第一個版本的最大區別在於:全部文檔的存儲都放到了數據庫中,而不是普通的文件文檔存儲在目錄結構中。並且支持版本控制了。app
3) 再後來發佈了SharePoint Team Service 3.0. 咱們一般稱之爲MOSS 2007 ( Microsoft Office SharePoint Portal Server), 其開始支持WFF及.NET 3.0了。該版本和Office 2007一塊兒發佈, 該版本的發佈標誌着微軟的下一代企業級協做軟件平臺的誕生。ide
4) 隨後Microsoft 發佈了SharePoint 2010。工具
5) 如今最新版本是SharePoint 2013. Office365上部署的SharePoint正是該版本。性能
2. 什麼是SharePoint?網站
不一樣的人眼裏, 會對SharePoint有不一樣的認識。在某些人眼裏,SharePoint是一個文檔存儲中心。還有些人認爲,SharePoint是信息共享的地方。或者認爲SharePoint是快速建立網站的工具;還有些人以爲SharePoint是一個構建企業級應用的平臺。
其實,這些觀點都沒有錯。不一樣人的眼裏,不一樣的用法,就能夠把SharePoint當成不一樣的東西。 對於那些把SharePoint看成文檔存儲的用戶來講,因此咱們能理解他會把SharePoint 和DropBox作比較,那是由於他沒有徹底理解SharePoint,只是單純地把SharePoint理解爲一個文檔存儲中心了。
實際上, SharePoint 確實能夠實現文檔存儲。並且SharePoint在早期,確實是用作文檔存儲的。 可是如今的SharePoint, 遠遠不止是一個文檔存儲中心了。
那麼,回到初始的問題:到底什麼是SharePoint呢? SharePoint是一個企業級的企業協做平臺。經過這個平臺,你能夠共享文檔,你能夠和同事協做完成某件任務,你能夠自動觸發某個工做流等,你甚至能夠和其餘的產品和平臺進行交互和通信。
上面說到的大多數功能,其實經過SharePoint的管理員的管理和設計,基本均可以達到了。可是,若是要實現一些更高級的與實際業務相符的定製功能,就須要進行SharePoint的二次開發了。所以,接下倆,咱們會從SharePoint開發者的角度,來看待SharePoint的結構了。
3. 開發者眼中的SharePoint結構。
若是從開發者角度來看待SharePoint的話, SharePoint的基本結構以下圖所示:
也就是說, SharePoint中的每個文檔,每個Item,每個Site等對象,均可以經過其相應的.NET 對象訪問到。
那麼問題來了,做爲開發者來說,能夠經過哪些方式和SharePoint來交互呢?
4. 開發者怎麼和SharePoint進行交互?
1) 自SharePoint支持二次開發之日起,最傳統的與SharePoint交互的方式就是SharePoint服務器端編程模型。全部服務器端的對象都是以SP打頭。好比SPSite, SPWeb.
2) 自SharePoint 2010開始,SharePoint引入了CSOM訪問模式 ( Client-side object model),這樣對於SharePoint對象的訪問代碼,再也不侷限於必定要運行在SharePoint Server端,而是經過客戶端發出請求,從而實現對SharePoint服務器的訪問。
在SharePoint2010中, 還只是支持.NET的客戶端。SharePoint的客戶端對象實際上和其服務器端對象基本是一一對應的關係,只是去掉了SP的前綴。好比服務器端的網站集爲SPSite,那麼客戶端爲Site。
只因此提出CSOM的訪問模式,是由於SharePoint已然成爲一個平臺,須要和其餘的系統進行交互;同時,若是直接在SharePoint 服務器上運行自定義代碼對SharePoint服務器對象進行訪問的話,若是代碼質量不高,會致使SharePoint性能急劇降低。而有些不理解的客戶,會怪罪SharePoint產品的問題。 爲了緩解這個問題,在服務器端編程模型中, 除了SharePoint場解決方案外, 咱們還引入了SharePoint 沙盒解決方案(Sandbox solution)。
在沙盒解決方案中,客戶自定義的服務器端代碼運行在單獨的進程中,而和SharePoint的獨立應用程序池進程w3wp.exe 隔離開來,從而必定程度上減輕對SharePoint服務器的影響。沙盒解決方案的SharePoint結構以下:
3) 自SharePoint 2010起,咱們還引入了SharePoint Powershell。 這樣,開發者能夠經過編寫PowerShell script來實現對SharePoint的訪問和設置。
4)自SharePoint 2013起,除了支持.NET客戶端外,其還引入了REST的支持,從而實現對多種類型客戶端的支持。
5)在SharePoint 2013起,SharePoint還引入了新的概念SharPoint App (SharePoint 程序)。相比於傳統SharePoint中的web part, SharePoint App是一種輕量級的程序, 其是經過CSOM的方式來實現對SharePoint的訪問。所以,SharePoint App能夠經過3種類型進行部署:
a) SharePoint Host ( 即SharePoint web app部署在SharePoint Server上,該web app只能經過JS, CSS, HTML5這些客戶端技術來訪問SharePoint)
b) Auto-Host ( 即SharePoint web app自動部署在SharePoint爲你自動建立的Windows Azure Websites上,部署在Windows Azure Websites上的web app能夠經過.NET等技術和SharePoint交互)
c) Provider host (即SharePoint web app部署在自定義的任何Server上,能夠是Windows Azure, 也能夠是你的on-premise server,或者是你的PHP等,能夠經過任何技術和SharePoint交互)
在我看來, Microsoft是要把SharePoint打形成一個協做平臺的入口。經過該統一入口,咱們能夠把SharePoint和其餘系統集成起來,而這些所謂的「其餘系統」多是部署在任何地方的企業應用。固然,Microsoft是但願「其餘系統」部署在Microsoft Azure上,從而打造一個所有基於Windows Azure的以SharePoint爲入口的平臺。
因此,那些認爲SharePoint Online只是一個文檔存儲中心的客戶,彷佛有些小看SharePoint了哦 :)
相關資源:
Microsoft Office 365免費試用連接: