SharePoint 加载项体系结构和开发前景的重要方面

本文对 SharePoint 加载项一文中的信息进行了补充。

SharePoint 外接程序模型提供以下方法来托管 SharePoint 外接程序的组件:

  • 提供程序托管: 至少包含一个远程组件且可能还包含 SharePoint 组件的加载项。 非 SharePoint 组件由你的逻辑部署在硬件或云帐户上,或者使用你提供的安装程序和说明部署在客户的硬件或云帐户上。

  • SharePoint 托管:加载项仅包含 SharePoint 组件和在客户端上运行的逻辑。

若要详细了解托管选项以及如何选择这些选项,请参阅选择用于开发和托管 SharePoint 加载项的模式

加载项中的加载项 Web、主机 Web、功能和 SharePoint 组件

将 SharePoint 加载项安装到的网站称为“主机 Web”。 不过,SharePoint 加载项的重要组成部分(无论是 SharePoint 组件,还是外部组件)都不会部署到主机 Web。 外部组件部署到外部服务器或云帐户。 SharePoint 组件部署到有自己域的特殊网站。 这就称为“加载项 Web”。

仅一组数量有限的 UI 元素部署到主机 Web,这些元素向用户授予对加载项的其他组件的访问权限。 主机 Web 中的这些 UI 组件部署到主机 Web 功能中,这是加载项包(而不是 .wsp 文件)内的宽松功能。 部署到加载项 Web 的组件始终部署到 .wsp 文件内的功能中。 这两种功能都必须有 Web 范围。 SharePoint 加载项中的功能不可能有其他任何范围。

一般情况下,可以将任何不包含在 SharePoint 服务器上运行的自定义代码的 SharePoint 组件添加到 SharePoint 加载项(并部署到加载项 Web)。 不过,在组件的部署方式和位置方面,存在一些例外情况和细微差别。 若要详细了解这些细微差别以及加载项中的主机 Web、独立加载项 Web 和功能,请参阅 SharePoint 中的主机 Web、加载项 Web 和 SharePoint 组件

通过 UI 访问加载项

在网站上安装 SharePoint 外接程序时,该加载项将列在主机 Web 的“ 网站内容 ”页上。 用户可以从该页面中启动此加载项。 以这种方式打开时,该加载项将在全屏模式下运行。

SharePoint 加载项的另一种呈现方式是通过加载项部件,即 ClientWebPart 类表示的 Web 部件类型。 这种类型的 Web 部件其实就是托管加载项页面的 IFrame 包装器。 在最简单的情况下,Web 部件的唯一重要属性是指向该页面的 URL。

不过,Web 部件也可以有自定义属性,用户能够在“工具部件”中设置这些属性。 例如,此类属性可用于设置上下文信息,如用户的邮政编码。 若要在加载项中添加此类加载项部件,请在加载项中创建主机 Web 功能,并添加声明性 Web 部件标记。 与其他任何 Web 部件类似,它会显示在 SharePoint UI 中,用户可以从中添加 Web 部件。 如果需要更多可变性,可以与加载项一起部署多个加载项部件。 例如,在天气加载项中,可以使用一个加载项部件显示当前天气,并使用另一个加载项部件显示每周天气预报。 两个部件的尺寸和功能可以不同。

注意

您也可以将加载项部件部署到加载项 Web。 若要实现此目标,Web 部件的标记应是外接程序包中 .wsp 文件中的功能的一部分,而不是主机 Web 功能中的一部分。

建议尽可能尝试为加载项设计 SharePoint 外观,尽管这不是一项强制性要求,也不一定是最佳选择。 若要详细了解用户体验指南,请参阅 SharePoint 加载项的用户体验设计

例如,存在一个名为 app.master 的特殊母版页。 此页经过优化,可供加载项页面使用。app.master 页面是 SharePoint 中包含的新网站定义的一部分。

另一种有助于加载项保持与 SharePoint 一致的外观的工具是,SharePoint 随附的部件版式控制。 借助此控制,可以将 SharePoint 导航标题区域添加到加载项页面(包括外部托管的页面)。 若要详细了解 SharePoint 加载项中的用户体验设计,请参阅 SharePoint 加载项的用户体验设计。若要详细了解部件版式控制,请参阅在 SharePoint 加载项中使用客户端部件版式控制

加载项包结构

SharePoint 加载项包是文件扩展名为“.app”且符合开放打包约定 (OPC) 的文件。 (此文件的打开方式为,先添加“.zip”作为文件名的额外扩展名,再在 Windows 资源管理器中打开文件)。其中包含加载项清单,指定了加载项的特定属性和 SharePoint 安装基础结构说明。 若要详细了解加载项清单和加载项包,请参阅了解 SharePoint 加载项应用清单结构和加载项包

