SharePoint 2013 开发——概述
博客地址:http://blog.csdn.net/FoxDave
近来阅读SharePoint 2013开发一书,带着与大家一起分享其中的内容。
部署场景:
本地部署(On-Premise Deployment)、O365部署(Office 365 Deployment)、托管部署(Hosted Deployment)和混合部署(Hybrid Deployment)。
包场景:
完全信任的场解决方案(Full-Trust Farm Solution)、部分信任的沙盒解决方案(Partial-Trust Sandboxed Solution)和SharePoint应用(Apps for SharePoint)。
编程模型:
说这个之前,我们先来大致地回顾一下SharePoint开发的历史,本人从2007版本开始接触,之前的就不做陈述了。
SharePoint 2007主要的开发手段是Server API和WebService(ASMX),并没有沙盒解决方案的概念,客户端对象模型也并未明确提出。也就是说,你的自定义代码要么运行在SharePoint的服务端,要么通过内置的Web服务((%COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\12\ISAPI,即_vti_bin这个URL路径下)托管在你自己的服务层中进行操作。
SharePoint 2007的客户端对象模型相当有限,在Core.js这个JS文件中实现(据书记载,在Windows SharePoint Services 2003的时候是OWS.js),该文件在SharePoint的大部分页面中被引用,不修改的话则仅包含很有限的逻辑处理操作。例如,Core.js提供了ECB的生成逻辑如下:
function AddDocLibMenuItems(m, ctx) {
if (typeof (Custom_AddDocLibMenuItems) != "undefined") {
if (Custom_AddDocLibMenuItems(m, ctx)) return;
}
// build the rest of OOTB ECB menu items
}
我们通过SharePoint Designer来插入Custom_AddDocLibMenuItems函数到SharePoint页面上来实现我们自己的逻辑,或者是使用内容编辑Web部件(CEWP)来插入自定义的JS脚本函数。这种方式能实现的东西很有限,而且灵活性很差,如果因为一些原因Core.js没有被加载完,那么我们的自定义扩展就不好用了。
在SharePoint 2010中,客户端对象模型(CSOM)被极大地改善了,客户端模型从根本上来说是叫做Client.svc的WCF服务,附带三种不同的代理:Silverlight、JavaScript和.NET托管客户端(C#或VB.NET)。下面的代码片段展示了如何应用客户端对象模型(JS、sp.js)执行异步查询操作:
ExecuteOrDelayUntilScriptLoaded(GetTitle, "sp.js");
function GetTitle() {
//Retrieve current client context
context = SP.ClientContext.get_current();
//Load the site
site = context.get_web(); context.load(site);
//Execute asynchronously with callbacks for successful or failed calls
context.executeQueryAsync(onQuerySucceeded, onQueryFailed);
}
接下来,到了SharePoint 2013。它极大地丰富了开发的对象模型,如下图。总体概括来说,有服务端对象模型(Server API)、客户端对象模型(CSOM)和Web服务(REST\OData Endpoint)。
最耀眼的就是跨平台的REST服务,但有一点,Server API无论何时都有其不可替代性,因为一些服务器端的定制、TimerJob等的开发工作只能用完全信任的场解决方案来部署。我们可以根据实际情况来选择合适的API进行开发工作,更多信息。微软方面推荐开发者遵循新的应用程序模型作为优先选择方式来构建SharePoint 2013自定义的应用程序。"don't make any new sandboxed solutions"和"build new farm solutions only you absolutely have to"。
在SharePoint 2013中,_vti_bin/client.svc作为别名_api存在,即REST,更容易辨认,调用起来更方便,架构如下图所示。
使用REST查询信息非常简单,如查询ID为1的联系人:
http://contoso.com/_api/web/lists/getByTitle('Contacts')/getItemByStringId('1')
又如,我们想删除某个联系人,用如下的代码片段:
removeItem = function (id) {
$.ajax(
{
url: _spPageContextInfo.webServerRelativeUrl + "/_api/web/lists/getByTitle('Contacts')/getItemByStringId('" + id + "')",
type: "DELETE",
headers:
{
"accept": "application/json",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"IF-MATCH": "*"
},
success: function (data) {
readAll();
},
error: function (err) {
alert(JSON.stringify(err));
}
}
);
}
另一方面,之前在SharePoint 2010中只能用服务端对象模型实现的如用户配置文件、工作流、搜索等方面的部分可以用客户端对象模型CSOM实现了。
下一篇我们将介绍SharePoint全新的模式——SharePoint APP。
SharePoint 2013 开发——概述的更多相关文章
- SharePoint 2013 开发教程
做了SharePoint有三年了,大家经常会问到,你的SharePoint是怎么学的,想想自己的水平,也不过是初级开发罢了.因为,SharePoint开发需要接触的东西太多了,Windows操作系统. ...
- sharepoint 2013 开发环境安装
Sharepoint 介绍 Sharepoint 可以帮助企业用户轻松完成日常工作中诸如文档审批.在线申请等业务流程,同时提供多种接口实现后台业务系统的集成,它将 Office 桌面端应用的优势结合 ...
- SharePoint 2013开发入门探索(二)- 列表操作
我们如何用代码对SharePoint列表做些例如增删改查的操作呢?如果您的程序可以部署到服务器上,就可以使用 服务器对象模型,因为服务器对象模型提供的功能最多,限制最少:否则可能要选择客户对象模型等其 ...
- SharePoint 2013开发入门探索(一)- 自定义列表
在SharePoint 2013中创建自定义列表的方式有很多,在网站内容页面添加应用程序就可以创建(站点内容-〉 您的应用程序),也可以通过SharePoint Designer 2013创建,而本文 ...
- SharePoint 2013 开发——搜索架构及扩展
博客地址:http://blog.csdn.net/FoxDave SharePoint 2013高度整合了搜索引擎,在一个场中只有一个搜索服务应用程序(SSA).它集成了FAST,只有一个代码库 ...
- SharePoint 2013 开发——其他社交功能
博客地址:http://blog.csdn.net/FoxDave 上一篇讲了如何获取用户配置文件的相关属性,它属于SharePoint 2013社交功能的一个小的构成部分.社交功能是SharePoi ...
- SharePoint 2013开发环境准备一些小事项
开发慢慢向着SharePoint 2013迁移,环境也开始慢慢准备起来了.由于FAST Search的集成,和缓存服务的加入,SharePoint 2013对开发机器要求的不是一般的高.这里介绍一下如 ...
- SharePoint 2013 开发——开发自定义操作APP
博客地址:http://blog.csdn.net/FoxDave 自定义操作即我们所说的Ribbon和ECB(Edit Control Block),在SharePoint 2013之前,我们可以 ...
- SharePoint 2013 开发——Provider-hosted APP准备工作
博客地址:http://blog.csdn.net/FoxDave 后续的内容我们来一步一步开发一个SharePoint Porvider-hosted APP,本篇主要介绍一些准备工作. Sha ...
随机推荐
- xcode ___gxx_personality_v0" 编译错误
xcode ___gxx_personality_v0" 编译错误 Undefined symbols for architecture i386: "___gxx_persona ...
- Epplus使用教程1(基本介绍)
1.前言 目前Epplus的介绍中文资料很少,我也一直在摸索中使用它,以下是我在使用过程中得到的经验,写出来供大家参考.本系列共4章: 导出Excel之Epplus使用教程1(基本介绍) 导出Exce ...
- 20145218 《Java程序设计》第03次实验报告
北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.22 实验名称:敏捷开发与XP实践 一.实验内容 XP基础 XP核心实践 相 ...
- css 描述css reset的作用和用途。
描述css reset的作用和用途. 作用 : 因为浏览器的品种很多,每个浏览器的默认样式也是不同的.通过重新定义标签样式.“覆盖”浏览器的CSS默认属性. 有最简单的*{margin:0 ; pa ...
- 经典排序算法---冒泡排序(Bubble Sort)
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束 void Bubble ...
- Hadoop-env.sh[翻译]
说明: 某天 ,把hadoop-env.sh的注释看了看 , 感觉受益匪浅,于是想要写一篇告诉大家,文档是最靠谱的,鉴于我的水平有限,只能翻译大概,切勿吐槽,提建议请留言 摘要: 1.这个文件中只有J ...
- css的两种盒子模型
css的两种盒子模型:W3C标准盒子模型.IE盒子模型 两者的相同之处:都包含margin.border.padding.content 两者的不同之处:W3C标准盒子模型的content部分不包含其 ...
- uva------Help is needed for Dexter(11384)
Problem H Help is needed for Dexter Time Limit: 3 Second Dexter is tired of Dee Dee. So he decided t ...
- 初学java之常用组件
import javax.swing.*; import java.awt.*; class Win extends JFrame { JTextField mytext; // 设置一个文本区 JB ...
- 无法启动T-SQL 调试
问题详情 解决办法 1.要在服务器本机,不要远程 2.用实例名,不要用.或者local 3.以Windows身份验证的administrator或者sqlserver身份验证的sa登录