使用Cloud Application Programming模型开发OData的一个实际例子-阿里云开发者社区

开发者社区> jerrywangsap> 正文

使用Cloud Application Programming模型开发OData的一个实际例子

简介:
+关注继续查看

刚刚过去的云技术 TechEd上,云技术 CTO Juergen Mueller向外界传递了一个重要的信息:身处云时代大环境下的云技术从业者,在云技术云平台上该如何选择适合自己的开发方式?

Juergen Mueller用了一棵决策树来向大家介绍,对于拥有不同开发技能水平的云技术从业者,可以按照这棵树,根据自身情况和项目需要来选择不同层次和组合的开发工具以及编程模型。

上图右边的分支表明,如果不想抛弃已经习得的ABAP开发技能,可以选择云技术云平台上的ABAP编程环境;反之,如果青睐nodejs,Java这些技术栈,那么云技术云平台也不会让你失望:云技术 Cloud Application Programming Model(简称为CAP),是云技术推荐的在云技术 Cloud Platform上进行开发的最佳实践。

究竟什么是云技术 Cloud Application Programming Model?云技术官网上给出了定义:一套由开发语言,开发工具和库有机集成的框架,提供了一种高效,快捷,全栈式的企业级服务和应用开发手段。CAP包含一套开发最佳实践,让开发者能够专注于应用内具体业务逻辑的开发,而无需分心将精力花在重复的底层基础设施功能的实现上去。

看一个具体的例子,通过Cloud Application Programming Model实现一个简单的在线书店应用。书店里出售很多书(Books),每本书包含ID,名称,作者(Author)和库存这四个字段。用户通过创建订单(Orders)进行购买。

如果是用ABAP技术栈实现这个需求,一种比较容易的方式是使用事务码SEGW,通过OData协议来实现。在SEGW里创建Books,Author和Orders模型,以及对应的增删改查。Jerry在去年的文章 云技术 OData编程指南 里曾详细介绍。再后来有了CDS view,可以通过在CDS view上加注解@OData.publish的方式快速创建OData服务。

到了云技术 Cloud Platform ABAP编程环境上,我们有了更加好用的工具:Restful ABAP Programming Model,

30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现

从以上短短的描述,我们能够感受到,近些年来ABAP技术栈随着云技术向云端转型而不断快速向前演进的趋势。

下面我们就来看看如何用云技术 CAP实现这个在线书店的需求。

命令行执行下面的命令:

npm set @云技术:registry=https://npm.云技术.com
npm i -g @云技术/cds

从云技术的npm仓库里下载cds库并进行全局安装:

接下来直接敲cds命令,如果看到下面的帮助信息,说明安装成功了。此后所有的CAP开发,都围绕着这个cds命令进行。

CAP开发的IDE可以使用Visual Studio Code,当然也可以用其他文本编辑工具。推荐Visual Studio Code的原因是云技术发布了一款针对CAP开发的Visual Studio Code扩展,支持语法高亮和静态检查,可以从云技术官网下载:
https://tools.hana.ondemand.com/#cloud

和我们开发一个nodejs应用类似,基于CAP的编程,第一步就是cds init,这个命令会自动帮我们创建CAP应用的骨架和从npm.云技术.com下载CAP应用必需的库文件。

cds init执行完毕后,打开Visual Studio Code,界面如下,这些全是cds init自动生成的:

新建srv文件夹,下面创建文件cat-service.cds,完成Books,Authors和Orders的建模,即定义每个模型的字段,以及模型间的跳转关系:

定义完之后,执行命令cds run,就可以本地预览我们刚刚创建的模型了。这个命令启动了一个本地服务器,通过http://localhost:4004访问:

到目前为止,因为我们没有实现这个模型的持久层,所以还观察不到任何数据。

在实现持久层之前,我们可以先mock一些数据。新建cat-service.js, 在里面硬编码一些测试数据:

这样,再次请求Books和Authors,就能在浏览器里看到mock的数据了:


