随着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语言的各类最佳实践。架构
本文是系列文章的起始。性能