内容存储库的优势是啥(不是在谈论 CMS)

Posted

技术标签:

【中文标题】内容存储库的优势是啥(不是在谈论 CMS)【英文标题】:What are Advantages to Content Repositories (not talking about CMS's)内容存储库的优势是什么(不是在谈论 CMS) 【发布时间】:2012-07-11 11:04:24 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

此外,很难将数据存储方法的选择与内容提供商用于填充和维护数据存储的工具的选择区分开来。你必须给 您的作者不仅仅是带有文本区域和提交按钮的 html 表单。

【讨论】:

【参考方案2】:

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

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

如果你允许一个无耻的插件,我在http://java.dzone.com/articles/java-content-repository-best 上的“JCR - 两全其美”文章对此进行了更详细的描述,并提供了 JCR 规范的阅读列表,这应该可以让你在没有阅读全文。

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

【讨论】:

感谢您的反馈,这让我在完成这些第一步之后有一些东西可以看。但是,在您的示例中添加 sling(实际上对它的高度强调......在文章和您的上下文中可以理解)对我来说现在无法消化。汤普森望远镜规则。一旦我能够弄清楚 java/glassfish 和 jcr,我可能能够欣赏/理解 sling 提供的内容。但是我需要在跑步之前步行。 :) 现在我只想理性地解释为什么我应该费心去学习 jcr。大卫提供了我正在寻找的那种战略推理。我会给 jcr 一个机会。 很公平 - 你也可以在我的回答中提到 Sling 之前停下来,单独对 JCR 感到满意 ;-)【参考方案3】:

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

【讨论】:

以上是关于内容存储库的优势是啥(不是在谈论 CMS)的主要内容,如果未能解决你的问题,请参考以下文章

将我的本地反应应用程序文件发送到 VsCode 中的 Github 存储库的命令是啥?

“去获取”私有存储库的正确方法是啥?

在 azure devops 中创建存储库的请求正文是啥?

NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?

gitlab 12.9 的存储库的迁移路径是啥。到 gitlab 14.2?

使用 Amazon AWS Elastic Beanstalk 运行具有多个 git 存储库的平台的最佳方式是啥?