我想使用基于资产的架构而不是基于页面的架构来开发娱乐/个人的 CMS(为什么,这是这个问题的目的),但我找不到关于这个主题的太多信息。我发现的所有内容都只是表面上的(很有可能我正在使用错误的术语进行搜索)。
基于资产的 CMS 将信息存储为称为资产的文本块。然后将这些单独的资产相互关联以自动构建页面。
这样的系统有什么(dis/)优点?
基于资产的架构的主要原则是什么?
什么应该和不应该是“资产”?我在哪里可以阅读更多内容?
我想使用基于资产的架构而不是基于页面的架构来开发娱乐/个人的 CMS(为什么,这是这个问题的目的),但我找不到关于这个主题的太多信息。我发现的所有内容都只是表面上的(很有可能我正在使用错误的术语进行搜索)。
基于资产的 CMS 将信息存储为称为资产的文本块。然后将这些单独的资产相互关联以自动构建页面。
这样的系统有什么(dis/)优点?
基于资产的架构的主要原则是什么?
什么应该和不应该是“资产”?我在哪里可以阅读更多内容?
留下我的评论后决定尝试回答这个问题:)
如果您对“资产”的定义类似于“节点”(例如 Drupal)或文档(例如 MongoDB 或 CouchDB 中的 JSON 样式文档),那么这里有一些信息:
我将在这篇文章中使用术语“节点”。我认为它最接近“资产”并且使用更广泛。这也可能是一个非常抽象的答案,但希望它至少能让你思考并指出正确的方向。
基于节点的架构,可以描述为神经网络模式和面向对象编程之间的交叉。关键是“节点”是数据的点,节点可以通过某种方式相互连接。
一些体系结构将节点视为面向对象的类,您有不同的节点类可以继承父节点的各种特征 - 每种类型的节点都继承其父节点的基本属性 - “论文”节点可能继承的属性一个“文本文档”节点,它又继承了基础节点的属性。Drupal 很好地实现了这种继承模型,尽管它不像 Facebook 的 GraphAPI/Open Graph Protocol 那样强调节点之间的连接。
这种基于节点的架构模式也可以在任何级别实现,并且存在于自然界中-想想社会或生态系统中的社交圈;)在软件工程级别上,它可以采用数据库的形式,例如 MongoDB 简单具有数据节点(在这种情况下称为文档)。这些文档可以参考其他文档,虽然和 Drupal 一样,Mongo 并不强调连通性。具有讽刺意味的是,与基于文档的数据库相反的关系数据库(如 MySQL)实际上更强调连接性,但这是另一天的讨论。我上面提到的 Facebook 的 GraphAPI 是在 Web-API 级别上实现的。Open Graph Protocol 塑造了它。再一次,像 Drupal 这样的东西是在前端实现的(尽管它的后端在较低级别实现了节点模式,
最后,基于节点的架构比传统的基于文档/页面的 CMS 架构灵活得多,但这也意味着开发人员需要进行更多的编程和配置。基于节点的系统最终将更加相互连接,并且其组件将在更深层次上相互集成,但由于这种深层次的连接,它也更容易被破坏——它不是分离的成单独的模块。就个人而言,我看到了一个巨大的趋势,即人们开始变得更加“基于节点”而不是“基于内容”,因为人们开始与网站进行交互,更像是应用程序,而不是像 90 年代那样作为电子杂志。加,人们和他们的帐户/个人资料到网站大大增加了复杂性。
我知道您说的是“资产”,所以我还要说资产更强调节点模式的数据方面,而“节点”更强调数据之间的连接。
但为了进一步阅读,我建议阅读我提到的软件架构。您还可以查看 node.js、JSON 和基于文档的数据库以及 GraphAPI,因为它们似乎非常适合这种基于资产/节点的架构的想法。我相信维基百科也有一些关于这些模式的好东西。
您可以使用 CakePHP 框架快速扩展它。它使用 MVC 模式并提供称为元素的类,这些类可以插入到布局中,并且可以根据页面、用户、月相等加载您想要的任何内容。
<page>
<element calls methodX>
<element calls methodY>
<Default Content relies on Controller Action(view/edit/add/custom)>
<element calls methodZ>
</page>
I think you might be describing a CMS backed up by a content repository.
The repository itself is implemented by Apache Jackrabbit based on JSR 170:
The API should be a standard, implementation independent, way to access content bi-directionally on a granular level within a content repository. A Content Repository is a high-level information management system that is a superset of traditional data repositories. A content repository implements "content services" such as: author based versioning, full textual searching, fine grained access control, content categorization and content event monitoring. It is these "content services" that differentiate a Content Repository from a Data Repository.
For a CMS working on top a content repository, look at Nuxeo.