在SAP的云应用程序编程模型(CAP)是一个框架,语言,库和工具,为构建企业级的服务和应用。它引导开发人员沿着经过验证的最佳实践和大量现成的解决方案来应对重复性任务的“黄金之路” 。
基于 CAP 的项目受益于对业务领域的主要关注。我们没有深入研究过于技术性的话题,而是专注于在快速变化的云技术世界中加速开发和保护投资。
CAP 框架融合了经过验证和广泛采用的开源和 SAP 技术,如下图所示。
在开源技术之上,CAP主要增加了:
- 核心数据服务 (CDS)作为我们用于域模型和服务定义的通用建模语言。
- 用于 Node.js 和 Java 的服务 SDK 和运行时,提供用于实现和使用服务的库以及自动为许多请求提供服务的通用提供程序实现。
在当今的数字化转型时代,跟上快速变化的云技术和平台世界是一项重大挑战。CAP 通过更高级别的概念和 API避免了这种锁定,它们在很大程度上抽象了低级平台功能和协议。这尤其适用于以下情况:
- 特定于平台的部署方法和技术
- 特定于平台的身份提供者和身份验证策略
- SaaS 解决方案和租户隔离中租户的启用/停用
- 同步协议,如REST、OData或GraphQL
- 异步通道和代理,如SAP Event Mesh、MQ或Kafka
- 不同的数据库技术,包括SQL和NoSQL
这些抽象使我们能够快速适应新兴技术或平台,而不会影响应用程序代码,从而保护您的投资。
CAP is Open and Opinionated → Zero Lock-in
CAP 始终遵循如下的设计准则:
(1) 从低级平台功能和协议中抽象出来并避免锁定到低级平台功能和协议的高级概念和 API.
但是,所有抽象都遵循玻璃盒模式,允许在需要时不受限制地访问较低级别的事物。
(2) 最佳实践为许多重复性任务提供了开箱即用的通用解决方案,但是你总是可以在自定义处理程序中以你的方式处理事情,例如决定是采用CQRS还是事件源…而 CAP 只是试图让乏味的任务摆脱你的方式。
(3) 对 SAP Fiori和SAP HANA 的开箱即用支持,同时还可以通过提供新的数据库集成来选择其他 UI 技术,例如Vue.js或数据库。
(4) SAP Business Application Studio和Visual Studio Code或Eclipse 中提供的专用工具支持。但是CAP 不依赖于这些工具。CAP 中的所有内容都可以使用@sap/cds-dkCLI 和您选择的任何编辑器或 IDE 来完成。
专注领域,由CDS提供支持
CAP主要关注领域,通过捕捉领域知识和意图而不是命令式编码——也就是说,是什么,而不是如何——从而促进:
- 开发人员和领域专家在领域建模方面的密切合作。
- 最佳实践和重复性任务的开箱即用实施。
- 与平台无关的方法可避免锁定,从而保护投资。
下图说明了 CDS 模型的普遍使用,它推动了通用运行时,如 CAP 服务运行时或数据库。
核心数据服务 (CDS)
CDS是我们的通用建模语言,用于以概念、简洁和易于理解的方式捕获问题域的静态和行为方面,因此是 CAP 的支柱。
下面是 CDS 模型的一个例子:
- 领域模型将问题领域的静态方面捕获为众所周知的实体关系模型。
- association 捕获关系。组合将其扩展为轻松建模文档结构。
- annotation 允许使用额外的元数据来丰富模型,例如UI、验证或授权。
CDS Aspects & Mixins
aspect 允许在相同或单独的模块、包或项目中灵活地扩展模型;这些扩展可以在设计时或在运行时动态完成。
这极大地促进了垂直化和定制化场景的适应性,尤其是在 SaaS 解决方案中。
此外,这促进了关注点分离,例如通过排除技术关注点来保持领域模型的清洁和可理解性。