在SharePoint解決方案中使用JavaScript (0)

隨着Web前段技術(JavaScript/HTML5)的日益發揚光大,在Web應用程序中,咱們開始更多的使用JavaScript。不少以往是放在服務器上運行的邏輯,如今都開始逐漸的向前段轉移。這種趨勢不須要做者多說,只要是Web開發人員(包括SharePoint工程師),都會有所體驗。而在SharePoint平臺,這種前端化的趨勢也是至關明顯的。當咱們構建SharePoint解決方案的時候,JavaScript代碼的數量在不斷的增多,而C#代碼的數量則相對的不斷減小,這個趨勢毋庸置疑。前端

 

在咱們的SharePoint應用中更多的使用JavaScript代碼的優勢有許多,其中我認爲最重要的一條,也是我在設計SharePoint應用架構時最常考慮的一點,就是"放過w3wp"原則。w3wp.exe進程是SharePoint用來運行自身Web應用程序的主進程,而所謂"放過w3wp",就是說的咱們所編寫的自定義代碼,應該儘可能不要放到w3wp.exe進程(或者其它SharePoint用來運行自身代碼的進程,好比用來運行Timer Job的進程)裏面運行。許多SharePoint項目所面臨的性能問題,都是由於開發團隊所編寫的C#代碼質量不佳,或有內存泄漏的問題(好比沒有正確的釋放SPSite和SPWeb對象),或包含有不恰當的長時間運行的代碼,這些代碼一旦運行在w3wp.exe進程裏面,輕則致使w3wp.exe進程佔用的內存飛漲,重則讓w3wp.exe進程hang掉。web

 

更多的使用JavaScript,就是貫徹"放過w3wp"原則的重要手段之一。舉一個很常見的場景,在SharePoint網站中的某個列表中,存儲有須要讓用戶看到的通知信息,客戶需求是但願用戶打開網站時,在首頁上就能看到他應該看到的通知。對於這個需求,一個理所固然的解決方案就是建立一個Web Part,這個Web Part使用C#代碼,經過SPQuery等對象,從列表中查詢到要顯示給用戶的通知,而後將通知顯示在Web Part中。若是使用這個方案,咱們的代碼就是運行在服務器上的w3wp.exe進程裏面,代碼的一切潛在的問題,都須要w3wp.exe來承擔。瀏覽器

 

利用SharePoint的沙盒解決方案(Sandboxed Solution),可讓咱們的C#代碼運行在服務器上單獨的沙盒進程中,避免對w3wp.exe的影響,這是實現"放過w3wp"原則的一個方法。可是另一個更靈活的方法,就是使用JavaScript前段技術,來實現咱們所須要的功能。對於上面這個需求,開發人員徹底能夠僅僅依靠JavaScript和SharePoint的JavaScript Object Model,就從列表中查詢到須要顯示給當前用戶的通知,而後將通知在首頁上顯示出來。因爲這些JavaScript代碼都是運行在用戶的瀏覽器中,它們對於SharePoint服務器的衝擊相比於C#代碼,就小不少了。服務器

 

因此,做爲一名SharePoint工程師,瞭解如何在你的自定義SharePoint應用中用正確的方式使用JavaScript,是很是重要的。這個系列文章的目的也在於此,其中大部份內容都是做者本人在實踐過程當中,所總結的一些我的經驗之談。可是,這個系列的文章並不會講述JavaScript這門語言自己以及SharePoint JavaScript Object Model,咱們也不會講述要如何正確的使用JavaScript語言 (雖然這對於工程師而言是很是很是重要的),已經有太多書籍和文章,講述了JavaScript語言的各類最佳實踐。架構

 

本文是系列文章的起始。性能

相關文章
相關標籤/搜索