SharePoint 加载项的权限、身份验证和授权

SharePoint 引入了新的加载项权限和安全系统。

加载项权限

SharePoint 外接程序具有权限,就像用户和组一样。 这使加载项能够具有一组权限,这组权限不同于正在执行该加载项的用户的权限。

必须在外接程序清单文件中请求外接程序运行所需的权限。 添加加载项的用户必须授予这些请求,并且用户只能授予其作为用户拥有的权限。 授予必须针对所有请求的权限,或者不授予这些权限,以简化用户和开发人员的权限管理。 (外接程序主体始终对外接程序 Web 拥有完全控制权限,因此它只需请求对主机 Web 中的 SharePoint 资源或外接程序 web.)

若要详细了解加载项权限,请参阅 SharePoint 中的加载项权限

选择性委派和授权

无论是要启动加载项的用户,还是要向加载项授予对资源的访问权限的资源所有者,都无需向加载项提供自己的凭据或密码。 相反,SharePoint 支持用户和资源所有者仅授予加载项请求获取的特定权限。 为此,SharePoint 使用事务协议 OAuth 2.0。 若要详细了解 SharePoint 中的 OAuth,请参阅 SharePoint 加载项的上下文标记 OAuth 流

跨域访问

如果 SharePoint 加载项包括使用 JavaScript 作为数据访问逻辑的远程 Web 应用,可以使用 JavaScript 跨域库,获取对安装加载项的租赁中 SharePoint 数据的授权访问权限。 有关详细信息,请参阅使用跨域库从加载项访问 SharePoint 数据

加载项生命周期

SharePoint 加载项生命周期包括发布、安装、升级和卸载。 若要详细了解这些主题,请参阅发布 SharePoint 加载项部署和安装 SharePoint 加载项:方法和选项SharePoint 加载项更新过程

另请注意,租户管理员还可以使用一种机制,将 SharePoint 加载项批量安装到多个网站中。 有关详细信息,请参阅 SharePoint 加载项的租赁和部署范围

SharePoint 加载项中的数据存储

SharePoint 外接程序可以创建和访问任何类型的数据,包括结构化数据、文档和多媒体文件。 此数据可以存储在 SharePoint 或外部位置中。

结构化数据存储选项

SharePoint 加载项可以在 SharePoint 内外以及 Microsoft 平台和非 Microsoft 平台上使用几乎任何一种结构化数据存储。 可以在下面列出的一些位置上存储 SharePoint 加载项的结构化数据:

  • 加载项 Web 中的 SharePoint 列表
  • SQL Azure
  • 通过 Microsoft Business Connectivity Services (BCS) 连接到 SharePoint 的外部数据源
  • 非 Microsoft 云服务
  • 自己服务器上的数据库

提示

到一定时候可能会升级 SharePoint 加载项。 如果 SharePoint 加载项中的 SharePoint 组件部署到加载项 Web,升级过程会完整复制加载项 Web。 因此,如果加载项 Web 中的 SharePoint 列表非常大,便会让升级过程变得非常耗时,并占用内容数据库服务器上的大量处理器资源。 应该避免将“大数据”放到加载项 Web 上的 SharePoint 列表中。

非结构化数据存储选项

SharePoint 外接程序生成或使用的文档、图像、视频、音频文件以及其他类型的非结构化数据可以存储在 SharePoint 内部或外部。 文档库是文档的最佳选择,并且可以通过 SharePoint 搜索来搜索文档库。 网站资产库通常是多媒体文件的最佳选择。

其他选项包括 Microsoft Azure 帐户或自己的服务器上的 Blob 存储。 您还可以在一些非 Microsoft 平台上或云服务中存储文件。

加载项设置和其他元数据存储选项

可以在多个位置上存储 SharePoint 加载项的元数据(如用户首选项、位置信息和其他设置)。 隐藏 SharePoint 列表有时也是一个不错的选择。 还可以使用加载项 Web 的属性包。 对于提供程序托管加载项,另一种选择是使用 Microsoft Azure 表存储。

安全数据访问选项

当然,您的安全数据访问选项取决于您的存储选择。 数据访问和搜索将在另外几篇文章中进行详细讨论。 有关详细信息,请参阅 SharePoint 加载项的安全数据访问和客户端对象模型

管理加载项

网站集管理员和租户管理员可以监视加载项,以及更改分配给加载项的资源。 此外,加载项商店的 Microsoft 人员可以标记加载项并禁用它们。

若要详细了解如何管理加载项,请参阅 TechNet 上的安装和管理 SharePoint 加载项

