目录
- 创作 – 发布拓扑结构
- 分派器的缓存和负载平衡工具
- 轻松的集群设置
- OSGi 容器
- RIA 内容
- 无需编写任何代码的应用程序开发
- 集成 ADEP-Document Services 服务器与 ADEP-Experience Services 服务器
- Web 内容管理工作流
- 单一登录(SSO)验证处理函数
- 跨站点请求仿冒(CSRF)防御过滤器
- 延伸阅读
需求
预备知识
本文假设您熟悉 LiveCycle、Mosaic、Data Services、CQ 和 CRX。
需要的 Adobe 产品
用户水平
所有
最新的 ES3 版本(现在称为 Adobe Digital Enterprise Platform (ADEP))包含出色的新功能。本文是一系列描述这些新功能的文章中的一篇。在未来几周,一些工程师将分享我们最喜爱的 10 大 ADEP 功能,以及使用它们的原因。我很高兴与您分享我最喜爱的 10 大功能。一些功能是对现有工具集的改进,而其他功能则是最新版本中新增的。一定要访问 ADEP 开发人员中心了解本文所列出功能的更多信息。
创作 - 发布拓扑结构
新的创作 - 发布拓扑结构使得很容易维护需要每秒更新的 Web 门户网站,比如新闻频道、体育频道和社交网站。以下是一组与此功能关联的新词汇:
- 创作实例:创作和管理所有资产的实例。
- 发布实例:在创作实例上创作并最终确定资产之后,只需单击一个按钮就可将它们发布到发布实例。此功能使最终用户或代理可轻松发布文件。
- JCR:Java 内容仓库(JCR)标准 JSR 283 指定一个与供应商独立且与实现独立的方式来在细粒度级别上双向访问内容仓库中的内容。
- 分派器:分派器是一个安装在 Web 服务器上的模块。分派器实现负载平衡和缓存来为站点访问者优化性能。
参见下图,查看分派器的发布工作流(参见图 1)。
图 1. 分派器简化了创作并向最终用户发布内容的工作流。
图 1 演示了作者 / 内容所有者(左上角)如何通过分派器访问内容。作者请求发布某些内容(激活),这可由一个手动请求发起,或者由预先配置的自动触发器启动。对内容进行更改后,它们预览该内容,然后激活该内容。在这时,内容发布到发布实例。通过分派器访问内容的最终用户可以看到更新的内容。
分派器的缓存和负载平衡工具
ADEP 的 Customer Experience Solution 包含一个名为分派器的负载平衡工具。分派器安装在 Web 服务器上。它是 Day’s CQ 缓存和负载平衡工具。
缓存
分派器帮助实现快速和动态的环境。它用作一个静态 HTML 服务器的一部分,比如 Apache,以实现以下目标:
- 存储(或“缓存”)尽可能多的站点内容,采用静态网站形式
- 尽可能少地访问布局引擎
当缓存时,分派器使用 Web 浏览器提供静态内容的能力。分派器将缓存的内容放在 Web 服务器的文档根中。由于此配置,分派器仅存储页面的 HTML 代码,它不会存储 HTTP 头部。
分派器有两个主要方法用于在对网站进行更改时更新缓存内容(参见图 2)。
图 2. 描述分派器用于更新缓存内容的两种方法的流程图。
这两种方法是:
- 内容更新删除已更改的页面,以及与它们直接关联的文件。
- 自动失效自动使在更新后可能过期的缓存部分失效。此方法实际上将相关的页面标记为过期,而不实际删除任何内容。
负载平衡
分派器通过两种方式执行负载平衡:
- 性能统计:分派器跟踪有关每个 CQ 实例处理文档的速度的内部统计数据。基于此数据,分派器评估哪个实例将在回答请求时提供最快的响应速度,然后保留该实例上必要的计算时间。
- 个性化的内容(粘滞性连接):粘滞性连接确保一个用户的文档全部在相同的 CQ 实例上创作。这在利用个性化的页面和会话数据时很重要。数据存储在实例上,所有来自相同用户的后续请求必须返回到该实例,否则数据会丢失。
轻松的集群设置
将两个节点集群化从未像这样轻松过。输入其他集群的 ADEP-Experience Services 服务器实例的 IP/ 主机名,然后在后续字段中输入用户名和密码并单击 Join。然后使用现已加入集群的存储库准备 CRX 集群。这种类型的集群称为 Shared Nothing clustering。在此配置中,CRX 存储的所有 3 个元素都保存在每个实例中并通过网络同步。不使用任何共享存储。CRX 存储的 3 个实例是:
- 工作区存储包含存储库中所有工作区的内容,除大型二进制文件。
- 数据存储包含大型二进制文件。
- 日志包含 CRX 在第一次记录想要的变更时写入的数据。
集群的其他变体包括共享数据存储和日志(参见图 3)。
图 3. 在 Join Cluster 部分中所提供的字段中提供集群主 URL。
OSGi container
OSGi 容器
OSGi(也称为 Java 动态模块系统)定义开发和部署模块化应用程序和库的体系结构。OSGi 容器允许您将应用程序分解为各个模块(具有附加元信息的 jar 文件,在 OSGi 术语中称为程序包)并管理它们之间的交叉依赖关系。
这些服务和契约提供了一个体系架构,使各个元素可动态发现彼此以便协作。OSGi 框架提供了这些程序包的动态加载 / 卸载、配置和控制——无需重新启动。
此体系结构允许您使用应用程序特定的模块扩展 Sling。Sling 以及 CQ5 使用 OSGi(Open Services Gateway initiative,开放服务网关计划)的 Apache Felix 实现并基于 OSGi 服务平台(参见图 4)。
图 4. Sling 构建于 Apache Felix 内的 OSGi 框架之上。
RIA 内容
RIA 内容的强大功能支持:
- 在存储库中创建文件夹和文件。
- 支持通过 Fiber 模型进行部署。然后可使用 LC Content Assembler 和 / 或 LC Content API,使用与 Fiber 模型实体对应的对象在 JCR 存储库中执行 CRUD/ 搜索。
- 支持通过 Java 类进行部署(Java Bean)。然后可使用 LC Content Assembler 和 / 或 LC Content API,使用与该类对应的对象在 JCR 存储库中执行 CRUD/ 搜索。
- 支持将 POJO 创建为 nt:unstructured,用作 CRX 中的非结构化数据,而不是强类型节点。
- 提供注册自定义处理函数的能力,这些处理函数可在存储库上执行 CRUD 之前和之前调用。这些处理函数基于节点类型和事件类型。这些处理函数应该同步调用。
- 通过向类型定义添加新属性,然后支持对这些扩展的属性执行 CRUD/ 搜索,提供扩展 Java 类的能力。
- 提供以实体属性为基础拆分数据的能力,以更好地构建和访问数据。
RIX 和 CRX 系统的结构如下所示(参见图 5)。
图 5. LiveCycle 内容、SpringSecurity 和 CRX 之间的连接
如图 5 所示,LC 内容包含:
- LCContentAssembler:结合使用 LC ContentAssembler 和一个 LCDS 目标在 CRX 上执行 CRUD/ 搜索。LC ContentAssembler 使用 RepositoryService 和 QueryService 在 JCR 存储库上执行 CURD/ 搜索。
- QueryService:使用 QueryService 在一个 JCR 存储库上执行搜索。
- RepositoryService:使用 RepositoryService 在一个 JCR 存储库上执行 CRUD。
- TypeRegistry:使用 TypeRegistry 持久化 LC 内容的类型信息。
无需编写任何代码的应用程序开发
直到现在,开发应用程序始终都涉及到编写代码。使用模型驱动的开发,您可以使用 Flash Builder 开发应用程序,只需编写极少的代码。下面的列表给出了在安装 ADEP 后 Flash Builder 中可用的重要功能:
- 支持的 SDK 可在开发项目时直接从 Experience Server 检索。
- 通道集配置自动从 Experience Server 检索,编译器参数也会更新。
- 生成路径基于组件选择而自动生成,而且该列表是无限的。
使用 Flash Builder,您可以拖放您希望在您应用程序中显示的字段(参见图 6)。
图 6. 拖放字段已将其添加到应用程序中。
图7. 根据需要更新字段属性。
当您运行应用程序时,字段会按预期显示,无需编码(参见图8)。
图8. 应用了格式的字段显示。
集成ADEP-Document Services 服务器与ADEP-Experience Services 服务器
ADEP-Document Services 服务器与 ADEP-Experience Services 服务器集成,以实现对从 CRX 内配置 Document Server 的无缝配置支持。CRX 和 Document Server 的集成过程只需单击一次鼠标。为了访问 Document Server,可以输入 Document Server URL、用户名、密码和一些其他项,然后单击 Configure。将 CRX 与 Document Server 集成后,Document Server 中的用户可访问 CRX。来自 CRX 的用户可调用 Document Server 的不同服务,比如转换 PDF、添加密码、使用表格,调用 ReaderExtension 和其他服务(参见图 9)。
图 9. 在提供的字段中输入 Document Services 设置。
Web 内容管理工作流
工作流是 ADEP 中包含的一项非常有帮助的功能。它允许您创建一个自定义工作流或使用预定义的工作流来执行一个具体的流程。例如,CQ 的一项关键应用是 Web 内容管理(CQ WCM),它支持您生成并发布页面到一个网站。此功能常常用于组织流程中,包括由各方参与者批准和签署等步骤。这些流程可表示为工作流,而工作流可在 CQ 内定义,然后应用与合适的内容页面。
工作流是一系列步骤。当一个工作流启动时,一个新工作流实例将与它的负载相关联。例如,在一个表格中提交的数据会加速特定的步骤。这类工作流可经历自动化流程步骤或手动参与者步骤,可遵循规则(以及可选的拆分和合并)。工作流也可触发容器子工作流。此外,您可以使用此功能调用 Document Server 端的服务。您可以从工作流中执行多项操作,从 Document Server 调用不同的服务,比如 convertPDF、ReaderExtension、表格和加密等等(参见图 10)。
图 10. 定义工作流中的步骤。
单一登录(SSO)验证处理函数
单一登录(SSO)机制是如今企业领域的一项基本需求,因为一个组织内存在众多的用户界面。Adobe Granite SSO 验证处理函数支持 CA SiteMinder 或 IIS NTLM 等单一登录系统。图从 HTTP 请求中提取用户 id,忽略任何密码信息。它很容易配置,提供了以下功能:
- 来自头部的 SSO:从 HTTP 头部提取用户 id
- 来自 Cookie 的 SSO:从 cookie 提取用户 id
- 来自请求参数的 SSO:从请求参数提取用户 id
配置单一登录服务(参见图 11)。
图 11. 输入 Adobe Granite SSO 验证处理函数的路径。
跨站点请求仿冒(CSRF)防御过滤器
ADEP-Document Services 中包含的一项新功能设计用于预防跨站点请求仿冒(Cross Site Request Forgery,CSRF)。CSRF 漏洞会在网站允许经过验证的用户执行敏感操作,但不验证该指定的用户是否调用了该操作时发生。跨站点请求仿冒(CSRF)是最常被利用的安全漏洞之一,跨站点脚本(XSS)和 SQL 注入也是如此。
直到 ES2 发布之后,跨站点请求仿冒(CSRF)默认是禁用的,用户需要在 config.xml 文件中进行手动更改。但在 ADEP-Document Services,当系统引导时,Document server 的默认主机和 IP 会输入到 Allowed Referrer List 中并激活 CSRF。用户也可以查看、添加或删除 HTTP 和 HTTPS 端口的允许引用方列表。此外,在 CSRF 功能上也进行了一些最新的更改。例如,不会对 GET 请求执行 CSRF 检查,因为 GET 始终是安全的方法。另外,对空引用方的处理得到了更新,变得更加智能,还有其他许多新的防御措施(参见图 12)。
图 12. 在配置页面中设置允许的引用方。
延伸阅读
有关在Adobe Digital Enterprise Platform 上开发内容和快速部署Customer Experience Solutions 的更详细信息,请访问 ADEP 开发人员中心。
另外,一定要阅读本系列的其他文章,了解 Adobe Digital Enterprise Platform 中其他受欢迎的新功能。
本作品依据 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授权
查看原文: My top 10 Adobe Digital Enterprise Platform publishing features by Ankit Agarwal
评论