SharePoint 2013 开发——概述

简介: 博客地址:http://blog.csdn.net/FoxDave近来阅读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。

相关文章
|
9月前
|
数据可视化 数据库
Office 2010 概述
3.1 office 2010 概述 3.1.1 office 2010版本及常用挂件 Office 2010组件 功能简介 Word 功能强大的文档处理工具,用来创建和百年技具有专业外观的文档,如信函、论文、报告等 Excel 用来执行计算、分析数据以及可视化电子表格中数据的应用程序 Outlook 电子邮件客户端工具,用来发送和接受电子邮件,管理日程、联系人和任务等 PowerPoint 幻灯片制作及演示文稿程序 OneNote 笔记记录管理工具,用来搜索、组织。查找及共享笔记和信息 Access 数据库管理程序,用来创建数据库和程序来跟踪与管理信息 Publisher 用来创建和发布专业
|
Web App开发 .NET API
一起谈.NET技术,SharePoint 2010 整合Silverlight 4应用 - 任务管理
  SharePoint 2010可以与Silverlight实现紧密集成。不管是在浏览器中运行的Silverlight程序还是单独的一个Silverlight程序,都能与SharePoint 2010实现很好的整合。
956 0
|
安全 开发者 CDN
SharePoint Framework解决方案管理参考(二)
博客地址:http://blog.csdn.net/FoxDave 使用外部脚本 在使用现有的JavaScript脚本库时,开发者可以选择将它们包含在web部件代码包中,或者从外部的URL加载。
1328 0
|
UED 开发者 前端开发
SharePoint Framework解决方案管理参考(一)
博客地址:http://blog.csdn.net/FoxDave 使用SPFx,你的企业可以轻松构建解决方案跟Office 365和SharePoint Online集成。
1480 0
|
数据库 数据安全/隐私保护
|
索引 C#
SharePoint 2016 文档库的新功能简介
  今天,重装了一下SharePoint 2016,想多了解了解,看到一些自己平时没注意的功能,或者新的功能,分享一下给大家。   1、界面上操作的变换,多了一排按钮,更像SharePoint Online了,呵呵;这一排按钮可以新建、上传、同步、共享等操作;   2、共享功能的界面有了新的...
1125 0