概述

目前SAPUI5 SDK 提供了两种方式来开发一个SAPUI5 App。一种方式是传统的SAPUI5开发方式,一种是利用SAP Fiori Elements通过模板快速构建应用的方式。

本文简单介绍这两种方式如何实现,并进行对比,使读者更清楚这两种方式的优缺点以及适合的开发场景。

SAPUI5 SDK的官方网站在这里。我采用的开发工具是SAP Web IDE。


简介

SAPUI5 freestyle 就是SAPUI5 提供的最普通的最基本的开发方式,之所以给它起名字叫freestyle,就是为了区别于SAP Fiori Elements的开发方式。

freestyle方式的开发,前端由开发人员使用SAPUI5 API提供的控件自行编写所有页面View和前端逻辑Controller。自行通过OData Model进行数据绑定。自行通过编码的方式灵活的与后端进行交互。后端可采用SAP Gateway暴露Odata Service,在Runtime Artifacts中编写业务逻辑。

Fiori Elements方式的开发,前端只能选择SAP提供的Template模板生成特定样式的几种页面(模板数量在持续增加以支持更多样的业务)。这些页面基本满足SAP 自有的各种业务的需求。如果页面有特殊需求超出了模板提供的范围,可以利用template暴露的接口对模板进行扩展。后端一般采用CDS View自动生成Odata Service。并且通过CDS View生成的BOPF来实现业务逻辑。

不过前后端采用的技术并不是绑定的。freestyle的方式同样可以访问CDS View生成的Odata Service,只是不能利用BOPF的一些特性(目前来说)。Fiori Elements一样可以绑定到普通的SAP Gateway发布的Odata Service,但是要自己写OData Annotation来绑定数据和UI控件。


SAPUI5 freestyle App

详细的基于freestyle开发的基础教程在这里

freestyle的开发,前后端逻辑分的比较清楚,基本无耦合。前端是典型的MVC框架。我们这里重点关注前端的实现。前端实现主要包括View,Controller和Model的实现。

基本步骤

1. 创建project。

2. 项目结构如下。

3. 项目的配置主要在manifest.json文件,组件的配置(model,router之类)在Component.js文件。

4. 在View中需要注意几点:配置controller控制页面逻辑,引入需要用到的lib的命名空间,使用model进行数据展示,注册事件触发controller逻辑。

5. Controller中,采用AMD的方式进行模块定义,并且注意利用onInit(),onExit()等7个基本方法,注意利用console.log()debug。

6. 前端可以自己mock数据,构建JSONModel进行测试,也可以配置OData数据源,通过OData JSONModel与后端进行数据交互。

7. 在SAP Gateway server上,使用T-code SEGW 进入SAP Gateway Service Builder界面,构建后端服务。关于后端OData Service的构建本文不做讨论。

8. 一个freestyle的project最简单也需要以上的操作。


SAP Fiori Elements

详细的基于Fiori Elements开发的基础教程在这里这里(这个链接可能需要SAP内部员工权限)。

基于Fiori Elements的开发,前后端概念比较模糊,前端是模板化的,而模板的渲染需要很多后端注解的支持,前后端耦合较高,且对CDS View有一定要求。如果不使用CDS View和注解,就需要使用OData注解,我个人并不推荐这种方式。

我花了一个粗浅的个人理解架构图。

基本步骤

1. 创建CDS View。CDS View中既要包含你要展示的数据,也要包含这些数据关于UI的注解。这些注解将告诉UI Template的组件如何展示你的数据。关于UI的注解推荐采用annotation extension的方式实现。

@ODate.publish: true注解将自动生成OData Service。

2. 创建project。

这里的project类型选择SAP Fiori Elements。目前提供了五种,基本SAP的界面类型都包含了,还可以写自己的扩展。

创建project的时候需要选用第一步中发布的OData Service作为数据源。

3. 创建好的project就可以直接访问了,Fiori Elements会自动根据你CDS View中的UI注解去渲染和展示数据。

项目的目录结构如下。

4. 可以通过在本地覆盖external Annotations的方式来overwirte CDS View的UI注解。注意这里注解都已经转化成了OData Annotation。

5. 如有需要,可以增加自己的扩展。但是只能是在template暴露的API范围内。在manifest.json中配置扩展信息。

6. 一个Fiori Elements的project,最复杂的部分就是CDS View的实现,而前端只需要选择合适的Template,连接到数据源就好了。如果没有自己的样式调整和扩展,基本不需要任何代码工作。


关于Smart Control

Smart Control是一些能够根据注解自动生成完成很多工作的组件,比如用Smart Field根据注解能自动生成value help,Smart Filter Bar + Smart Table生成的带有Filter Bar的Data Table

能省去很多配置和编码工作就能展示后端数据,完成search,filter,sort等很多功能。使用SAP Fiori Elements的限制在于,Templates只有五种,并且里边的组件都是封装好的,我们能做的扩展也很有限。

如果在freestyle的project中,使用各种Smart Control控件配合注解,我们能享受到一些UI注解带来的方便,类似于Fiori Elements的局部快速构建。但是不知道出于何种原因,SAP不再推荐使用Smart Control,

虽然我们依然能使用,但是在SAP的一些文档中已经把Smart Control的使用方法部分删除了。


总结

这两种开发方式各有优缺点。

freestyle的方式,是典型的MVC架构,开发既需要懂JavaScript的前端工程师,也需要懂ABAP的后端工程师。

优点:

  • 灵活,可配置
  • 基于SAPUI5的强大组件库,基本能满足所有UI需求
  • MVC架构,前后端分工明确,可并行开发

