SharePoint 品牌打造和网站预配解决方案
通过引入云外接程序模型和 SharePoint 外接程序,提供了对 SharePoint 网站现有的既定品牌打造和网站预配方式的替代解决方案。
到目前为止,你可能已经使用过 SharePoint 功能框架、网站模板、Web 模板和网站定义来预配你的网站和网站集。
本部分的文章将提供有关使用 SharePoint 外接程序预配和管理网站品牌打造(该模式有时称为远程预配)的信息。 远程预配模式将向你展示如何创建预配网站品牌打造和执行其他网站预配任务的自定义 SharePoint 外接程序。
本指南适用于 SharePoint Server 2013、SharePoint Server 2016 和 SharePoint Online。
你需要了解的 SharePoint 相关信息
若要使用 SharePoint 中的品牌打造和网站预配功能,你需要熟悉以下内容:
- 关键 SharePoint 术语和概念
- SharePoint 结构元素的层次结构:
- SharePoint 外接程序
- 文件系统和内容数据库,以及它们如何协同工作
- 文件自定义状态及其对升级的长期影响
- SharePoint 网站的类型以及使用各个类型的原因
- 使用 .NET 客户端对象模型 (CSOM) 和 REST API 的 SharePoint 中的客户端编程
术语和概念
下表列出了开始在远程设置模式中使用 SharePoint 网站设置和品牌打造时需要了解的有用术语和概念。
表 1:关键 SharePoint 术语和概念
术语或概念 | 说明 | 详细信息 |
---|---|---|
应用 Web | 从中部署外接程序的网站。 | SharePoint 中的主机 Web、外接程序 Web 和 SharePoint 组件 |
审批工作流 | 特定于发布网站的工作流,其中指定了由谁审批页面的发布以及何时发布。 | - 使用发布审批工作流 - SharePoint 2013 中的工作流入门 |
ClientContext | 在所有 SharePoint CSOM 和 JSOM 操作中占据“核心地位的中心”的对象。 | T:Microsoft.SharePoint.Client.ClientContext |
云外接程序模型 | SharePoint 外接程序是自包含功能,可扩展 SharePoint 网站的功能。 云外接程序模型可用于创作和交付安全可靠且灵活一致的 SharePoint 外接程序。 | SharePoint 外接程序概述 |
内容数据库 | 内容数据库存储网站集的所有内容,包括以下内容: - 文档库中的网站文档和文件 - 列表数据 - Web 部件属性 - 用户名和权限 |
SharePoint Server 中的数据库类型和说明 |
CSOM | 客户端对象模型。 用于使用 .NET Framework 编写 SharePoint 的客户端代码的模型。 | - 在 SharePoint 中使用具有外部数据的客户端对象模型入门 - [MS-CSOM]:SharePoint 客户端查询协议 - SharePoint .NET 服务器、CSOM、JSOM 和 REST API 索引 |
配置单元 | SharePoint 的物理文件;文件系统中的文件。 这些文件与存储在内容数据库中的内容有所不同。 下面是配置单元的位置。 %program files%/Common Files/Microsoft Shared/Web Server Extensions/15/ |
|
主机 Web | 在其中安装外接程序的网站。 | SharePoint 中的主机 Web、外接程序 Web 和 SharePoint 组件 |
OneDrive for Business | 用于存储和组织可在你的组织内共享的工作文档的个人库。 | - OneDrive for Business 不同于 OneDrive - OneDrive for Business 不同于团队网站 |
远程预配 | 在提供程序托管的外接程序中,通过使用运行在 SharePoint 之外的模板和代码来设置网站的模型。 | - SharePoint 2013 中的网站预配技术和远程预配 - 使用 SharePoint 2013 的相关应用预配自助服务网站 |
REST | 无状态的体系结构样式,提取体系结构元素并使用 HTTP 谓词从包含 XML 文件的网页读取和写入数据。 | 使用 REST 接口设置列表上的自定义权限 |
根网站 | 网站集内的第一个网站。 根网站有时也称为“Web 应用程序根”。 | |
SharePoint 外接程序 | (以前称为“SharePoint 相关应用”)通过云外接程序模型与常用 Web 标准和技术集成,以扩展 SharePoint 网站的功能的轻型 Web 应用程序。 | SharePoint 外接程序 |
SharePoint Online | Office 365 中基于云的 SharePoint 解决方案。 | SharePoint Online 通用参考 |
网站 | 一组共享相同所有者和管理设置(如权限)的网站。 | T:Microsoft.SharePoint.Client.Web |
网站集 | 一组共享相同所有者和管理设置(如权限)的网站。 | 在 SharePoint Server 中创建网站集 |
网站预配 | 为网站设置功能、结构、品牌和其他功能的过程。 | - SharePoint 2013 中的网站预配技术和远程预配 - 使用 SharePoint 2013 的相关应用预配自助服务网站 |
子网站 | SharePoint 网站集中的单个 SharePoint 网站。 子网站可以从父网站继承导航和权限,也可以具有独有的权限和导航。 你可以创建基于根网站集的子网站,也可以创建基于其他网站集的网站。 你可以选择从网站集继承权限或为子网站指定独有的权限。 |
结构元素的层次结构
从概念上说,SharePoint 对象的层次结构表示为容器:对象类型和层次结构类型包含层次结构中其下方的所有对象类型。 表 2 列出了 SharePoint 结构元素的层次结构。
表 2. SharePoint 结构元素的层次结构
对象类型(按层次结构顺序) | 说明 |
---|---|
Web 应用程序 | 存在于服务器上并响应来自浏览器的请求的应用程序。 Web 应用程序是 Internet 信息服务 (IIS) 中的中心结构。 在 SharePoint 中,Web 应用程序是具有唯一 URL 和在 SQL Server 上存储有单独的内容数据库的网站。 |
网站集 | 定义权限且可以根据配置为容器中的所有网站定义品牌打造某些方面的网站的容器。 |
网站 | 围绕一个中心主题进行组织的列表、库、结构、导航和外观元素的集合。 作为同一网站集中其他网站的子项的网站有时称为子网站。 子网站是存储在父网站的子文件夹中的网站。 子网站可以从其父网站继承权限和导航结构,否则管理和创作的权限可能对子网站是唯一的。 子网站可以拥有子级子网站。 |
应用、列表和文档库 | 内容和数据容器以特定结构进行组织。 母版页样式库是 SharePoint 2010 发布网站中的特别文档库,其中默认存储了所有的品牌打造元素(母版页、页面布局、JavaScript 文件、CSS 和图像)。 每个网站都有自己的母版页样式库。 在团队网站中,母版页来自网站,而不是网站集。 |
项目 | 外接程序、列表和文档库中包含的各部分内容或数据。 |
SharePoint 外接程序
SharePoint 外接程序是未安装在 SharePoint 主机服务器上的轻量级解决方案,这意味着它们不会对主机服务器发出太多 API 调用。 你可以使用云外接程序模型构建 SharePoint 外接程序。 用户可以从 AppSource(以前称为“Office 应用商店”)或从企业的应用程序目录发现和下载外接程序。 有关详细信息,请参阅 SharePoint 外接程序概述。
文件系统和内容数据库
要了解你的品牌打造选项以及网站自定义对升级和迁移的含义,你需要了解 SharePoint 文件系统和内容数据库,以及如何结合使用。
文件系统
SharePoint 在文件系统(“配置单元”)中存储文件。
在 SharePoint Server 2013 和 SharePoint Server 2016 中,此位置称为“15-hive”或“16-hive”。
以下是此位置的路径:
SharePoint Server 2013:%program files%/Common Files/Microsoft Shared/Web Server Extensions/15/
SharePoint Server 2016:%program files%/Common Files/Microsoft Shared/Web Server Extensions/16/
15-hive 和 16-hive 包括多个子文件夹,其中存储将在打造网站品牌和预配网站时要使用的文件。
内容数据库
内容数据库存储 SharePoint 内容对象(如网站集)。 部署 SharePoint Server 2013 或 SharePoint Server 2016 时,每个网站集自动安装有内容数据库。 网站集的所有内容都存储在一台服务器上的一个内容数据库中。 不过,内容数据库可以与多个网站集相关联,并能将内容数据库附加到 SharePoint Web 应用。 可能需要将一个内容数据库的内容移到另一个中,例如当内容大小很快就会超过内容数据库大小上限时。
内容数据库的某些特征因网站集的使用方式而异。 例如,网站通常为写入密集,而其他类型的内容(如只读文档)为读取密集。 内容的使用方式影响着内容数据库的各个方面,例如大小和性能。
文件自定义状态
SharePoint 文件和内容的状态会影响其应用更新,并控制 SharePoint 是否提供内容数据库或文件系统中的文件。 默认情况下,所有 SharePoint 文件均取消自定义并已制作幻像,且在 SharePoint 文件系统和内容数据库中位于匹配的状态。 当文件和/或内容数据库条目以特定方式使用或更改时,内容的状态的可能会受影响。
表 3. 文件和内容状态及其对升级的影响
文件或内容状态 | 定义 | 评论 |
---|---|---|
未自定义 | 与文件关联的一个属性,指示其尚未修改。 | 文件的多个副本可以指向同一个源。 这可以让设计师更加轻松地实施更改。 |
自定义 | 与文件关联的一个属性,指示其已修改。 | 在文件成为自定义的之后,应用广泛更新将变得更加困难。 请谨慎对待你自定义的内容。 作为一般规则,使用默认 SharePoint 文件和功能比自定义系统文件或引入需要手动更新的自定义项更好。 |
已制作副本 | 源存储在内容数据库外部的文件。 | 内容数据库中的指针(文件幻象)仍然存在,告知 SharePoint 在服务器的文件系统上查找文件源。 |
未制作副本 | 源文件的非自定义版本驻留在内容数据库中。 | 示例:SharePoint 2013 设计管理器创建沙盒解决方案来打包品牌打造文件。 它永远不会被添加到服务器的文件系统中。因此,根据定义,它的文件被视为未制作副本。 不过,它部署的文件仍处于非自定义状态。 |
注意
如果文件已自定义,则不会在安装新服务包或更新 SharePoint Online 服务时进行更新。
使用云外接程序模型进行品牌打造和网站预配
在 SharePoint Server 2013 或 SharePoint Server 2016 中,可以在 SharePoint 外接程序中使用自定义 CSOM 代码,通过品牌元素预配 SharePoint 网站集、网站和子网站。 此网站预配模式称为远程预配。 SharePoint 越来越专注于基于云的部署,因此创建此模式有助于使用 SharePoint 现成功能预配网站品牌,以降低复杂性和长期运营成本。
云外接程序模型有何作用?
有时,完全信任代码与云外接程序模型中的功能之间没有任何关联。 在基于 SharePoint 外接程序和云外接程序模型开发自定义项时,请考虑一种替代方法而不是直接转换,并努力让自定义项尽可能的简单。 下面是一些示例:
- 将事件接收器替换为远程事件接收器(请参阅在 SharePoint 外接程序中创建远程事件接收器)。
- 将网站模板、Web 模板和网站定义替换为远程预配。 这对子网站和网站集均适用。
- 将计时器作业替换为 Microsoft Azure。
有些东西不能使用云外接程序模型构建,例如 HTTP 模块和 HTTP 处理程序。 在你尝试复制云外接程序模型中的现有自定义项之前,首先考虑为什么构建这些自定义项,以及现成 SharePoint 功能能否正常运行。
远程预配模式
远程预配使用新的外接程序模式将预配逻辑完全移到 SharePoint 场以外。 此方法消除了在 SharePoint 场中使用功能框架或其他自定义项的需要,而使你能够控制 SharePoint 外部的自定义项。 通过此方法,能够在不影响 SharePoint 可用性的前提下更新和更改预配引擎。 有关功能框架的详细信息,请参阅 网站定义和预配:功能框架。
此部分详细介绍了远程预配模式的各个方面和实施。 你会发现,首先阅读有关模式的下列介绍文章将非常有用:
在远程预配模式的最简单实施中,预配要求存储在 SQL Server 或 Azure SQL 数据库或 XML 文件中,然后 SharePoint 外接程序将从数据源读取要求,从源位置读取品牌元素,并根据预配要求将品牌元素应用到目标网站。
品牌打造和预配代码示例遵循此事件顺序,以显示远程预配模式。
表 4. 基本远程预配顺序和相关示例
步骤 | 说明 | 示例 | 文章 |
---|---|---|---|
1 | 用户请求通过表单对网站进行更改,这将开启审批工作流。 用户通过请求表单提交的数据使用任何潜在的数据存储格式(SQL、Azure SQL、XML)进行存储。 | SharePoint 网站预配解决方案 | |
2 | 如果工作流获得审批,SharePoint 外接程序将调用存储的数据并根据用户在步骤 1 中提交的元数据预配网站。 | SharePoint 2013:使用工作流预配 SharePoint 网站(主机 Web) |
SharePoint 网站预配解决方案 |
3 | SharePoint 外接程序将预配范围限定为请求表单中的指示,方法是使用外接程序 Web 和内容数据库中提供的数据。 在此阶段中,将为网站预配适用的品牌元素。 | SharePoint 2013:使用 SharePoint 外接程序配置 CSS SharePoint 2013:使用 SharePoint 外接程序将主题应用到 SharePoint 网站 SharePoint 2013:打造 SharePoint OneDrive for Business 网站品牌 |
注意
表 4 列出了远程预配方案的典型步骤。 具体使用哪个示例取决于哪种方法最适合企业。 例如,如果没有创建自定义审批工作流的业务需求,就不会使用相应示例。
使用远程预配模式的网站预配和品牌打造工作流的示例
远程预配对已存在的网站内容有何影响
根据你要预配的特定网站元素,你的代码将以远程预配 SharePoint 外接程序的挂钩覆盖默认或预先存在的网站内容。 外接程序将基于存储在数据库中的预配要求选择网站模板和其他功能,根本无需配置 SharePoint。
基本远程设置模式均相同,不论其他要求如何。 但是,当你计划使用此模式来设置网站品牌打造时,请在 SharePoint CSOM、JSOM 和 REST API 提供的自定义功能背景下制定你的品牌发展策略(本节描述的代码示例使用 CSOM)。 此外还需考虑以下事项:
- 网站体系结构。 你构建的是面向 Internet 的网站、Intranet 网站,还是要求授权用户通过面向 Internet 的网站登录才能访问公司数据的 Extranet 网站?
- 特定用户必须定义并请求预配要求的控制程度。 用户是否应该能够使用表单指定自定义预配选项? 更改是自动应用到网站,仅当具有决策权的人员审批更改后应用更改,还是由治理策略进行管理?
- 你想应用的品牌打造自定义项类型(结构和/或外观)。
品牌打造和网站预配代码示例
本节中所述的代码示例显示了核心方案,并对其进行扩展以覆盖一些更具体的用例。 本节中的文章还包括一些代码示例。 下列表格列出并说明了这些示例。
表 5. 网站预配示例
示例 | 说明 | 相关文章 |
---|---|---|
批量预配 | 在控制台应用中预配网站集。 | SharePoint 网站预配解决方案 |
Provisioning.Pages | 说明如何使用远程预配模型来预配 Wiki 页面,以及如何从 Wiki 页面添加远程 Web 部件和 HTML。 | SharePoint 页面和页面模型 |
SiteProvisioningWorkflow | 在主机 Web 和远程事件接收器上使用工作流预配网站集。 | SharePoint 网站预配解决方案 |
SiteProvisioningWorkflowAppWeb | 在外接程序 Web 和远程事件接收器上使用工作流预配网站集。 | SharePoint 网站预配解决方案 |
注意
BatchProvisioning、SiteProvisioningWorkflow 和 SiteProvisioningWorkflowAppWeb 示例展示了远程预配模式的核心概念和功能。 ProvisionWikiPages 示例展示了具体用例(Wiki 页面预配)。
表 6. 品牌打造示例
示例 | 说明 | 相关文章 |
---|---|---|
Branding.Theme | 显示如何应用主题 (CSOM)。 | SharePoint 网站品牌打造和页面自定义解决方案 |
OD4B.Configuration.Async | 说明如何使用远程预配模型来预配 Wiki 页面,以及如何从 Wiki 页面添加远程 Web 部件和 HTML。 | SharePoint 网站品牌打造和页面自定义解决方案 |
Branding.AlternateCSSAndSiteLogo | 说明如何使用用户自定义操作和嵌入式 JavaScript (CSOM) 来设置主机网站的自定义 CSS。 | SharePoint 网站品牌打造和页面自定义解决方案 |
Provisioning.OnPrem.Async | 介绍了如何使用服务,将 SharePoint 主机 Web 中的所有信息都封装到本地 | SharePoint 网站预配解决方案 |
Provisioning.SiteCol.OnPrem | 介绍了如何使用服务,将 SharePoint 主机 Web 中的所有信息都封装到外接程序 Web 并获取 Web,同时获取指定 Web 应用的网站集列表,并创建具有特定 ContentTypeId 的内容类型。 若要使用远程预配模式通过 SharePoint 外接程序预配网站,但 CSOM 中没有完成方案所需的 CSOM 成员,就会发现此示例特别有用。 |
SharePoint 网站预配解决方案 |
SharePoint 品牌打造工作流
SharePoint 网站品牌打造与其他网站的品牌打造非常相似。 你使用熟悉的 Web 技术(如 HTML、CSS 和 JavaScript)构建网站结构、外观和自定义行为。 SharePoint 也基于 ASP.NET,并使用与 ASP.NET 母版页/页面布局模型相似的页面模型。 页面模型包含了结构,并提供了用于应用外观元素的挂钩和逻辑。
SharePoint 提供了多个 Web 部件,你可用于将数据视图、图像、脚本、搜索结果等内容集成到网站设计中。 组合外观使用户可以轻松地自定义网站的外观,同时增强设计人员和 IT 部门对设计细节和可用外观选项的控制力度,主题引擎和自定义 CSS 功能都为高级品牌打造自定义打开了大门。
SharePoint 网站的品牌设计和开发工作流与业内用于以下方面的设计工作流非常相似:
- 规划网站体系结构和设计。
- 使用熟悉的 Web 设计工具和技术来创建设计资产。
- 使用设计管理器等 SharePoint 工具构建网站。
- 打包网站设计,并使用 SharePoint 外接程序和远程预配模式预配网站品牌。
注意
在 SharePoint 中打造品牌意味着修改默认 SharePoint 网站的外观。 这可能包括更改网站的结构和外观。
品牌打造成本和复杂性
品牌打造经历了从简单的低成本到复杂的高成本的变化。 通过 UI,用户可以应用组合外观,其中包括背景图片、调色板、字体、母版页以及与母版页关联的预览文件。 可以使用 SharePoint 主题引擎来创建你自己的主题,还可以创建自定义 CSS 来修改你网站的外观。
重要
虽然在品牌打造项目中可以创建自定义母版页和其他结构元素,支持的结构自定义的长期成本可能很高,并且可能使得你的组织在应用升级和支持自定义短期投资的长期适用性方面成本高昂。
为在本地或专用服务器场上托管的 SharePoint 网站进行品牌打造
你可以在网站集和子网站级别,使用远程预配模式为团队网站、发布网站和在内部部署或专用服务器场上托管的 OneDrive for Business 网站进行品牌打造。
SharePoint Online
SharePoint 品牌打造项目规划工作的一部分是决定你要构建、品牌打造和预配的网站类型。 SharePoint Online 许可证会影响你是否可使用网站发布功能。 并非所有许可证都提供完整的发布网站功能。
表 7. SharePoint Online 中的网站选项
Office 365 版本 | 团队网站 | 发布网站 | 备注 |
---|---|---|---|
小型企业 | 是 | 否 | |
企业版 | 是 | 是 | 对于不包括发布的域,包括根 Web 应用程序的工作组网站集,你可以在根 Web 应用程序下创建新的发布网站集。 |
有关详细信息,请参阅选择 Office 365 商业版计划和模型:SharePoint 2013 中的设计和品牌。
何时应自定义?
需要满足你的业务需求的大多数功能都在 SharePoint 中开箱即用。 因此,在创建自定义项之前,请确定是否有创建自定义项的实际业务情况以及创建和支持此自定义项给企业带来的长期成本。 为最终用户提供的特性和功能如何? 在了解技术之前先查看业务目标和用户体验注意事项。
使用现有的自定义 SharePoint 解决方案并权衡是否以及如何迁移到云外接程序模型时,请首先了解为何执行自定义及其目的。
在考虑将现有自定义项从完全信任代码移动到云外接程序模型时,特性与功能之间通常不存在一对一关系。 不要尝试寻找服务器端代码与客户端代码之间的一对一匹配,请考虑替代方法。 表 8 将 SharePoint 解决方案的一些常用的概念和功能映射到它们在 SharePoint 外接程序中的对等项。
表 8. 将 SharePoint 概念映射到外接程序
任务 | 在 SharePoint 解决方案中 | 在 SharePoint 外接程序中 | 指南 |
---|---|---|---|
显示 SharePoint 页面中的信息 | Web 部件 | 应用部件 | Web 部件使用用户权限或完整权限/提升权限在 SharePoint Server 上运行。 应用部件使用具有授予的权限的应用身份在外部服务器上运行。 它们在各自的域中的客户端上是独立的。 外接程序部件在 SharePoint 之外执行,且不会对 SharePoint 服务器产生任何性能影响。 创建外接程序部件以安装 SharePoint 外接程序 |
创建和管理通知 | 事件接收器和功能接收器 | 远程事件接收器和外接程序事件接收器 | 事件接收器和功能接收器需要服务器端代码且无法将事件通知外部系统。 远程事件接收器使用客户端代码、可在 SharePoint 解决方案或 SharePoint 外接程序中使用,且可以将事件通知外部系统。 在安装、卸载或升级外接程序时,应用事件接收器会执行代码。 - 处理 SharePoint 外接程序中的事件 - 在 SharePoint 外接程序中创建远程事件接收器 |
访问数据 | .NET 服务器对象模型 (SSOM)、.NET 客户端对象模型 (CSOM) 和 OData | .NET 客户端对象模型 (CSOM, JSOM)、OData、REST、跨域库 | - 使用 SharePoint 客户端库代码完成基本操作 - 使用 SharePoint 中的 JavaScript 库代码完成基本操作 - 了解 SharePoint REST 服务 - SharePoint .NET 服务器、CSOM、JSOM 和 REST API 索引 |
打包和部署 | 解决方案包(WSP、功能包) | 应用目录和 AppSource(Office 应用商店) | 解决方案包很难在 SharePoint 场中部署。 如果你想要使 SharePoint 外接程序公开可用或进行销售,可以将其发布到 AppSource。 使用外接程序目录使 SharePoint 在你的组织内可用。 解决方案包中的指南和代码示例演示了如何使用 SharePoint 外接程序将品牌打造元素预配到 SharePoint 网站。 - 使用网站集应用目录 - 将解决方案发布到 AppSource 和 Office 内的 Office 应用商店 - 选择用于开发和托管 SharePoint 外接程序的模式 |
使用外部数据 | 外部内容类型 | 应用范围的外部内容类型 | SharePoint 网站管理员或 SharePoint Designer 用户必须创建和/或安装外部内容类型,这些内容类型只能在场级别安装。 应用范围的外部内容类型仅应用到这些内容类型所针对的 SharePoint 外接程序,不需要任何管理工作,并且可以访问 OData 源。 - SharePoint 中外接程序范围的外部内容类型 - 在 SharePoint 中通过 OData 源创建外部内容类型 |
添加自定义页和母版页 | 应用程序页和网站页面 | Web 托管的页面 | 应用程序页在服务器上的所有网站之间共享并在 SharePoint 上托管。 网站页面由 SharePoint 托管,需要在安全控件列表中列出页面控件。 虽然应用程序页最适用于自定义代码,但站点页面上的自定义代码会在自定义后中断。 相反,请使用 Web 托管的页面。 它们设计为可自定义,支持在网站页面上使用内置 Web 部件,在外部托管,并且在安装了外接程序的任何位置都可使用。 |