下面我们进行持久层的相关开发。新建一个文件夹db,下面新建一个文件data-model.cds,把之前实现在cat-service.cds里的模型定义拷贝过来。第17行的managed意思是把Orders模型的增删改查操作托管给框架完成。

此时cat-service.cds里的实现就干净多了,直接重用上一步data-model.cds里定义好的模型。注意此处的@readonly和@insertonly注解。

这个例子里我们选用SQLite这个轻型数据库来存储数据。用命令行npm i sqlite3 -D安装SQLite,然后进行数据库部署:

cds deploy --to sqlite:db/my-bookshop.db

根据cds deploy命令的输出提示,package.json也相应被更新了:

前面提过Books和Authors这两个模型具有@readonly注解,因此我们新建两个csv文件,维护一些数据在文件内:

然后将这两个csv文件通过命令cds deploy导入到数据库里。

登录sqlite控制台,使用select语句查看成功从csv文件导入的数据:

前面提到Orders的注解是@insertonly, 现在我们想实现一个新功能,每次针对一本书下单后,该图书的库存减一。

《生化危机》目前只有12本了:

打开之前存放mock数据的cat-service.js, 在下单之前的hook里实现库存减一的操作:

然后进行测试:在postman里执行post请求,下单再买一本:

此时再次执行get请求,发现《生化危机》的库存已经和期望的一样扣掉了一本了:

这种频繁下单的顾客,估计是和Jerry一样的生化系列爱好者。


希望这个例子能够帮助大家对如何使用Cloud Application Programming Model进行开发有一些基本的认识。感谢阅读。

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
无影云桌面让你无处不在
云桌面,让你不再为了没有电脑发愁。手把手教你玩通无影~~~
11 0
冬季训练营-从0到1玩转云服务器学习报告记录
从0到1玩转云服务器学习报告记录,搭建云上博客全过程
8 0
阿里云天池大赛赛题解析——机器学习篇-赛题一(7)
阿里云是国内知名的云计算、大数据、人工智能技术型公司,是阿里巴巴集团最重要的技术部门。阿里云天池是阿里云面向开发者和教育行业的资源输出部门,天池大赛是国内最大规模的人工智能算法赛事,致力于汇聚全球AI精英为企业解决真实问题。自2014年至今已举办数十次行业顶级算法赛事,全球参赛开发者超过30万人。然而对于更广大的普通开发者和大学生群体来说,高规格的算法大赛仍然具有很高的门槛。本书就是针对受众最广泛的新手人群而编写的,精选阿里巴巴最典型的人工智能算法应用案例,邀请天池大赛最顶级的获奖选手联合编撰,公开那些鲜为人知的技术秘籍,力图使每一个涉足数据智能算法技术的开发者从中获益......
6 0
SQL必知必会(三)
作用是从一个或多个表中检索信息
11 0
tortoise-orm的迁移工具aerich
tortoise-orm的迁移工具aerich
5 0
冬季实战营第一期:从零到一上手玩转云服务器全流程
冬季实战营第一期:从零到一上手玩转云服务器
10 0
flutter项目如何打包(android)
打包前要做的 1.更换图标 andriod–》app–app–》src—》main-》Java----》res–》minpmap
8 0
云起第一期学习体会(报告)
云起第一期学习体会(报告)
6 0
flutter开发之必须掌握的dart知识点:list,set,map
要说,List在我的开发使用中,确实是最为频繁的了,那么如何使用list,也就成了一个问题,list提供的方法又有哪些 这些都是需要掌握理解的。 首先第一个, 对于固定长度的list,如何删除添加元素呢
3 0
产业白热化竞争来临,看人工智能如何带动经济数智化发展
人工智能的发展主要围绕着语言、数学和逻辑推理能力的进步。未来,人工智能的将围绕提升预测准确性和情商能力而发展,为行业数智化转型带来层层浪潮。
10 0
+关注
2628
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载