为什么要为 JCR 使用 Apache Sling?
Why use Apache Sling for JCR?
AEM 的文档如下:
AEM is built using Apache Sling, a web application framework based on REST principles
that provides easy development of content-oriented applications.
为什么 AEM 使用 Apache Sling(使用 HTTP)而不是 Jackrabbit 或 CRX(不使用 HTTP)创建?
如果内容存储库在另一台机器上,我可以理解它的用途,例如您使用 运行 模式作者和资源在另一台机器上的情况,但我不明白为什么会这样用于AEM的实现。
由于以下原因多:
- 它抽象掉了 JCR API,这非常麻烦
- JCR 实现基本上只是 Felix 中的一个 OSGI 组件 运行(可能还有其他 OSGI 运行时),Sling 只是从中获取数据。 JackRabbit 本身或 OAK 都可以被不同的持久层所取代。 Sling 提供 APIs 来访问其他数据存储以及使用它自己的 APIs.
- Sling 让您可以非常轻松地从其内部结构中抽象出内容的表示形式。
- 它提供了一个一致的组件api,可用于在 JCR 之上实现实际应用程序,同时提高工作效率。它基本上遵循#2
- HTTP(由 Sling 使用)是一种提供各种方式来传送内容的接口,并且更容易嵌入到复杂的网络基础设施中,因为网络在其上运行。
您不需要 Sling,但当您构建 Web 应用程序时,它显然可以提高您的工作效率,因为它是一个灵活的顶层表示层。
AEM 的文档如下:
AEM is built using Apache Sling, a web application framework based on REST principles
that provides easy development of content-oriented applications.
为什么 AEM 使用 Apache Sling(使用 HTTP)而不是 Jackrabbit 或 CRX(不使用 HTTP)创建?
如果内容存储库在另一台机器上,我可以理解它的用途,例如您使用 运行 模式作者和资源在另一台机器上的情况,但我不明白为什么会这样用于AEM的实现。
由于以下原因多:
- 它抽象掉了 JCR API,这非常麻烦
- JCR 实现基本上只是 Felix 中的一个 OSGI 组件 运行(可能还有其他 OSGI 运行时),Sling 只是从中获取数据。 JackRabbit 本身或 OAK 都可以被不同的持久层所取代。 Sling 提供 APIs 来访问其他数据存储以及使用它自己的 APIs.
- Sling 让您可以非常轻松地从其内部结构中抽象出内容的表示形式。
- 它提供了一个一致的组件api,可用于在 JCR 之上实现实际应用程序,同时提高工作效率。它基本上遵循#2
- HTTP(由 Sling 使用)是一种提供各种方式来传送内容的接口,并且更容易嵌入到复杂的网络基础设施中,因为网络在其上运行。
您不需要 Sling,但当您构建 Web 应用程序时,它显然可以提高您的工作效率,因为它是一个灵活的顶层表示层。