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

如果包含 SharePoint 组件的加载项已安装到网站上,则会列于“网站内容”页上,并可从中启动。 此列表是加载项的启动点,也是唯一必须添加到网站的内容,尽管可以根据需要添加其他特定内容(如自定义操作或加载项部件)。 若要了解这些启动方法,请参阅通过 UI 访问加载项

主机 Web、加载项 Web 和独立域

不同于上述 UI 元素,SharePoint 加载项组件和内容(如列表、内容类型、工作流和页面)部署到位于特殊独立域中的另一个网站。 此过程基本上对用户隐藏。 加载项部署到的特殊网站称为“加载项 Web”。 加载项安装到的网站称为“主机 Web”。 虽然加载项 Web 有自己的独立域,但它与主机 Web 位于同一网站集中。 (此规则的一个例外是使用租户范围安装外接程序。在这种情况下,外接程序 Web 位于公司外接程序目录的网站集中。)

图 1 展示了安装有两个 SharePoint 加载项的主机 Web。 加载项 1 有远程组件,但没有 SharePoint 组件,因此也就没有加载项 Web。 加载项 2 没有远程组件,但有两个 SharePoint 列表和一个工作流。 这些内容都已部署到独立子网站(SharePoint 加载项可以同时包含远程组件和 SharePoint 托管组件,尽管此关系图中的两个加载项都不是这样)。

图 1:安装了提供程序托管加载项和 SharePoint 托管加载项的主机 Web

主机 Web、应用程序 Web 及其组件。

例如,假设在具有以下 URL 的主机网站上安装了一个外接程序,此外接程序不仅仅具有 UI 元素,还具有可以部署到主机 Web 的 SharePoint 组件:

https://www.fabrikam.com/sites/Marketing

SharePoint 外接程序将部署到新创建的网站,此网站具有如下所示的 URL:

http://add-in-bdf2016ea7dacb.fabrikamadd-ins.com/sites/Marketing/Scheduler

请注意,此 URL 的结构如下:

https://` _Add-in_Prefix_ `-` _Add-in_ID_ `.` _Add-in_Base_Domain_ `/` _Domain_Relative_URL_of_Host_Web_ `/` _Add-in_Name_

这些占位符的定义如下:

  • Add-in_Prefix 是管理中心场管理员设置的任何字符串。 默认值为“default”。在此示例中,管理员已将此更改为“外接程序”。
  • Add-in_ID 是安装加载项时内部生成的十六进制数。
  • Add-in_Base_Domain 是场管理员在管理中心内或使用 SharePoint 命令行管理程序设置的任意字符串。 得将此设置为 SharePoint Web 应用的子域,否则加载项隔离目的基本上就会落空。 在此示例中,管理员已经删除了“www.”并且将“外接程序”添加到公司名称中。 因此,加载项基域是 fabrikamadd-ins.com
  • Domain_Relative_URL_of_Host_Web 是父主机 Web 的相对 URL,在此示例中是 sites/Marketing
  • Add-in_Name 是 appmanifest.xml 文件中的 App 元素的 Name 属性的值。

将 SharePoint 组件部署到外接程序 Web 而不是部署到主机 Web 有两个主要的原因。 这两个原因都与安全性相关。

  • 加载项权限的强制实施: 在 SharePoint 外接程序模型中,外接程序具有自己的标识,并且其权限不一定与执行外接程序的用户的权限相同。 安装加载项并由加载项安装者授予这些外接程序权限时,只要用户具有加载项请求的所有权限,即会请求这些加载项权限。 (如果安装外接程序的用户没有外接程序请求的所有权限,则用户无法安装外接程序。) 通过为每个外接程序提供自己的域,SharePoint 可以可靠地识别外接程序发出的请求并验证加载项的权限。 有关加载项权限的详细信息,请参阅Add-in permissions

  • 跨域脚本安全性: 对于 JavaScript 方法调用,现代浏览器支持"相同的源策略"。 通过将每个 SharePoint 外接程序部署到其自己的域,SharePoint 可以利用浏览器的相同源策略,以确保 SharePoint 外接程序中的 JavaScript 不会执行任何其他域(从最终用户的角度来看,包括在其中安装了该外接程序的域)中的任何 JavaScript。

    SharePoint 还支持安全克服策略限制。 这样一来,SharePoint 加载项的远程组件可以从主机 Web 和加载项 Web 的公共父租赁中的任何网站查询数据等。 有关详细信息,请参阅使用跨域库从加载项访问 SharePoint 数据

SharePoint 加载项中可以包含的 SharePoint 组件类型

