NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

我最喜爱的 10 大 Adobe Digital Enterprise Platform 发布功能

  • 2011-11-23
  • 本文字数:4548 字

    阅读完需:约 15 分钟

目录

需求

预备知识

本文假设您熟悉 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. 描述分派器用于更新缓存内容的两种方法的流程图。

这两种方法是:

  • 内容更新删除已更改的页面,以及与它们直接关联的文件。
  • 自动失效自动使在更新后可能过期的缓存部分失效。此方法实际上将相关的页面标记为过期,而不实际删除任何内容。

负载平衡

分派器通过两种方式执行负载平衡:

  1. 性能统计:分派器跟踪有关每个 CQ 实例处理文档的速度的内部统计数据。基于此数据,分派器评估哪个实例将在回答请求时提供最快的响应速度,然后保留该实例上必要的计算时间。
  2. 个性化的内容(粘滞性连接):粘滞性连接确保一个用户的文档全部在相同的 CQ 实例上创作。这在利用个性化的页面和会话数据时很重要。数据存储在实例上,所有来自相同用户的后续请求必须返回到该实例,否则数据会丢失。

轻松的集群设置

将两个节点集群化从未像这样轻松过。输入其他集群的 ADEP-Experience Services 服务器实例的 IP/ 主机名,然后在后续字段中输入用户名和密码并单击 Join。然后使用现已加入集群的存储库准备 CRX 集群。这种类型的集群称为 Shared Nothing clustering。在此配置中,CRX 存储的所有 3 个元素都保存在每个实例中并通过网络同步。不使用任何共享存储。CRX 存储的 3 个实例是:

  1. 工作区存储包含存储库中所有工作区的内容,除大型二进制文件。
  2. 数据存储包含大型二进制文件。
  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)。

图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 中其他受欢迎的新功能。

clip_image016

本作品依据 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授权

查看原文: My top 10 Adobe Digital Enterprise Platform publishing features by Ankit Agarwal

2011-11-23 04:01833

评论

发布
暂无评论
发现更多内容

恭喜你,赢得了爱情长跑的胜利

小天同学

爱情 兄弟 祝福

设计模式:建造者设计模式

毛佳伟🐳

Vol.10 Java 25岁了!

pyfn2030

Java jdk 编程语言 Java25周年

产业区块链:产业是本质,区块链是工具

CECBC

新基建 CECBC 区块链技术 中国电子

Vite for Vue 是什么?

꯭🇫꯭

Vue vuejs vite Vue3

关于字符编码那些你应该知道的事情

꯭🇫꯭

Java MySQL emoji utf-8 ASCII

写给产品经理的信(6):时间管理

punkboy

极客时间,项目管理 职场 产品经理 时间分配 时间管理

【CSS】为什么a标签的伪类选择器要注意书写顺序?

德育处主任

CSS html css3 大前端 Web

Django ListView DetailView等基于类的视图如何添加装饰器?

BigYoung

Python django LiveView 装饰器

贴吧电纸书资深用户,从7个方面详谈BOOX Poke2上手体验!

DT极客

2020年5月30日 泛型程序设计

瑞克与莫迪

Spring源码

云淡风轻

spring 源码

只需CSS的下拉式导航菜单

寇云

CSS css3

一位测试工程师的自我介绍

姬翔

测试

如何存储1个二进制位&锁存器的核心和本质

姜海天

计算机 数字逻辑

大厂为什么不招30岁以上程序员,看这篇就够了

金刚小书童

程序员 职业规划 技术管理 职业成长

ARTS-week-1

youngitachi

ARTS 打卡计划 arts

Spring Bean生命周期——初始化和销毁

xiaoxi666

Java spring

广告的发展历程

子悠

广告 计算广告 广告系统 互联网广告 RTB

平台化服务的基石:权限模型设计

孤岛旭日

企业架构 用户权限 数据建模

毫无意义的人生唯有编织图案

xyz

SpringBoot之多模块开发

北漂码农有话说

面试都在问的微服务、服务治理、RPC、下一代微服务框架... 一文带你彻底搞懂!

程序员柠檬

微服务 后台开发 架构设计

python实现·十大排序算法之桶排序(Bucket Sort)

南风以南

Python 排序算法 桶排序

Cassandra可调一致性的使用及原理

老任物联网杂谈

大数据 分布式 Cassandra 可调一致性

图片与标题的Ken Burns动效

寇云

CSS css3

JUC整理笔记四之梳理VarHandle(上)

JFound

Java

谈谈控制感(11):这样提升控制感,谁都能做到

史方远

心理 成长

vue-router 容易被忽视的几个地方

꯭🇫꯭

Vue vuejs vue-router router

不忘初心,继续努力

一周思进

ARTS 打卡计划

终于找到了一篇文章!通俗地讲解计算机工作原理

图灵社区

cpu 存储器 编译器 计算机工作原理

我最喜爱的10大Adobe Digital Enterprise Platform发布功能_语言 & 开发_Ankit Agarwal_InfoQ精选文章