source: http://dev.day.com/microsling/content/blogs/main/evolution.html
filed under cms | posted by Michael Marth
Communique 5 is currently being built on top of Apache Sling. I believe this is a step forward in the overall architectural evolution of web content management systems because it exposes a new type of interface to developers of content centric applications: the web infrastructure layer. Let me explain this idea in the context of CMS history:
1. The Big Blob
Seen from a developer's perspective early CMSs came along as one big piece of software . If you wanted to develop custom applications with them you usually had to develop on top of the CMS API. This API for WCMS would contain abstractions like "paragraph", "user" or "workflow" and expose actions like "publish a page", i.e. the abstraction level was the level of the WCMS business logic (I use the term "business logic" as in "the business of managing content"). For the purpose of this argument, let's call these APIs the "business level API".
2. Splitting off the repository
It was obvious that the content had to be also accessible for developers outside of the context of the business-layer API. Thus, the repository layer was abstracted: a number of CMSs created an API that allowed direct access to the content, either through JCR/JSR-170 or some proprietary API. This gave developers two choices how to access the content: either in the context of the business API or the "raw" access through, say, JCR.
Introducing the repository-level API can be seen as a clean architectural cut for a CMS in order to improve separation of concerns.
3. Splitting off the web infrastructure
In this next evolutionary step we take what is left of the WCMS after the repository is split off and separate off another layer: the web infrastrucure (Sling). This layer contains the basic plumbing required to build web apps, e.g. request handling, selecting content, script execution, authentication, filters etc. This leaves the business layer with the business logic only.
One effect of splitting off the web infrastructure is that developers can write web applications that sit "next to" the WCMS application rather than running on top of the WCMS. This means that these developers do not need to be concerned with (and learn about) the particular CMS business logic because they have access to the web application infrastructure provided by the CMS.
This is a second architectural cut and separation of concerns that acknowledges that there are different types of content centric applications and WCMS is only one of them (consider forums, blogs, media asset management, wikis, etc). These different content-centric apps share requirements for repositories and web infrastructure, though.
It should be noted that compared to the second step above this additional separation of concerns does not really allow you to do anything that was not possible before. However, it is such a big advancement in terms of developer productivity that I consider it to be a qualitative change. (If you disagree: Try building a web app starting with just a connection to your repository and another one on top of Sling. You will understand.)
Some clarifications
There are of course myriads of WCMSs already that let developers write extensions or modules or similar. That approach is different though because these applications run "within" the CMS context, i.e. the developer is still interfacing the business layer. On top of Sling, your app is a first-class citizen just like CQ5.
This CMS-oriented view of the world and its history might seem strange if you look from an application server angle: in the app server world the persistence layer, the application framework (Struts, PHP, ...) and the application were always neatly separated - so Sling would be nothing new. However, this is not quite the same situation as step 3 in the CMS world because in the classical web infrastructure world the application framework knows nothing about the underlying repository - usually it just handles database connection pooling or similar. Sling does know about the repository and thus it can provide additional functionality. Therefore, if you want to stay in the classical web infrastructure picture you could regard Sling as a very specialized application framework (specialized for content-centric applications). AFAIK this is a new piece of infrastructure that did not exist before.
分享到:
相关推荐
标题中的"org.apache.sling.engine-2.2.8.zip"是一个开源项目Apache Sling的特定版本(2.2.8)的打包文件。Apache Sling是一个基于Java的内容管理和Web应用框架,它构建在Jakarta Servlet和JCR(Java Content ...
sling := new(sling.Sling) sling.Get("https://api.example.com"). QueryStruct(&queryParams). ReceiveSuccess(&response) ``` 在这里,`QueryStruct`方法允许将结构体的字段映射到查询参数,而`ReceiveSuccess...
Apache Sling是基于Java Content Repository (JCR) 和Servlet 3.0 规范构建的一个灵活且强大的Web应用框架,广泛用于内容管理和Web开发。这个组件的核心功能是处理事件,它允许Sling应用程序通过发布和订阅机制进行...
- 添加URL路径参数:`sling.Path("path/param").String()`。 - 设置查询参数:`sling.Query("key", "value")`。 - 设置请求头:`sling.Set("Content-Type", "application/json")`。 4. **发送请求和处理响应**:...
4. **Composum集成**: Composum是一个基于Apache Sling的Web内容管理系统,`gradle-sling-plugin` 可以与之配合,简化Composum应用的构建和部署。 5. **Kotlin支持**: 除了标准的Groovy DSL,该插件还支持使用...
Apache Sling 是一个基于 RESTful 的、开源的内容管理和应用程序框架,它构建在 Apache Jackrabbit 和 Servlet 容器之上。Sightly 是 Sling 提供的一种声明式服务器端模板语言,主要用于生成 HTML 输出。这个名为 ...
cpp-Sling是一个强大的开源项目,它实现了对多平台的支持,并且基于WebKit技术构建了一个高效的渲染引擎。WebKit是一种广泛使用的网页渲染引擎,它被许多著名的浏览器如Safari和Chrome所采用,因为其性能优异且跨...
Apache Sling 类型清理 用于清理类型不存在的资源的 Apache Sling 服务。 首先安装包 配置它(即设置您要检查存储库的资源类型前缀,您不希望该工具收集的资源类型前缀) 那么 servlet 已准备好为“sling/...
资源分类:Python库 所属语言:Python 资源全名:sling-0.80.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Sling.js CLI是针对Sling.js框架的一个命令行工具,它简化了开发人员创建和管理Sling.js项目的过程。Sling.js是一个JavaScript库,旨在帮助开发者构建动态、响应式的前端应用。CLI(命令行接口)是开发流程中的一个...
peregrine cms简介Peregrine CMS(PER:CMS)是基于Apache Sling的Head可选API首个内容管理系统。 它将Peregrine CMS用于VueJS。简介Peregrine CMS(PER:CMS)是基于Apache Sling的API首个内容管理系统头可选项。 ...
Sling是基于Java的开源内容管理框架,它利用Java Servlet容器来处理RESTful请求,提供了一种灵活的方式来构建内容驱动的应用程序。Sling ITS的目的是为了简化对Sling项目的测试过程,确保其稳定性和可靠性。 在...
maven-sling-plugin-2.1.0.jar
maven-sling-plugin-2.0.6.jar
Apache Sling 是一个基于 RESTful 的 Java 框架,主要设计用于构建内容管理系统和 Web 应用程序。它利用了 Java 模块化系统(OSGi)的优势,并且依赖于 JCR(Java Content Repository)作为后端存储。在 Sling 中,...
Sling 是用于构建单页应用程序 (SPA) 的客户端 JavaScript 框架。 Sling 是轻量级的,缩小了 6.7KB,压缩后不到 2.3KB 。 Sling 创建并使用虚拟 DOM 来执行差异更新以实现快速渲染。 Sling 具有自动更改检测机制,...
Apache Sling 入门内容入门内容包提供了一些初始内容和示例内容以及指向上的在线资源的链接该模块是项目的一部分。可扩展性可以通过将资源放在/content/starter/sidebar-extensions下来提供其他内容。 这些将在右侧...
Apache Sling是一款基于Java Content Repository (JCR) 的开源服务器,常用于构建内容管理系统和Web应用程序。 在Sling-Query项目中,开发者可以像使用jQuery那样操作Sling资源,通过链式调用来过滤、选择、修改或...
maven-sling-plugin-2.1.0-sources.jar
maven-sling-plugin-2.0.6-sources.jar