12

鉴于很多人使用内容存储库。一定有充分的理由。我正在构建一个需要存储内容的新 Web 应用程序。有人可以帮助我理解这一点吗?

与编写自己的代码/API 来存储图像或文本页面相比,使用像 Apache Jackrabbit 这样的内容存储库有什么优势?自己编写需要时间等,但实施和学习新框架(如内容存储库 API)也是如此。在我看来,滚动你自己的代码的好处是你了解你的代码,并且如果你需要增强或修复它,你可以立即获得专业知识。使用另一个框架,您需要了解它的弱点,并且修改您知道但不知道的代码总是更容易......即您不知道底层框架代码以及您自己的代码。

正如我所说,很多人都在使用它们。一定是有原因的。我不能把它看作只是另一个“每个人都在使用它们,我们也应该这样”。至少我希望不是这样。:)

4

3 回答 3

13

JCR 存储库允许您将所有内容(从结构化数据库类型的数据到大型多媒体文件)存储在一个地方并使用单个 API,这非常方便并且使您的代码更简单,避免文件和数据之间的阻抗不匹配通常在基于内容的系统中。

JCR 还提供了许多您不必自己构建或组装的基础设施功能:搜索(包括全文)、观察(发生变化时的回调)版本控制、数据类型(包括多值、有序节点等)。 .

如果你允许一个无耻的插件,我在http://java.dzone.com/articles/java-content-repository-best上的“JCR - 两全其美”文章更详细地描述了这一点,并提供了一个阅读列表JCR 规范,应该可以让您在不阅读整个内容的情况下获得一个很好的概述。

本文使用 Apache Sling 作为示例,它与 JCR 存储库相结合,为基于内容的应用程序提供了一个非常好的(IMO,但作为 Sling 提交者,我有偏见 ;-) 平台。

于 2012-07-12T14:41:24.110 回答
8

我最近的项目涉及两种选择:具有多级缓存机制的定制数据存储(MySQL 和图像文件),以及基于 JCR 的商业存储库。一些想法:

在短期内,DIY 解决方案可以降低复杂性:您只需要构建和学习您需要的东西。并且至少有机会针对您的特定应用程序的需求优化数据存储 - 很可能是检索速度,但可能是存储空间、安全性或可靠性问题对您来说是最重要的。

但是,从长远来看,您将看到大量工作将本土系统扩展到新的内容类型(例如视频)或提供新功能(可能是版本控制)。

此外,很难将数据存储方法的选择与内容提供者用来填充和维护数据存储的工具的选择区分开来。您必须为您的作者提供比带有 textarea 和提交按钮的 HTML 表单更多的东西。

于 2012-07-12T17:59:59.277 回答
2

这与标准化的优点有关:兼容性和互换性。如果每个人都写自己的库和API,就没有兼容性和互换性,导致成本更高。

于 2012-07-12T04:52:34.290 回答