监视加载项

SharePoint 支持监视加载项的运行状况,并在 UI 中显示此类信息,以供网站所有者、租户管理员和场管理员查看。 有关监视系统的大部分文档都位于 TechNet 上;例如监视 SharePoint 加载项。此部分只是简要概述了如何监视所销售的加载项。

某些类型的数据按应用报告,而其他类型的数据按应用实例报告。 监视框架报告的主要项目如下:

  • 加载项的使用情况,如已安装应用程序的次数(创建新实例)。
  • 每个加载项实例的服务器资源消耗。
  • 每个加载项实例的安装、升级和运行时错误。
  • 每个加载项实例的整体运行状况指示器(绿色、黄色和红色)。

如果加载项包含 Azure 网站组件,监视框架还会每小时轮询一次 Azure,检查是否有错误数据,并在 SharePoint UI 中报告关键错误和存储配额数据。 但不会报告 Azure SQL 数据库错误。

利用监视框架提供的信息,管理员可以确定其加载项采购预算是否精打细算,他们是否必须向加载项部署更多资源,以及他们是否必须禁用未正常工作的加载项。

注册加载项依赖项

如果您的 SharePoint 外接程序依赖于不可用且无法在外接程序 Web 上提供的 SharePoint 功能,则它将无法正常工作,并且客户会提出投诉。 通过在加载项清单中注册您的加载项的依赖项,您可以确保在未提供必备服务和功能的情况下,不会安装您的加载项。 SharePoint 外接程序的安装基础结构将检查这些先决条件,如果其中任何先决条件不可用,它将阻止安装加载项。

对于 Excel、Access 或 Visio Services 等服务,基础结构会验证是否已安装并许可相应服务。

对于任务列表等功能,基础结构会验证相应功能是否已部署且:

  • 服务器场WebApplication网站 (网站集) 范围内激活

  • 可通过 Web 范围在安装加载项时创建的加载项 Web 上激活。

注意

加载项安装基础结构会自动在创建的加载项 Web 上激活此类功能。

以下各节提供了注册必备组件所需的详细信息。

使用权限请求隐式注册依赖项

当您的加载项需要访问加载项 Web 之外的 SharePoint 组件时,它必须在加载项清单的 AppPermissionRequests 部分请求访问这些资源的权限。 这些权限请求还推动了必备组件注册,因为 SharePoint 将从您的加载项请求的权限推断加载项需要使用某些 SharePoint 功能。 在许多情况下,SharePoint 可以推断您的加载项需要的所有功能,因此不必阅读本主题的其余各节。 但是,额外的依赖项注册没有害处。

使用 AppPrerequisite 显式注册依赖项

如果加载项的依赖项未由其权限请求暗示,请在加载项清单中使用 AppPrerequisite 元素注册各个依赖项。 此元素有下列三个属性:TypeID 和(可选)MinimumVersion

Type 有下列三个可取的必备组件值:FeatureCapablilityAutoProvisioning。 Feature 必备组件值就是指必须在加载项 Web 上或在包括加载项 Web 的更广范围内部署并激活的 SharePoint 功能。 Capability 是指一组必须在加载项 Web 上激活的相关功能和服务。 (将在下一部分中介绍 AutoProvisioning。)

可选的 MinimumVersion 指定您的加载项需要的特性或功能的最低版本。 属性值的格式为 n.n.n.n.n;例如 15.0.0.0

ID 指定必须有哪种 Feature 或 Capability。 如果 TypeFeatureID 为 Feature 的 GUID,不仅用括号括住,还用连字符相连;例如:{151D22D9-95A8-4904-A0A3-22E4DB85D1E0}。 如果 TypeCapabilityID 为 Capability 的 GUID。 下面列出了 Capability。 若要查找 Capability 的 GUID,请参阅 AppPrerequisite 元素 (AppPrerequisiteCollection complexType)(SharePoint 加载项清单)

  • Access Services 2010
  • Access Services
  • Managed Metadata Web Service
  • PowerPoint Services
  • Secure Store Services
  • 机器翻译服务
  • User Profile Service
  • Visio Graphics Service
  • 工作管理服务
  • Duet
  • 工作流
  • 搜索
  • EDU

下面是注册工作流功能的原始 AppPrerequisites 标记的示例。 如果使用 Visual Studio,请在设计器工具中编辑加载项清单。

<AppPrerequisites>
  <AppPrerequisite Type="Capability" ID="{CDD8F991-B459-4512-8048-03D5A03FF27E}" MinimumVersion="15.0.0.0" />
</ AppPrerequisites>

本节内容

另请参阅