开发 SharePoint Online 解决方案

SharePoint Online 为开发人员提供一个灵活稳固的开发平台,便于开发人员在针对 SharePoint 内部部署进行开发时使用可用的一组核心开发选项来创建自定义解决方案。

上次修改时间: 2011年10月17日

适用范围: SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Server 2010

本文内容
开发 SharePoint Online 解决方案
使用沙盒解决方案开发 SharePoint Online
通过客户端对象模型访问 SharePoint Online 数据

在 SharePoint Online 中提供

因为 SharePoint Online 管理员拥有和管理 SharePoint Online 中的网站集,而非整个服务器场安装,所以 SharePoint Online 的开发方法有必要限定在网站集范围内。

开发 SharePoint Online 解决方案

因为 SharePoint Online 中的开发范围限定在网站集级别,所以以下两项开发人员功能构成了创建自定义 SharePoint Online 解决方案的基础:

  • 沙盒解决方案   沙盒解决方案 为开发人员提供一个创建自定义代码解决方案的框架,并为 SharePoint Online 管理员提供一个激活自定义代码解决方案并将其上载到 SharePoint Online 的框架。沙盒解决方案在可以访问一组核心服务器对象模型的环境中运行。沙盒解决方案框架允许开发人员访问网站集级别以及该级别以下的主要对象。

  • 客户端对象模型   客户端对象模型提供服务器端 SharePoint 对象模型中核心对象的三种并行且相似的表示形式:Microsoft .NET Framework 托管模型、Microsoft Silverlight 模型和 ECMAScript(JavaScript、JScript) 模型。此客户端对象模型提供对 SharePoint 数据和功能的远程访问。

    此外,您可以使用客户端代码来访问 SharePoint Online 提供的 Web 服务以及外部数据源。因此,如果您必须访问沙盒解决方案中未包含、但可通过 SharePoint Online Web 服务获取的对象或外部数据,则客户端代码是一个有用的选项。

图 1 显示了这些开发选项:

  • 使用可供沙盒解决方案使用的服务器对象模型。

  • 利用客户端对象模型和客户端代码来访问可通过 SharePoint Web 服务获取的其他数据,或访问外部源中的数据。

请注意,SharePoint Web 部件实际在 SharePoint Online 中运行。但是,它引用的客户端代码将下载到客户端上并在客户端上执行,同时利用 SharePoint 客户端对象模型连接回 SharePoint Online 进行数据传输。

图 1. SharePoint Online 开发选项

SharePoint Online 中的开发选项

使用沙盒解决方案开发 SharePoint Online

对于 SharePoint Online 开发,您使用同一框架打包并部署要用于内部部署 SharePoint 安装的自定义代码解决方案:解决方案框架。在开发 SharePoint Online 时,您创建一种称为沙盒解决方案的特定类型的解决方案。沙盒解决方案允许 SharePoint Online 管理员上载他们自己的自定义代码解决方案。

沙盒解决方案的工作方式与服务器场(完全信任)解决方案非常类似。例如,沙盒解决方案允许您将用于扩展 SharePoint Online 的所有组件捆绑到一个称为解决方案文件的新文件中。沙盒解决方案是一个可部署、可重复使用的包,可包含一组功能、网站定义和程序集,您可以将它们应用于网站,也可以分别启用或禁用它们。您可以使用沙盒解决方案文件来部署 Web 部件包的内容,包括程序集、类资源、Web 部件描述 (.dwp) 文件和其他包组件。

沙盒解决方案与场解决方案的主要不同之处在于它们的部署方式,以及它们对服务器对象模型的访问程度。沙盒解决方案在一个可访问部分核心服务器对象模型的单独进程中运行。将使用一个解决方案库来存储所有沙盒解决方案。此外,还会为沙盒解决方案分配自定义代码访问安全 (CAS) 策略。

有关可在沙盒解决方案中使用的功能和元素,沙盒解决方案的 CAS 策略以及沙盒解决方案的资源监视的信息,请参阅沙盒解决方案体系结构

有关可在沙盒解决方案中使用的服务器对象模型的类型和成员的列表,请参阅沙盒解决方案中可用的 Microsoft.SharePoint.dll API

SharePoint Online 解决方案开发过程

