早在2011年时候,就想过要翻译这书SharePoint的经典之作,但是最终还没坚持下来。时隔两年,再次提笔,这次一定要坚持翻完。由于是第一次翻译,加上本人水平有限,不免有错误及翻译不当的地方,还请各位多提宝贵意见及勘误。您的支持,是对我最大的支持及鼓励。
第一章 SharePoint 2010开发者路线图
除非你不问世事,或者是去搞云计算了,否则你一定已经注意到了SharePoint变得越来越火了。在过去短短的几年时间里,SharePoint的销售额就已经超过了数10亿美金。可以毫不夸张的讲,SharePoint已经迈进了主流软件产品的行列。每天都有全球数百万的用户在使用SharePoint, 这些用户不仅包括普通的业务员,一线经理,企业高管,还包括网站管理员,系统管理员以及开发人员。
截止这一本书出版时(2011年),微软共发布了4个版本的SharePoint,详见表1-1。每次发布都会包含两个产品,一个是仅提供核心功能的免费版本,另一个则是在其基础之上增加很多功能的商业版本。收费版本,以服务器端及客户端访问许可的方式出售。
年份 | 内核版本 | 商业版本 |
2001 | SharePoint Team Services | SharePoint Portal Server 2001 |
2003 | Windows SharePoint Services 2.0 | Microsoft SharePoint Portal Server 2003 |
2007 | Windows SharePoint Services 3.0 | Microsoft Office SharePoint Server 2007 |
2010 | Microsoft SharePoint Foundation | Microsoft SharePoint Server 2010 |
SharePoint 2001提供了一个,允许普通用户根据需求,自助创建站点、列表以及文档库的环境。这个环境是以数据驱动为导向,并基于Sql Server实现的。通过在数据库中,增加记录来跟踪站点及列表的创建。但是这个版本有一些先天性的不足。首先,对站点进行自定义的过程非常的繁琐。其次,上传到文档库中的文件,被存放在前端服务的硬盘上。这导致无法通过增加服务器场的前端服务器来对其进行扩展。
SharePoint 2003, 是第一个基于 .Net Framework 及Asp.net 来构建的版本。 由此,开发人员可通过Web Part及Event Handlers(事件处理器)来扩展SharePoint。此外,这个版本还修改了文档库的实现机制,将文件存放到后端的数据库,而不在是前端服务的硬盘上。这一改动,使得通过增加服务器场的前端服务器,来扩展SharePoint变成了可能。
SharePoint 2007在其基础架构上,引入许多新的概念。这些概念包括站点列,内容类型,features 以及solution packages。微软同进还增强了SharePoint与Asp.net之间的集成,使得Asp.net开发人员可以使用他们所熟悉的Asp.net组件,如模板页,用户控件,navigation providers,authentication providers, 自定义HttpModule等来扩展SharePoint。
SharePoint 2010是SharePoint的第四个版本,也是本书出版时的最新版本。它包括Microsoft SharePoint Foundation(内核、免费版本)和Microsoft SharePoint Server 2010(商业版本)。这个章节的主要目标是让您对SharePoint有一个较高层次的认识。除此之外,你还将学习到SharePoint Server是如果通过扩展SharePoint Foundation,来为增加额外的功能及商业价值。
SharePoint Foundation
SharePoint Foundation在内核层次上对SharePoint2007做了很大的改动。对于使用过2007的用户而言,它在浏览器上的用户体验有了一个质的的飞跃。2007的UI已经过时了,它的UI设计完全没有遵循当前的HTML标签,甚至没有包含任何web 2.0的概念。这些限制,严重的影响了它的可访问性及跨浏览器特性。2007在用户体验上的最大的败笔可以总结为两点:没有必要的服务端回发,莫名奇妙的页面跳转。
SharePoint 2010通过引入新的以Ajax驱动的UI,极大的增强了用户体验。SharePoint 2010的页面通过借助JavaScript的异步访问,消除了不必要的服务端回发。SharePoint 2010还通过inline editing和模式对话框消除了莫名奇妙的页面跳转。最后,SharePoint 2010还通过引用服务端Ribbon来增强用户体验。借助服务端Ribbon, 用户不必离开当前页面,便可查找和执行大量的上下文命令。
SharePoint 2010除了提升用户体验外,还带来了其它大量的增强点。表1-2列出了一些对于SharePoint 2007的开发人员来讲,比较感兴趣的点。这些主题将贯穿整本书。
表1-2:SharePoint 2010针对开发人员的增强点
增强点 | 优势 |
服务运用程序架构 | 重新设计架构,可方便的跨运用程序或服务器场共享资源 |
Windows PowerShell 的支持 | 可以直接使用PowerShell(windows上的管理脚本)来管理SharePoint |
Feature 的版本化及升级 | Feature也直接版本化及升级了 |
基于Visual Studio 2010的SharePoint 2010开发工具 | 一流的SharePoint开发体验 |
纱箱解决方案 | 可以在站点集级别部署解决方案 |
New features for throttling lists and controlling query execution | 通过控制列表数量及低效的查询,提高服务器场的稳定性 |
New events for sites, lists, and workflows | 允许开发人员监听更多的事件 |
LINQ to SharePoint provider | 可以直接使用Linq访问List的数据 |
REST-based access to SharePoint list items | 可使用基于REST风格的Web 服务跨网络访问SharePoint |
Client-side object model | 在跨网络时使用.net, Silverlight,JavaScript 访问SharePoint,仍然可利用SharePoint对象模型 |
Enhanced support for integrating Silverlight applications | 可以方便的开发和部署Silverlight |
Claims-based security | 新的认证模式,可方便的扩展外面用户的可访问性 |
Business Connectivity Services (BCS) and external lists | 增强的可读写BCS |
.NET Assembly Connectors for BCS | 可以方便与任何数据源集成 |
SharePoint Foundation Architecture
从本质上讲,SharePoint Foundation 只是一个供给引擎而已。它的设计理念,其实就是利用基于Web的模板来创建站点,列表,文档库并在里边存储和管理内容。模板被用于创建站点以及站点内的各种元素,例如列表,页面及web part.
SharePoint 对于面临创建及管理大量网站的企业及组织而言,尤其有用。因为它显著的减少了所需做的工作。一个IT管理员,甚至是一个普通的业务人员,都可以轻松在一分钟内,通过在浏览器里点点鼠标来创建一个基于SharePoint的网站。创建网站的内容如列表或页面,也如创建站点一样简单。
SharePoint会通过添加或修改数据库记录,来处理好所有创建站点及内容的细节。数据库管理员也不需求去创建新的数据库或数据表。Asp.net开发人员也不需要创建新的网站来提供用户接口。系统管理员,也不需要在前端服务器上复制任何文件,或对IIS进行配置。这就是SharePoint的魅力所在。
SharePoint的架构被特意的设计成在服务器场内运行。图1-1,展示一个具有两个Web前端加一个数据库服务器的简单服务器场架构。在具有多个前端服务器的应该场景中,一般都需要有一个网络负载均衡来处理HTTP的请求,将请求分发到适当的web前端服务器。
图1-1:SharePoint通过设计具有多前端的Web服务器场来实现其可扩展性
SharePoint Foundation 和 SharePoint Server 2010都只有64位的版本,可以被安装到64位的Windows Server 2008 或 Windows Server 2008 R2。如果是搭建开发环境的话,也可以把它们安装到64位的客户端操作系统,比如Windows 7 或 Windows Vista。
SharePoint 2010借助前端Web服务器上的IIS 7来监听Http请求,同时使用IIS和应用程序池架构来管理服务端的工作进程。SharePoint 2010的运行时环境是作为一个服务端的进程来运行的,这个进程的名称为w3wp.exe,它是由IIS的运行程序池启动和执行的。详情请见图1-2,从这个图片,可以发现SharePoint是构建在.NET Framework 3.5 和 ASP.NET 3.5 Service Pack 1之上的。
图1-2: SharePoint运行时被加载到运行ASP.NET 3.5的IIS 应用程序池中
SharePoint 2007是构建在.net 3.0之上的,并且也可以通过修改Web前端服务器的配置,来使其支持.net 3.5。但是由于各方面的原因,实现这个配置其实是非常困难的。因此,大部的SharePoint开发,都没有使用到.net 3.5所引入的新开发优势。相比SharePoint 2007,SharePoint 2010天生就支持.net 3.5,以及3.5所引入的新特性,比如Ajax, Linq还有Silverlight。本收假设大部分从07迁移到10的SharePoint开发,都是第一次使用.net 3.5的新特性。
同时,你还应该注意到,SharePoint 2010的最初版本,并不支持.net 4.0。直到撰写本书为止,微软还尚未发布任何消息,称SharePoint将支持.net 4.0。
SharePoint Farms (SharePoint服务器场)
所有的SharePoint部署,都是基于服务器场的概念来部署的。简单来说,服务器场就是一台或多台服务器协同工作,一同为客户提供SharePoint相关功能。在一些比较简单的应用场景下,你可将所有SharePoint相关的服务及组件安装并配置到单台服务器上。在真实的生产环境中,一个典型服务器场,都会包含一台独立的专用的Sql Server数据库服务器,同时还包含多台前端服务器,如图1-3所示。在稍后的章节,你还将看到,一个服务器场,除了包含一个数据库服务器,多台前端服务器外,也还可以包含一个或多个应用程序服务器。
图1-3: 你可以使用单服务器场的模式来搭建开发环境
每个SharePoint服务场,都运行着一个唯一的称之为配置数据库的数据库。每当创建新的服务器场时,SharePoint都会创建一个配置数据库,并来用保存服务场级别的配置信息。例如,配置数据库保存着服务场包含的Web前端服务器信息,同时还保存对服务器常具有管理权限的用户信息。
在搭建开发环境时,最好是在单一服务器场上安装和配置。记住,你可以选择在客户端操作系统 (如Windows 7)上安装和配置SharePoint。如果你一定要在客户端操作系统上搭建开发环境的话,最佳实践是在64位Windows 7构建。
如果工作环境允许的话,还是应当考虑在64位的Windows Server 2008 或 Windows Server 2008 R2.安装SharePoint 2010。一种做法是直接在物理机的安装SharePoint 2010。另一个比较受欢迎的做法是在虚拟机上安装SharePoint 2010。你可以通过安装Windows Server 2008 R2并配置Hyper-V,来安装虚拟机。Hyper-V允许你创建虚拟机,并在虚拟机里安装64位的Windows Server 2008 R2 和SharePoint Server 2010。
在服务器端操作系统(比如Windows Server 2008 R2)上搭建SharePoint开发环境,具有一个关键的优势,那就是可以安装和配置活动目录,以便于更一步的模拟真实的生产环境。图1=3展示了安装在SharePoint开发环境上的软件层次结构。
作为一个SharePoint开发人员,请一定要记住,你面临的服务器场,将可能是各种各样配置及结构的。虽然你多半是都是在单一服务器上开发及测试代码的,但它几乎不会是你的代码即将被部署到的服务器场类型。如果你认为生产环境服务器场和开发环境差不多,那你就大错特错了。
许多已经投入到SharePoint开发的公司,都会把它们的服务器场划分为三类。
1. 开发服务器场:开发人员在这个环境开发并调试
2. Staging服务器场 : 模拟真实的生产环境,并用来测试SharePoint解决方案。一般情况下,不会在Stage环境中的服务器上安装开发工具。一旦SharePoint解决方案在Stage上通过测试,它便可以部署到生产环境上了。
3. 生产服务器场: 最终用户真正使用的环境。