一般情况下,SharePoint 加载项可以包含下面列出的一个或多个组件。 除有一些例外情况外,这些组件必须部署到 SharePoint 解决方案包 (.wsp) 文件内的 Web 范围功能中。

注意

本文后面的 部署 SharePoint 组件的注意事项 部分将更详细地讨论用星号 (*) 标记的组件。

  • 功能(仅限 Web 范围)
  • 自定义的操作(包括快捷菜单项和功能区自定义)*
  • 远程事件接收器*
  • 引用 SharePoint (但不包括自定义 Web 部件的 Web 部件(包括外接程序部件)的标记) *
  • 供 SharePoint 页面使用的自定义级联样式表 (CSS) 文件
  • 要供 SharePoint 页面使用的自定义 JavaScript 文件
  • 模块(文件集)
  • 页面
  • 列表模板
  • 列表和库实例(仅适用于传统体验)
  • 自定义列表表单
  • 自定义列表视图
  • 自定义内容类型
  • 字段(属于 SharePoint 中内置的字段类型)
  • Microsoft 业务连接 Services (BCS) 模型 (Web 范围内的仅) 、基于模型的外部内容类型和使用内容类型的外部列表*
  • 工作流*
  • 属性包
  • Web 模板(但不是网站定义)*

不得在 SharePoint 加载项中部署其他任何类型的 SharePoint 组件。 若要详细了解有关 SharePoint 加载项可包含内容的限制,请参阅 SharePoint 加载项与 SharePoint 解决方案对比

部署 SharePoint 组件的注意事项

下面是与在外接程序中部署某些 SharePoint 组件类型有关的一些注意事项和详细信息。

  • 自定义操作: 除了可以将自定义操作添加到外接程序 Web 中之外,也可以将其添加到主机 Web 中。 为了将自定义操作添加到外接程序 Web 中,您可以将其包括在 .wsp 文件内的 Web 范围功能中,就像可包括添加到外接程序 Web 中的任何其他组件一样。 为了将自定义操作添加到主机 Web 中,您可以(甚至在外部外接程序中)将 CustomAction 标记包括在位于外接程序包内但在任何 .wsp 文件之外的功能中。 此类"散装"功能中的组件适用于主机 Web,不适用于外接程序 Web,因此此类型的功能称为主机 Web 功能。

  • Web 部件: 一种 Web 部件(外接程序部件)可以部署在外接程序中,加载项部件可以转到外接程序 Web 或主机 Web。 所有其他类型的 Web 部件都可以在外接程序中引用,但不能由它们部署。 如果将外接程序部件部署到主机 Web,则应该将其包括在主机 Web 功能中。

  • 远程事件接收器: 这些是 SharePoint 中的新增功能。 它们类似于经典 SharePoint 事件接收器,只是代码在云中运行。 这些在 SharePoint 托管的外接程序中不可用。

  • 工作流: SharePoint 中的工作流使用 Microsoft Azure 托管的工作流运行时,此工作流运行时是 SharePoint 中的新增内容。 使用 SharePoint 承载的工作流运行时的编码工作流无法包括在 SharePoint 外接程序中。 只允许存在声明性工作流或使用较新运行时的工作流。

  • Microsoft Business Connectivity Services (BCS) 模型、外部内容类型和外部列表:Business Data Connectivity (BDC) Service 模型通常具有比网站集更广的范围。 不过,如果 BDC Service 模型部署到加载项中,它的范围只能是加载项 Web。 加载项中的 BDC Service 模型不会存储在 BDC Service 共享的服务存储中, 而是在加载项 Web 中以文件形式存储。

  • Web 模板:在大多数情况下,都希望加载项 Web 实例化更适合加载项 Web 的新内置网站定义配置 APP#0。 (有关详细信息,请参阅通过 UI 访问加载项。)如果加载项包没有 WebTemplate 元素,SharePoint 就会自动使用 APP#0

    您也可以为外接程序 Web 定义一个自定义网站类型。 为此,需要执行以下两个主要步骤:

    注意

    加载项清单的新 WebTemplate 元素与功能中可包含的 WebTemplate 元素不是同一标记。 功能中可包含的 WebTemplate 元素定义了网站类型,而加载项清单的 WebTemplate 元素则直接确定了要使用的网站类型。 若要详细了解 SharePoint 加载项的加载项清单,请参阅加载项包结构

    谨慎

    请不要使用外接程序清单中的 WebTemplate 元素将任何内置 SharePoint 网站定义配置指定为外接程序 Web 的网站类型。 我们不支持对外接程序 Web 使用除 APP#0 之外的任何内置网站定义配置。

    有关网站定义配置和 Web 模板的详细信息,请参阅 使用网站模板和定义

另请参阅