以下是在 SharePoint Online 上开发、部署和激活沙盒解决方案的过程中的基本步骤:

  1. 开发和测试解决方案。

    若要创建或自定义 SharePoint Online 解决方案,您必须在安装了 SharePoint Server 2010 或 SharePoint Foundation 2010 的本地计算机上开发该解决方案。这包括调试该解决方案;您将无法直接从 SharePoint Online 调试该解决方案。

    在设置开发环境后,可以使用 Visual Studio 2010 创建您的沙盒解决方案。作为促进快速开发 SharePoint 解决方案的工具,Visual Studio 2010 提供诸如高级调试工具、IntelliSense、语句完成和项目模板之类的功能。Visual Studio 2010 提供一套专业的模板,用于创建要包括在沙盒解决方案中的 SharePoint 项。此外,Visual Studio 2010 还可以打开和编辑在 SharePoint Designer 2010 中创建的解决方案包 (.wsp) 文件,并允许设计人员和开发人员通过通用框架就解决方案开展密切协作。

    有关设置开发环境,包括硬件建议、操作系统和 Hyper-V 选项以及必备组件的详细信息,请参阅在 Windows Vista、Windows 7 和 Windows Server 2008 上设置 SharePoint 2010 开发环境

    有关如何使用和自定义 Visual Studio 2010 以最大程度地提高效率的信息,请参阅使用 Visual Studio 进行 SharePoint 开发

  2. 部署和激活解决方案。

    在本地计算机上创建和调试沙盒解决方案后,如果您不具有SharePoint Online 管理权限,则必须将该解决方案移交给 SharePoint Online 管理员。SharePoint Online 管理员将解决方案包 (.wsp) 文件上载到解决方案库以便激活。

    有关详细信息,请参阅Deploying a Sandboxed Solution

    若要使解决方案可供用户使用,您必须激活它。如果沙盒解决方案包包含范围设定为网站集级别的功能,将自动激活该功能。必须在位于 https://servername/site/subsite/_layouts/managefeatures.aspx 的"管理网站功能"页上激活范围设定为网站级别的任何功能。

  3. 监视激活的解决方案。

    根据激活的解决方案占用的资源来监视这些解决方案。可以使用多种度量类型(包括 CPU 执行时间、内存使用率和数据库查询时间)来监视解决方案性能。

图 2 显示 SharePoint Online 的沙盒解决方案开发过程的主要步骤。

图 2. SharePoint Online 中的沙盒解决方案开发

沙盒解决方案开发流程

有关沙盒解决方案的参考实现,请参阅参考实现:沙盒执行模型。

有关沙盒解决方案的培训,请参阅第 9 频道上的沙盒解决方案

SharePoint Online 中的其他解决方案限制

因为它是个多组织环境,所以在将沙盒解决方案上载到解决方案库时,除内部部署中安装的 SharePoint 执行的验证检查外,SharePoint Online 还会执行另一轮验证检查。如果沙盒解决方案包含调用以下任何命名空间的代码,则无法将其激活:

另外,无法从 SharePoint Online 的沙盒解决方案中的代码调用下列类型和成员:

通过客户端对象模型访问 SharePoint Online 数据

SharePoint Online 包括三种客户端对象模型,每种模型都提供在 Microsoft.SharePoint.dll 中定义的大致相同的一组服务器对象模型。JavaScript, .NET Framework 托管和 Silverlight 客户端对象模型均包括与 SharePoint 层次结构中网站集级别或较低级别的主要对象相对应的对象。这些对象模型提供一个一致且易于使用的、面向对象的系统,以便从远程客户端或服务器与 SharePoint 数据进行互操作。

由于针对客户端对象模型编写的代码在客户端上远程运行,因此它不存在与沙盒解决方案相同的限制,并且可以访问外部数据源。

为提高安全性和性能,客户端对象模型仅包含最相关的客户端开发 API,而不是包含服务器对象模型中表示的所有类型和成员。限制客户端库的大小可缩短在 Silverlight 和 JavaScript上下文中下载这些库所需的时间。另外,还设计了新的 API 以最大限度地减少必须为常见操作实施的往返数。

客户端对象模型通过代理 .js 文件和托管 .dll 文件提供,可在自定义应用程序中引用这些对象模型,就像引用其他对象模型一样。这些对象模型作为 Windows Communication Foundation (WCF) 服务来实现,但它们使用 Web 绑定来实现高效的请求批处理。所有操作本质上均为异步操作,命令被序列化到 XML 中,并通过一个 HTTP 请求发送到服务器。对于每个命令,会进行相应的服务器对象模型调用,并且服务器会向客户端返回一个 JavaScript Object Notation (JSON) 压缩格式的响应,代理会分析此响应并将其与适当对象相关联。

图 3 显示客户端对象模型的调用和响应流。

图 3. SharePoint 客户端对象模型体系结构

