SAP CAP(Cloud Application Programming)知识介绍和学习路径

2024-09-02 18:20

本文主要是介绍SAP CAP(Cloud Application Programming)知识介绍和学习路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 框架简介

1.1 什么是CAP?

CAP(Cloud Application Programming)是SAP推出的一种现代化开发框架,旨在简化和加速云原生应用程序的开发

CAP框架基于开放标准和技术,如Node.js、Java、OData和SQL,提供了一套工具和库,帮助开发人员快速构建、扩展和运行企业级应用。

1.2 CAP的基础技术框架

CAP框架主要由以下几个部分组成:

  • CDS(Core Data Services):用于定义数据模型和服务的领域特定语言(DSL)。
  • Node.js/Java:CAP支持两种编程语言,开发人员可以选择使用Node.js或Java来编写业务逻辑。
  • OData:在CAP框架下,可以通过CDS语言自动生成OData服务。
  • SQL:CAP支持多种数据库,包括SAPHANA、SQLite等。
    在这里插入图片描述

1.3 CAP的开发模式

CAP的开发模式主要包括以下几个步骤:

  • 定义数据模型:使用CDS语言定义数据模型。
  • 定义服务:使用CDS语言定义服务接口。
  • 实现业务逻辑:使用Node.js或Java实现业务逻辑。
  • 部署和运行:将应用部署到SAP BTP(Business Technology Platform)或其他支持的环境中。

2. 学习资料与学习路径

2.1 官方文档

通过SAP CAP的官方文档 https://cap.cloud.sap/docs/,可以快速学习和了解CAP的开发知识。在官方文档中,提供了从入门到高级的各种教程,涵盖了 CAP 框架的各个方面,如数据建模、服务定义、业务逻辑实现、测试和部署等。
在这里插入图片描述

一个无用的知识:在CAP的官方文档上,我们可以看到cap>ire这样一个log,CAPIRE 这个名字其实来源于意大利语,意思是“理解”。

2.2 学习路径

学习 SAP CAP(Cloud Application Programming)框架可以分为几个阶段,从基础知识到高级应用。

  1. 对于从ABAP开发转为CAP开发的小伙伴,在正式开启CAP领域前,最好先了解SAP BTP的基本概念和服务,同时补齐JAVANode.js的一些基础语法知识。
  2. 在此基础上,学习CDS(Core Data Services)语言的语法和用法,了解如何定义数据模型和服务。
  3. 了解了CDS语言后,可以参照官方文档中的示例,创建一个简单的CAP项目,从而了解CAP项目的基本结构,以及各个文件的作用,同时学习使用CAP的命令行工具CLI来创建和管理项目。
  4. 完成上述学习后,基本上算是CAP入门了。在此基础上,可以进一步探索CAP的高阶功能,例如身份验证、授权、应用的部署等等。

同时, 学习SAPUI5 和 Fiori Elements技术对于 SAP CAP 中的应用程序开发也是非常有帮助。

因为:CAP 框架主要负责后端服务和业务逻辑,而 SAPUI5 和 Fiori Elements 则用于构建前端用户界面。

  1. 使用 CAP 框架定义数据模型和服务,处理业务逻辑和数据持久化。
  2. 使用 SAPUI5 或 Fiori Elements 构建用户界面,消费 CAP 提供的 OData 服务。

2.3 RAP vs. CAP

如果传统的ABAP开发接触过RAP框架的话,其实学习CAP框架还是相对容易的。虽然它们面向的技术栈和应用场景有所不同,但在设计理念和某些技术上有相似之处。

RAP与CAP有以下的相似点:

  • 面向服务的架构:两者都采用面向服务的架构,强调通过服务接口(如 OData)来访问和操作数据。
  • 数据建模:两者都使用领域特定语言(DSL)来定义数据模型和服务接口。CAP 使用 CDS(Core Data Services),而 RAP 使用 ABAP CDS
  • 业务逻辑分层:两者都强调业务逻辑的分层和模块化,支持在不同层次上实现业务逻辑。
  • 开放标准:两者都基于开放标准和协议,如 ODataRESTful API,便于集成和扩展。

若比较一下RAP与CAP的技术栈,可以发现如下的相似点:

  • 开发语言:
    • CAP:主要使用 JavaScript(Node.js)或 Java 来实现业务逻辑。
    • RAP:使用 ABAP 语言来实现业务逻辑。
  • 开发工具:
    • CAP:使用 Visual Studio CodeSAP BAS等发工具,结合 CAP CLI 进行项目管理。
    • RAP:使用 ABAP Development Tools(ADT)SAP BAS 进行开发。
  • 部署环境:
    • CAP:主要部署在 SAP BTP(Business Technology Platform)上,支持多种云环境。
    • RAP:主要部署在 SAP S/4HANA 系统中,适用于内部部署和云部署。

下面用一个小例子对比了RAP 和 CAP的相似性和不同点:

2.3.1 RAP

ABAP CDS 数据模型:

@EndUserText.label: 'Books'
@AbapCatalog.enhancementCategory: #NOT_EXTENSIBLE
@AccessControl.authorizationCheck: #NOT_REQUIRED
@Metadata.allowExtensions: true
define root view entity ZI_Books
{key ID      : abap.int4;title       : abap.string(100);author      : abap.string(100);stock       : abap.int4;
}

服务定义:

@EndUserText.label: 'Catalog Service'
define service ZC_CatalogService
{expose ZI_Books as Books;
}

业务逻辑(ABAP 类):

CLASS zcl_catalog_service DEFINITIONPUBLICFINALCREATE PUBLIC.PUBLIC SECTION.INTERFACES: if_rap_query_provider,if_rap_modify_provider.PROTECTED SECTION.PRIVATE SECTION.
ENDCLASS.CLASS zcl_catalog_service IMPLEMENTATION.METHOD if_rap_query_provider~select." Implement query logic hereENDMETHOD.METHOD if_rap_modify_provider~create." Implement create logic hereENDMETHOD.ENDCLASS.

2.3.2 CAP

CDS 数据模型(schema.cds):

namespace my.bookshop;entity Books {key ID : Integer;title  : String;author : String;stock  : Integer;
}

服务定义(service.cds):

using { my.bookshop as my } from './schema';service CatalogService {entity Books as projection on my.Books;
}

业务逻辑(catalog-service.js):

const cds = require('@sap/cds');module.exports = cds.service.impl(async function() {const { Books } = this.entities;this.after('READ', 'Books', each => {if (each.stock > 111) {each.title += ' -- 11% discount!';}});this.on('CREATE', 'Books', async req => {const { ID, title, author, stock } = req.data;if (stock < 0) {req.reject(400, 'Stock cannot be negative');}await INSERT.into(Books).entries({ ID, title, author, stock });});
});

3. 小结

本文介绍了SAP CAP框架的基础知识,并结合ABAP技术栈的特点,给出了CAP建议的学习路径。

这篇关于SAP CAP(Cloud Application Programming)知识介绍和学习路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130715

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统