缺点:

  • 同时需要前端和后端开发人员
  • SAPUI5对于没接触过JavaScript的Abap开发人员来说,学习成本高
  • 开发周期长
  • 测试复杂

SAP Fiori Elements的方式,是SAP为了让ABAP开发人员能快速构建Fiori应用而开发的一种方式。

优点:

  • 开发速度快且易于维护
  • 在不同developer之间交接容易
  • 前端几乎无代码和测试工作
  • 测试简单。

缺点:

  • 灵活性差
  • 只能支持特定模板样式,扩展性差
  • 对复杂的增删改支持较差

如果你开发的App比较简单,有SAP Fiori Elements对应的模板,并且项目上没有熟悉JavaScript的工程师,那么SAP Fiori ELements无疑是一个好的选择。

如果你要开发一个UI复杂,业务逻辑和UI交互逻辑都需要大量定制化的App,那么还是选择freestyle的更为保险。

总体来说,SAP公司的风格是喜欢把所有的东西都封装进ABAP的开发范围。不管是Webdynpro也好,SAP Fiori Elements也好,SAP都是希望工程师能在ABAP范围内就完成工作,只关注ABAP技术和业务逻辑即可。

这对ABAP工程师来说是一件好事。但是请注意,最好在项目一开始就对所有的页面有一个大概了解,并确定是否能采用SAP Fiori ELements,避免采用了Fiori Elements进行到一半突然发现有很多不支持的界面,

不得不推倒使用freestyle重来的情况。

本文为欣欣念念原创并首发于博客园,转载请注明出处。

SAPUI5 freestyle vs SAP Fiori Elements —— 两种开发SAP UI5 Apps的方式对比的更多相关文章

  1. SAP Fiori里两种锁机制(lock)的实现

    方法1: ETAG机制 SAP CRM Fiori采用了这种机制. 看一个具体的例子来理解.假设我用用户名Jerry选中了这个ID为3456的Opportunity,点击Edit按钮之后: 会触发一个 ...

  2. java web学习总结(二十九) -------------------JavaBean的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  3. ASP.Net的两种开发模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

  4. javaweb学习总结(二十一)——JavaWeb的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  5. Android ListView两种长按弹出菜单方式

    转自:http://www.cnblogs.com/yejiurui/p/3247527.html package com.wyl.download_demo; import java.util.Ar ...

  6. 咸鱼入门到放弃10--javaweb的两种开发模式

    (本篇是之前方法的综合使用,新东西不多,其中也涉及三层架构的问题.此处直接引用了大佬blog:https://www.cnblogs.com/xdp-gacl/p/3908610.html) SUN公 ...

  7. JavaWeb学习 (二十)————JavaWeb的两种开发模式

    一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示

  8. javaweb(二十一)——JavaWeb的两种开发模式

    一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示

  9. javaweb基础(21)_两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

随机推荐

  1. FlashSocke 通过flash进行socket通信(as代码)

    在早期的项目中, 因为需要用IE上连接socket进行通信, 所以不得不借助于flash的socket功能,于是有了下面这个`FlashSocke`,供JavaScript调用 和 回调JavaScr ...

  2. 使用wireshark抓取TCP包分析1

    使用wireshark抓取TCP包分析1 前言 介绍 目的 准备工作 传输 创建连接 握手 生成密钥 发送数据 断开连接 结论 前言 介绍 本篇文章是使用wireshrak对某个https请求的tcp ...

  3. java9 - 异常处理

    Java异常 1.异常初见 System.out.println(1/0); 运行上面语句之后打印出: Exception in thread "main" java.lang.A ...

  4. LNMP搭建环境遇到的N多坑

    最近配置开发用的lnmp环境,环境配置完成后,爆500错误,查看nginx错误日志 open_basedir 将 PHP 所能打开的文件限制在指定的目录树,包括文件本身 错误日志显示,访问脚本不在 o ...

  5. 在Centos环境下安装兼容Apache2.4高版本SVN服务

    在阿里云Centos环境下,搭建PHP运行环境,PHP选择了php7版本,Mysql选择了5.7版本,Apache选择了2.4版本,在搭建SVN版本控制服务过程中出现了不兼容问题,当前环境下Apach ...

  6. 浙江省赛 C What Kind of Friends Are You?

    思路:一开始考虑n个朋友可以有c种可能,根据回答的问题,如果是yes那么可以确定一些朋友的范围,将原本不在这个范围内的删除即可:如果是"no",说明这些朋友都应该被删除,那么最后看 ...

  7. ACdream1032 Component 树形DP

    思路:dp[i][j]表示以i为根结点有j个连通节点的最小和, 当进行状态转移时需要利用01背包,节点u下面有多个子节点,每个子节点可以最多可以贡献cnt[v]个节点,cnt[v]表示以v为根结点的树 ...

  8. HDU5992 - Finding Hotels

    原题链接 Description 给出个二维平面上的点,每个点有权值.次询问,求所有权值小于等于的点中,距离坐标的欧几里得距离最小的点.如果有多个满足条件的点,输出最靠前的一个. Solution 拿 ...

  9. LitePal——Android数据库框架完整使用手册

    LitePal for Android LitePal是一个开源的Android库,使开发人员使用SQLite数据库非常简单.您无需编写任何SQL语句就可以完成大部分数据库操作,包括创建或升级表,增. ...

  10. 程序员的职场潜意识Top10

    什么叫潜规则?其实就是不明文规定的一些规则,关键是他没法明文规定,因为有的规则太没节操.在我们职场中有些规则你不遵守将举步艰难,而要玩转这些潜规则,那么你必须要具备如下10个潜意识: 1.项目会议.那 ...