SharePoint 客户端对象模型体系结构

在客户端上运行并使用其中一个客户端对象模型的程序可以添加和移除列表,添加、更新和删除列表项,修改文档库中的文档,创建网站,管理项目权限,在页面中添加和移除 Web 部件,以及执行更多其他操作。

一些受支持的开发领域包括:

  • 网站集和网站

  • 列表、列表项、视图和列表架构

  • 文件和文件夹

  • Web、列表和列表项属性包

  • Web 部件

  • 安全性

  • 内容类型

  • 网站模板和网站集操作

备注

目前,您只能通过使用 Office ID 凭据以编程方式访问 SharePoint Online 内容。不能使用本地域中的用户凭据(例如使用 DirSync 工具导入的凭据)以编程方式访问 SharePoint Online 内容。

在 SharePoint Online 中使用 Silverlight 客户端对象模型

可以使用 Silverlight 和 Silverlight 客户端对象模型在 SharePoint Online 中创建丰富而复杂的应用程序。可以在 Silverlight (.xap) 应用程序自己的 .aspx 页中或者在 Web 部件中承载该应用程序。SharePoint Online 包括一个默认 Silverlight Web 部件,您也可以创建自定义 Web 部件作为沙盒解决方案的一部分。

要在 Silverlight Web 部件中使用 SharePoint Silverlight 对象模型,可以在 Visual Studio 2010 中创建 Silverlight 应用程序,并向项目的默认 Page.xaml.cs 文件中的 Page 类添加代码。在生成项目后,将该项目的应用程序包 (.xap) 文件上载到所选的任何文档库。将 Silverlight Web 部件插入到 Web 部件页中并将该 Web 部件的 URL 源指向 .xap 文件在文档库中的路径位置。该 Web 部件可包含通过 InitParameters 属性发送到 Silverlight 的自定义属性。

使用基于表单的身份验证 (FBA) 向 SharePoint Online 验证用户身份。

另外,也可以使用 Visual Studio 2010 创建在部署和激活后执行下列操作的单个解决方案 (.wsp) 文件:

  • 基于默认 Silverlight Web 部件部署 Web 部件,以承载您的 Silverlight 应用程序

  • 将打包为模块的 Silverlight 应用程序包 (.xap) 文件部署到指定的文档库位置

  • 在网页集中创建包含嵌入式 Web 部件的页面

在激活解决方案后,用户可以导航到创建的页面并与承载 Silverlight 应用程序的 Web 部件交互。该应用程序本身可以利用 SharePoint Silverlight 对象模型来远程访问 SharePoint Online 数据,即使在用户看来它似乎是承载在 SharePoint Online 中。

在 SharePoint Online 中使用 ECMAScript 对象模型

可以在 SharePoint Online 中以类似方式使用 JavaScript 对象模型。可以在 .aspx 页上的脚本块中包括使用 JavaScript 对象模型的自定义代码,也可以创建一个单独的 .js 文件以包括您的代码并从 .aspx 页引用它。有关详细信息,请参阅为 ECMAScript 设置应用程序页

了解有关 SharePoint 客户端对象模型的详细信息

有关客户端对象模型的更详细介绍,请参阅使用 SharePoint Foundation 2010 托管客户端对象模型。有关详细的技术信息和实现说明,请参阅 SharePoint 2010 SDK 中的以下节:

有关创建 Silverlight 客户端应用程序的信息,请参阅使用 Silverlight 对象模型如何:使用 SharePoint 项目部署 Silverlight 应用程序(该链接可能指向英文页面)

有关使用 SharePoint 客户端对象模型的参考实现示例,请参阅参考实现:客户端(该链接可能指向英文页面)

有关 API 引用信息,请参阅客户端类库和 ECMAScript 类库。

有关 SharePoint 客户端对象模型的培训,请参阅第 9 频道上的客户端对象模型

请参阅

概念

使用 SharePoint Designer 2010 自定义 SharePoint Online

开发 SharePoint Online 解决方案

SharePoint Online 中的 Web 服务

SharePoint Online 开发人员功能可用性组合

SharePoint Online 快速链接

其他资源

SharePoint Online 通用参考

沙盒解决方案体系结构

沙盒解决方案中可用的 Microsoft.SharePoint.dll API

使用 SharePoint Foundation 2010 托管客户端对象模型

使用 Silverlight 对象模型

为 ECMAScript 设置应用程序页

托管客户端对象模型

客户端对象模型准则

常见编程任务

客户端类库

ECMAScript 类库

SharePoint Online 开发人员资源中心