1.4 SharePoint API架构
SharePoint提供了丰富的API供开发人员使用。借助API,开发人员可以很容易地和SharePoint进行交互,而无须直接访问SharePoint的任何数据库。
值得一提的是,SharePoint API的兼容性做得非常好,虽然SharePoint历经了几次大的版本发布,但是旧版SharePoint开发的代码,基本上不需要什么修改,或者只需要很小的改动,就能适应新版本的SharePoint。也就是说,您在本书里学到的SharePoint开发,绝大多数都可以被使用到SharePoint 2016上。
这里需要提到的一点是,在开发和SharePoint交互的程序时,一定不要直接连接SharePoint数据库,一旦直接对数据库做了操作(包括但是不限于查询,添加,修改,删除),微软将不再对这个SharePoint场提供技术支持。
为了适用于不同的场景,微软开发了多套API,包括:
● 服务器端对象模型(Object Module,简称OM)
● .NET客户端对象模型
● Silverlight客户端对象模型
● 移动设备对象模型
● JaveScript客户端对象模型
● Web Service
● REST/OData终结点
图1-11所示是各种API的适用范围。
图1-11 各种API的适用范围
1.4.1 服务器端对象模型
这是一套基于.NET Framework的应用程序接口,引用这套API的程序必须运行在SharePoint服务器上(应用程序服务器或者Web前端服务器)。
服务器端对象模型的API存储在SharePoint服务器的以下目录:C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI 。打开这个文件夹,可以看到里面有很多的dll文件。最常用的就是Microsoft.SharePoint.dll。通过调用这个文件,几乎可以获取和修改SharePoint从Web应用程序到列表项/文档的任何内容。
1.4.2 托管客户端对象模型
这个是相对于JavaScript等非托管代码来说的。托管代码的客户端对象模型分为三种:
● .NET客户端对象模型
如果程序运行在非SharePoint服务器的计算机上,那么就要使用.NET客户端对象模型。.NET客户端模型的dll文件同样在C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI里面,最常用的是Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll。
● Silverlight客户端对象模型
这种API适用于Silverlight程序,功能几乎等同于.NET客户端对象模型。但是随着移动设备的发展,很多设备上的浏览器并不能支持Silverlight插件,因此这种程序并不多见,本书也不会讲解这种API。
● 移动设备客户端模型
Silverlight客户端对象模型的一个专用版本可用于Windows Phone设备。但是因为Silverlight和Windows Phone的使用率都很低,所以这种客户端模型我们也不会讲解。
1.4.3 JavaScript客户端对象模型
JavaScript客户端对象模型是一组JS库,开发人员通过引用这些库,就可以实现和SharePoint的交互。和托管客户端对象模型相比,这种方法是非常轻量级的,可以在任何支持JavaScript的浏览器中使用。JavaScript客户端对象模型的代码要运行在寄宿于SharePoint中的页面上。
图1-12是客户端对象模型的架构图。
图1-12 客户端对象模型架构图
从图1-12中可以看出,任何的客户端对象模型的请求,都发到了Client.svc上。Client.svc是寄宿于SharePoint服务器上的一个服务,它也被部署到了C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI,然后Client.svc调用服务器端对象模型,处理客户请求。
1.4.4 REST/OData终结点
SharePoint 2013实现了OData协议的Representational State Transfer (REST) Web服务,这样就可以通过HTTP请求对SharePoint列表数据执行增删改查操作。因为REST是一个标准协议,因此即使对SharePoint服务器/客户端对象模型不熟悉的开发人员,也可以快速上手。
1.4.5 Web Service
Web Service提供通过HTTP协议访问SharePoint的方法,在之前版本的SharePoint里就存在了。但是微软在SharePoint 2013里面宣布废弃了这个API,而是推荐使用客户端对象模型或者REST来代替。
该如何选择使用哪种SharePoint API?表1-2列举了一些情景。
表1-2 SharePoint API的使用选择