CN113841371A - 用于将后端即服务与在线服务集成的方法、系统和计算机可读介质 - Google Patents
用于将后端即服务与在线服务集成的方法、系统和计算机可读介质 Download PDFInfo
- Publication number
- CN113841371A CN113841371A CN202080007981.6A CN202080007981A CN113841371A CN 113841371 A CN113841371 A CN 113841371A CN 202080007981 A CN202080007981 A CN 202080007981A CN 113841371 A CN113841371 A CN 113841371A
- Authority
- CN
- China
- Prior art keywords
- online service
- service
- data
- client application
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000013507 mapping Methods 0.000 claims abstract description 18
- 230000004044 response Effects 0.000 claims description 50
- 238000013473 artificial intelligence Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000002955 isolation Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002629 repopulating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种方法、系统和计算机可读介质,用于使客户端应用能够访问在线服务例如在线AI服务,而无需客户端应用的开发者完全理解在线服务的接口契约并编写将客户端应用直接与在线服务的接口集成的软件代码。在一方面中,自动分析在线服务的接口契约,并且向客户端应用开发者呈现用于配置客户端应用或客户端应用数据库与在线服务之间的数据字段的映射的选项。基于开发者的配置选择,自动生成用于在客户端应用或客户端应用数据库与在线服务之间交换数据的软件代码。软件代码的触发条件可以是数据库状态的变化、预定义的事件或从客户端应用接收的请求。
Description
技术领域
本公开内容涉及用于云计算平台的后端即服务的技术。具体地,本公开内容涉及用于由后端即服务生成以下软件代码的技术,所述软件代码使客户端应用能够与后端即服务进行交互以使用由云计算平台的在线服务提供的RESTful应用程序接口(applicationprogram interface,API)来访问在线服务。
背景技术
云计算是基于网络的计算(例如,基于因特网的计算)的形式,其使得能够通常通过因特网访问可配置的计算资源和能够以最小的管理工作快速地提供的较高级别的服务的共享池。云计算是另一范式转变,其随着从基于大型机的计算向被实现为服务的基于客户端-服务器的计算的转变而产生。云计算服务提供商通常通过按需创建供消费者使用的虚拟机来递送三种主要类型的服务(下文中称为云计算服务),基础设施即服务(infrastructure as a service,IaaS)、平台即服务(platformas a service,PaaS)和软件即服务(software as a service,SaaS)。IaaS提供可以供消费者租用和使用的计算基础设施。计算基础设施包括被虚拟化并在消费者之间共享的物理计算资源(例如处理器、存储器、存储装置、服务器、联网部件等)。PaaS提供如下平台,该平台允许消费者在不必构建和维护计算基础设施的情况下开发、运行和管理软件应用。SaaS基于订阅通过因特网按需提供在计算基础设施上运行的软件应用。
在线服务通过HTTP或HTTPS协议提供RESTful API。REST(表述性状态转移)或RESTful API使用HTTP或HTTPS请求在万维网上GET(查看),PUT(更新),POST(创建)和DELETE(删除)数据。RESTful Web服务通常是无状态的:RESTful服务本身不存储状态信息,而由客户端负责存储所有状态信息(例如会话数据)。在线服务包括提供运行网络服务器的RESTful API的软件应用,该网络服务器在物理机或虚拟机上运行。
客户端应用(即,在客户端计算设备上运行的软件应用)可以访问由在线服务提供的RESTful API。在线服务通常包括描述RESTful API的接口契约。接口契约定义并指定用于与在线服务进行交互的RESTful API的输入和输出。然而,在一些技术领域,尤其新出现的技术领域如人工智能,由在线服务提供的RESTful API尚未标准化。由于缺乏管理由在线服务提供的RESTful API的标准,每个在线服务的接口契约是不同的。例如,在没有接口契约的标准的情况下,不存在利用由各种在线服务提供的RESTful API访问和交换数据所需的数据格式的标准。为了在软件应用开发中使用给定的在线服务,应用开发者必须具有足够的技能和专长,以使用软件应用打算使用的给定的在线服务的接口契约来分析、理解和集成软件代码。由于新技术领域也可能遭受在该技术领域缺少具有足够技能和经验的应用开发者的事实,这个问题进一步恶化。
发明内容
本公开内容提供用于由云计算平台的后端即服务(通常已知且在下文中称为后端服务)生成软件代码以便于客户端应用访问在线服务的方法、系统和处理器可读介质。后端服务使在客户端设备上运行的客户端应用能够与后端服务进行交互,以使用由在线服务提供的RESTful应用程序接口(API)(例如,非标准化的基于HTTP的RESTful API)来访问在线服务。换言之,不需要客户端应用的软件开发者完全理解在线服务的接口契约或基于在线服务的接口契约编写软件代码,以便使客户端应用能够使用由在线服务提供的RESTfulAPI来访问在线服务。
与用于实现上述对在线服务的访问的现有技术相比,本公开内容中描述的方法可以表现出一个或若干个优点。第一,该方法可以消除客户端应用的软件开发者理解在线服务的接口契约以便客户端应用使用由在线服务提供的Restful API的需求。第二,该方法可以允许客户端应用的软件开发者编写一组软件功能并使用该组软件功能来与由多个不同的在线服务提供的不同的Restful API对接。第三,该方法可以通过向客户端应用的软件开发者所使用的客户端设备提供简化的用户接口以及通过生成用于与由在线服务提供的Restful API对接的软件代码来降低编程错误的风险。第四,该方法可以向客户端应用的软件开发者警告客户端应用当前正在使用的在线服务的接口契约的变化。第五,该方法可以允许客户端应用仅处理在线服务输出数据的客户端应用感兴趣的那些部分,从而减少客户端应用需要处理的数据量。第六,该方法可以减少或消除客户端应用处理与向在线服务发送请求或存储来自在线服务的响应有关的数据库访问的需求。第七,该方法可以减少或消除客户端应用处理监视数据库状态以进行更新的需求,所述更新可以触发客户端应用访问在线服务的需求。第八,该方法可以减少或消除客户端应用处理事件的监视的需求,所述事件可以触发客户端应用访问在线服务的需求。另外预期的优点和技术效果可以从本公开内容中显而易见。
根据本公开内容的第一方面,提供了一种由云计算平台的后端服务执行的方法。后端即服务从在线服务接收在线服务的接口契约。后端服务基于对接口契约的内省来生成配置选项。后端服务将配置选项发送至与客户端应用的软件开发者相关联的开发者设备。后端服务从开发者设备接收配置数据。后端服务基于由在线服务提供的RESTful API的表示和从开发者设备接收到的配置数据来生成软件代码。由在线服务提供的RESTful API的表示基于对在线服务的接口契约320的内省而生成。所生成的软件代码包括可执行指令,所述可执行指令在由后端服务执行时使客户端应用能够与后端服务124进行交互,以使用由在线服务提供的RESTful API来访问在线服务。在一些方面中,由在线服务提供的RESTfulAPI是非标准化的基于HTTP的RESTful API。
根据前述方面,该方法还包括:响应于检测到触发条件,由后端服务执行软件代码的可执行软件指令。后端服务执行软件指令会使后端服务进行以下操作:向在线服务发送在线服务查询;从在线服务接收在线服务响应;以及将客户端数据发送给客户端数据接收者,所述客户端数据至少部分地基于在线服务响应。
根据前述方面,配置选项包括用于将客户端数据的一个或更多个客户端数据字段映射到在线服务的一个或更多个在线服务数据字段的多个选项。向开发者设备提供数据字段映射选项可以实现上面列出的优点中的一个或更多个,例如简化在开发者设备上呈现的用户接口或减少编程错误。
根据前述方面中的任一方面,配置数据包括响应数据的一个或更多个客户端数据字段到在线服务的一个或更多个在线服务数据字段的映射。从开发者接收数据字段映射选择可以实现上面列出的优点中的一个或更多个,例如简化用户接口中的至少一项以及减少编程错误。
根据前述方面中的任一方面,响应数据包括在线服务响应的扁平化版本。使在线服务输出数据(即响应数据)扁平化可以通过过滤掉在线服务输出数据中的与客户端应用无关的部分来减少客户端应用需要处理的数据量。
根据前述方面中的任一方面,客户端数据接收者是客户端应用数据库。这可以减少或消除客户端应用处理用于存储来自在线服务的数据的数据库访问逻辑的需求。
根据本公开内容的前述方面中的任一方面,发送至在线服务的在线服务查询至少部分地基于从客户端应用数据库检索到的客户端数据。这可以减少或消除客户端应用处理用于检索要发送至在线服务的数据的数据库访问逻辑的需求。
根据前述方面中的一些方面,触发条件至少部分地基于对客户端应用数据库执行的数据库操作。这可以减少或消除客户端应用处理监视对数据库执行的数据库操作以对数据库进行更新的需求,更新可以触发对访问在线服务的需求。
根据前述方面中的一些方面,触发条件至少部分地基于事件来确定。这可以减少或消除客户端应用处理对以下事件进行监视的需求,所述事件触发访问在线服务的需求。
根据前述方面中的一些方面,事件至少部分地基于配置数据。允许开发者定义触发后端服务执行软件代码的一个或更多个事件可以在管理引起访问在线服务的需求的事件时实现特定于应用的灵活性。
根据前述方面中的一些方面,客户端数据接收者是客户端应用。这可以向希望使客户端应用管理数据库和编程逻辑本身的开发者授予更大的控制和灵活性。
根据前述方面中的任一方面,发送至在线服务的在线服务查询至少部分地基于从客户端应用接收的数据。这可以向希望使客户端应用在不需要数据库的情况下更直接地管理发送至在线服务的请求的内容的开发者授予更大的控制和灵活性。
根据任何前述方面,在线服务包括人工智能(artificial intelligence,AI)在线服务。这可以提供上面相对于AI在线服务列出的各种优点,AI在线服务倾向于具有如上面所讨论的非标准化的Restful API。
根据任何前述方面,在线服务提供表述性状态转移(representational statetransfer,REST)应用程序接口(API)。这可以提供上面相对于具有无状态RESTful API的在线服务列出的各种优点,在线服务通常要求状态数据由客户端应用存储和管理。
根据本公开内容的另外的第二方面,提供了一种包括指令的计算机可读介质,所述指令在由处理器执行时使处理器执行上面列出的任何方法。
附图说明
图1是直接访问基于云的在线服务的客户端应用的常规配置的框图。
图2是示出根据一些实施方式的用于递送云计算服务的云计算架构的框图。
图3是根据本公开内容的第一示例实施方式的借助于后端服务利用由数据库条件触发的代码来访问基于云的在线服务的客户端应用的配置的框图。
图4是根据本公开内容的第二示例实施方式的借助于后端服务利用由事件触发的代码来访问基于云的在线服务的客户端应用的配置的框图。
图5是根据本公开内容的第三示例实施方式的借助于后端服务利用通过接收客户端应用请求而触发的代码来访问基于云的在线服务的客户端应用的配置的框图。
图6是示出根据本公开内容的示例实施方式的用于使得能够由客户端应用访问在线服务的方法的操作的流程图。
图7是示出根据本公开内容的示例实施方式的将客户端应用的数据字段映射到在线服务的数据字段的后端服务的示例配置的框图。
图8是示出根据本公开内容的示例实施方式的由后端系统自动生成代码的框图。
具体实施方式
参照示出了实施方式的附图来做出本公开内容。然而,可以使用许多不同的实施方式,并且因此,不应将本说明书解释为限于本文中阐述的实施方式。相反,提供这些实施方式使得本公开内容将是透彻的和完整的。在可能的情况下,在附图和以下描述中使用相同的附图标记来指代相同的元件,并且在替选实施方式中使用撇号记号来指示相似的元件、操作或步骤。所示出的系统和设备的功能元件的单独的框或所示出的分离并不一定要求这样的功能的物理分离,因为这样的元件之间的通信可以在没有任何这样的物理分离的情况下通过消息传递、功能调用、共享的存储器空间等方式发生。因此,尽管在本文中为了易于说明而分开示出了功能,但是功能不必在物理上或逻辑上分离的平台中实现。不同的设备可以具有不同的设计,使得尽管一些设备在固定功能的硬件中实现一些功能,但是其他设备可以利用从机器可读介质获得的代码在可编程处理器中实现这样的功能。最后,除非上下文另外明确或固有地指出,否则以单数提及的元件可以是复数,或者以复数提及的元件可以是单数。
图1示出了用于在客户端设备13上运行的客户端应用12访问托管在服务器16上的在线服务14的常规架构10的示例框图。客户端应用12通过由在线服务14提供的RestfulAPI直接访问在服务器16上运行的在线服务14。这要求客户端应用12的开发者理解在线服务的接口契约并编写代码以通过由在线服务14提供的Restful API访问在线服务14。
本公开内容提供用于由云计算平台的后端即服务自动生成代码以便于客户端应用访问在线服务以实现客户端应用使用非标准化的基于HTTP的RESTful应用程序接口(API)来访问在线服务的示例方法、处理器可读介质、系统和设备。有利地,本公开内容的方法不需要客户端应用例如客户端应用12的软件开发者编写代码以使客户端应用能够通过由在线服务14提供的Restful API访问在线服务14。
图2是示意性地示出可以递送云计算服务的云计算架构的逻辑框图。云计算架构100(下文中称为云100)的所示逻辑图通常包括基础设施平台102(例如IaaS层)、应用平台104(例如PaaS层)和应用106(例如,SaaS层)。基础设施平台102包括物理硬件资源108以及将物理硬件资源108的抽象呈现给应用平台104的虚拟化层110。由虚拟化层110呈现的抽象取决于托管在应用平台104上的应用112的要求。物理硬件资源108包括:物理机114,其包括处理资源(例如,中央处理单元(central processing units,CPU)、图形处理单元(graphicprocessing units,GPU)、加速器、张量处理单元(tensor processing units,TPU));物理存储装置116,其包括存储资源,例如存储器(例如,静态随机存取存储器(staticrandomaccess memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)、永久性存储设备(例如硬盘驱动器、光盘驱动器或它们的组合);以及通常驻留在数据中心内的联网资源(未示出)。如在本领域中将理解的,数据中心包括物理硬件资源108(通常以服务器的形式)的集合,其可以用作包括处理资源、存储资源和联网资源的集体计算资源。在数据中心内,可以将多个服务器连接在一起以提供计算资源池,可以在该资源池上对虚拟实体进行实例化。数据中心可以彼此互连,以形成计算资源池,所述计算资源通过连接资源相互连接。连接资源可以采取物理连接的形式,例如以太网或光通信链路。
虚拟化层110通过提供基础设施即服务(Infrastructure as a Service,IaaS)设施来支持用于应用112的灵活且高效的多租户运行时间和托管环境。虚拟化层110包括虚拟化管理器或管理程序(未示出),虚拟化管理器或管理程序可以为正由应用平台104代管的每个应用112提供安全性和资源“沙箱”。每个“沙箱”可以被实现为虚拟机(VirtualMachine,VM)118,其可以包括适当的操作系统和对虚拟存储资源120的受控访问。
虚拟化层110对物理硬件资源108的虚拟化被认为是云100的基础技术。虚拟化是一种允许创建计算资源(例如,处理资源、存储资源和联网资源)的虚拟计算资源池的技术,所述计算资源通过连接资源相互连接。虚拟化可以采取实例化VM 118的形式,其对于网络上的另一实体以及对于在VM 118上执行的软件而言,与物理计算设备没有什么不同。VM118具有其自己的计算资源(例如,处理资源、存储资源和连接资源)集,可以在计算资源集上执行操作系统。VM 118可以具有能够被分配网络地址的虚拟网络接口。在基础资源与VM118之间,通常存在管理资源隔离和网络交互的管理程序(未示出)。VM 118的目的之一是提供与在云100上运行的其他进程的隔离。在最初开发时,VM 118是一种允许不同进程运行而不必担心单个错误进程将能导致整个系统崩溃的机制。替代地,错误进程将被包含至它自己的VM 118。这种隔离允许每个VM 118具有它自己的网络接口集。通常,单个基础计算资源可以支持多个虚拟实体。
本领域技术人员将理解,最近的发展是使用容器代替VM 118。如以上所提到的,每个VM 118通常包括其自己的操作系统,该操作系统通常增加冗余的计算、存储以及连接资源的使用率。容器允许单个OS内核支持多个隔离的应用。代替允许每个VM 118运行其自己的OS的管理程序,单个OS代管负责执行资源隔离的容器,否则所述容器将由VM 118提供。
应用平台104提供用于代管应用112的能力,并且包括应用平台服务122。应用平台服务122向托管在应用平台104上的应用112提供中间件应用服务和基础设施服务集。托管在应用平台104上的应用112可以在VM或物理机上运行。在图2所描绘的实施方式中,应用平台服务122包括后端即服务124。后端即服务124(在下文中称为后端服务124)是以下云服务模型:开发者将web或移动应用的所有幕后方面外包出去,使得他们只需要编写和维护前端。后端即服务供应商为服务器上发生的活动例如用户认证、数据库管理、远程更新和推送通知(针对移动应用)以及云存储和托管提供预先编写的软件。
应用平台服务122还包括用于向客户端应用提供数据库的数据库即服务126、用于将消息发布给订阅者消费者的消息即服务128以及使消费者能够创建、发布和维护应用程序接口(API)以访问其他云服务的应用程序接口(API)网关即服务。本领域技术人员将理解,应用平台服务112可以向消费者提供其他中间件应用服务,例如通知即服务、运行时间即服务等。来自消费者的应用112可以部署在相应的VM 118、容器或物理机114内并且在相应的VM 118、容器或物理机114内执行。
图3示出了后端服务124的第一示例实施方式,该后端服务124被配置成自动生成以下代码,所述代码使客户端应用312能够与后端即服务124进行交互以使用由在线服务314提供的RESTful API来访问在线服务314。如上所述,后端服务124托管在云计算平台100上。后端服务124与在客户端计算设备313上运行的客户端应用312和软件开发者所使用的计算设备318进行通信。客户端应用312可以是由软件开发者使用计算设备318(在下文中称为开发者设备318)开发和维护的软件应用。开发者设备318包括用于编写客户端应用312的代码的集成开发环境(integrated development environment,IDE)。客户端应用312可以以与图1的客户端应用12类似的方式使用一个或更多个在线服务。然而,在图3所示的实施方式中,如本文所述,客户端应用312经由后端服务124访问在线服务314。
后端服务124还与在服务器316上运行的一个或更多个在线服务例如在线服务314进行通信。在线服务314可以提供表述性状态转移(RESTful)API。接口契约320定义了RESTful API。接口契约320可以被存储为例如swagger文件,用于与在线服务314进行通信,调用或使用在线服务314。可替选地,接口契约320可以以另一种表示被存储,用于与在线服务314进行通信,调用或使用在线服务314。在一些实施方式中,在线服务314是在线人工智能(artificial intelligence,AI)服务。AI服务是部署在服务器316上的提供RESTful API的AI模型。由在线服务314提供的RESTful API的特征是推论/查询特征,这在下面详细描述。
后端服务124还与由云计算平台100的数据库即服务126(另外称为数据库服务126)提供的数据库362进行通信。在图3示出的所示实施方式中,数据库362由云计算平台100的数据库即服务126代管。然而,在其他实施方式中,其他平台可以代管数据库362。后端服务124与数据库362进行通信以将数据存储在数据库362中,检索存储在数据库362中的数据,以及修改存储在数据库362中的数据。在图3所示的实施方式中,客户端应用312通过向后端服务124发送客户端应用访问370来与数据库362进行交互,后端服务124又代表客户端应用312向数据库362发送客户端应用访问370。
后端服务124包括若干个功能模块,若干个功能模块包括内省模块354、用户接口(user-interface,UI)模块356和代码生成模块358。内省模块354被配置成向在线服务314发送针对接口契约320的请求382并从包括接口契约320的在线服务314接收响应383。内省模块354还被配置成通过对接口契约320进行内省(即,分析)来生成由在线服务314提供的Restful API的表示。UI模块356与在开发者设备318上运行的IDE的浏览器进行通信以提供简化的用户接口,该简化的用户接口使客户端应用312的软件开发者能够指定或输入配置选项378,以供代码生成模块358在生成软件代码360时使用,下面更详细说明。UI模块356还与开发者设备318进行通信以接收配置数据379,从开发者客户端318接收配置数据379。开发者设备318使用浏览器在所提供的简化用户接口中向客户端应用312的软件开发者呈现配置选项378。软件开发者使用开发者设备318的输入设备来选择配置选项378中的一个或更多个。开发者设备318接收由软件开发者选择的一个或更多个配置选项378的指示并且基于一个或更多个所选的配置选项378生成配置数据379。代码生成模块358从UI模块356接收配置数据379并且从内省模块354接收Restful API的表示。代码生成模块358被配置成基于从内省模块354接收的Restful API的表示和从UI模块356接收的配置数据379(例如数据字段映射、触发事件配置)自动生成软件代码360(在下文中称为代码360)。代码360包括能够由后端服务124执行的指令。当代码360由后端服务124执行时,代码360生成在线服务查询384,将在线服务查询384发送至在线服务314,从在线服务314接收在线服务响应386,处理在线服务响应386以及访问数据库362。后端服务执行代码360包括后端服务124执行代码360的指令。在所示的实施方式中,当触发条件发生时,触发代码360的执行。在一些实施方式中,当向数据库362中存储的数据库表添加行时发生触发条件372。代码360可以访问数据库362以从数据库362检索客户端数据376,或者可以访问数据库362以将响应数据377存储在数据库362中。出于本公开内容的目的,客户端数据376是在线服务查询384中包括的数据,并且响应数据377是在线服务响应386中包括的数据。在一些实施方式中,配置数据379包括数据库362中存储的数据库表的列之间的映射信息的列表以及在线服务查询384和在线服务响应386中的输入和输出属性。
图6示出了由后端服务124执行的用于使客户端应用例如客户端应用312能够与后端服务124进行交互以访问在线服务例如在线服务314的示例方法600。后端服务124的软件的引擎、例程或子例程可以执行方法600。考虑到本公开内容,用于执行方法600的后端服务124的软件的引擎、例程或子例程(或后端服务124的软件)的编码完全在本领域普通技术人员的范围内。方法600可以包括比所示出和描述的额外或更少的步骤,并且可以以不同的顺序执行。后端服务124的软件的计算机可读代码能够在虚拟机118上执行,能够在云计算平台100的物理机1114上执行,或者能够在云计算平台100的容器112中执行。
在步骤602处,后端服务124从所选的在线服务314检索接口契约320。在一些实施方式中,后端服务124的内省模块354检索接口契约320并且对接口契约320进行内省(即,分析)以便生成由在线服务314提供的Restful API的表示。例如,内省模块354可以对接口契约320进行内省以映射出用于在线服务314的输入JSON(Javascript对象标记)。在一些实施方式中,内省模块354对接口契约320中描述的REST API进行内省(即,分析),然后基于RESTAPI的输入/请求JSON生成配置选项378。配置选项378包括需要映射到数据库362中存储的数据库表中的列的属性列表。
在步骤604处,后端服务124的UI模块356基于从内省模块358接收的用户接口元数据生成配置选项378。配置选项378指示用于配置后端服务124以集成在线服务314的各种配置选项。在一些实施方式中,配置选项378包括用于将客户端数据376的一个或更多个客户端数据字段映射到在线服务314的一个或更多个在线服务数据字段的多个选项。在一些实施方式中,配置选项378设置了由在线服务314提供的RESTful API的不同的JSON属性。在一些实施方式中,内省模块354使用递归算法来生成用户接口元数据。
例如,在图7示出的示例配置场景中,在线服务314以两个在线服务数据字段in1和in2作为输入,并且在线服务314返回一个在线服务数据字段out1作为输出。客户端应用312使用客户端数据376的四个不同的客户端数据字段(例如,客户端应用数据库362中的四个列a、b、c和d)。在该示例场景中,配置选项数据378对应于用于将客户端数据字段(例如,客户端应用数据库362的列a、b、c和d)匹配到各种在线服务数据字段(in1、in2和out1)的多个选项。
在步骤606处,后端服务124的内省模块354经由UI模块356将配置选项378发送至开发者设备318。在一些实施方式中,配置选项378允许客户端应用312的软件开发者为从接口契约320获得的每个JSON属性输入或指定数据库列名称。开发者设备318的浏览器可以基于由内省模块354生成的用户接口元数据进行动态改变,其中不同输入字段基于在接口契约320中定义的到在线服务314的输入。在图7示出的示例配置场景中,UI模块354以数据的形式将配置选项378发送至开发者设备318,发送至在开发者设备318上运行的浏览器。浏览器允许客户端应用312的软件开发者将客户端数据字段(例如,客户端应用数据库362的列a、b、c和d)匹配到各种在线服务数据字段(in1、in2和out1)。
在步骤608处,UI模块354从开发者设备318接收配置数据379。在一些实施方式中,配置数据379包括由客户端应用312的软件开发者选择以将客户端数据376的一个或更多个客户端数据字段映射到在线服务314的一个或更多个在线服务数据字段的映射方案。在一些实施方式中,配置数据379为从接口契约320获得的每个JSON属性指定数据库列名称,以及指定用于存储在线服务响应386数据的数据库表。在图7示出的示例配置场景中,配置数据379是将存储在数据库362中的数据库表的特定列映射到由客户端应用312的软件开发者选择或配置的特定在线服务数据字段的数据。例如,如图所示,如在从开发者设备318发送至后端服务124的配置数据379中所反映的,客户端应用312的软件开发者已选择将a映射到in1,将b映射到in2,并且将d映射到out1。在不同的可替选配置场景(未示出)中,如果各个数据字段的数据类型允许这样的映射,则客户端应用312的软件开发者可能选择将a映射到in1,将b映射到in2,并且将两个元素数组(c,d)映射到out1。这两个映射中的任一个可以表示在由开发者设备318发送至UI模块354的配置数据379中。
在一些实施方式中,除了在客户端应用312与在线服务314之间的映射数据字段之外,配置选项378、配置数据379或者配置选项378和配置数据379二者可以包括与后端服务124的其他方面有关的信息。例如,一些实施方式可以允许客户端应用312的软件开发者通过定义触发代码360的执行的数据库操作来指定或管理触发(即,引起)代码360的执行的触发条件。例如,当发生向数据库362添加新记录的数据库操作时,可能发生触发条件。可替选地,客户端应用312的软件开发者可以定义触发代码360的执行的事件(称为客户端定义的事件488(参见图4))。可以在其他实施方式中使用其他类型的配置选项378、配置数据379或配置选项378和配置数据379二者。
在步骤610处,后端服务124的代码生成模块358基于由在线服务314提供的Restful API的由内省模块358生成的表示以及经由UI模块356从开发者设备318接收到的配置数据379生成代码360。代码360实现在线服务314到后端服务124中的集成。当代码360被执行时,代码360使客户端应用能够与后端服务(例如,数据库370)进行交互以使用由在线服务提供的RESTful API来访问在线服务314,以便于客户端应用访问在线服务。代码360可以例如通过以下操作来实现配置数据379中指定的客户端数据字段到在线服务数据字段的映射:定义如何使用来自客户端数据376的客户端数据字段构造对在线服务314的在线服务查询384;以及定义如何对来自在线服务314的在线服务响应386进行解析,以及如何将在线服务响应386中接收到的在线服务数据字段存储或转发为各种客户端数据字段(例如,在客户端应用数据库362的各个列中)。在一些实施方式中,通过将基于由在线服务314提供的Restful API的表示和配置数据379生成的代码片段与可以访问后端服务124的数据库362的模板代码进行组合来生成代码360。在一些实施方式中,通过将基于由在线服务314提供的Restful API的表示和配置数据379生成的代码片段与可以与事件系统464(图4中所示)进行交互的模板代码进行组合来生成代码360。
图8中示出了由代码生成模块358自动生成的代码360的示例。由内省模块354从在线服务314检索的接口契约320定义了多个在线服务数据字段704,包括输入itemId(数据类型number的变量)和输出itemId(数据类型number的变量)以及predict(数据类型number的变量)。接口契约320定义了由在线服务314提供的RestFul API:它定义了如何访问在线服务314,包括用于使用或访问在线服务314的协议(“http”)、url(“/”)、方法(“post”)、请求规范以及响应规范。请求规范标识请求的内容类型(“application/json”)以及作为响应的一部分所需的数据字段(输入itemId)。响应规范标识请求的内容类型(“application/json”)以及作为响应的一部分返回的数据字段(具有属性resp_data的类型object的数据,resp_data是具有项itemId(类型number)和predict(也是类型number)的数组)。在该示例中,输入itemId和输出itemId以及predict二者被标识为在线服务数据字段704。
从开发者设备318接收的配置数据379将客户端数据字段702a映射到在线服务数据字段itemId,并且将客户端数据字段702d映射到在线服务数据字段predict。基于配置数据379和由在线服务314提供的RESTful API的表示,代码生成模块358生成代码360。在一些实施方式中,代码生成模块358基于配置数据379和对接口契约320的内省来自动生成代码360。代码360的第一行802标识了被映射到在线服务数据字段704itemId的客户数据字段702a。变量itemIdSrc被分配标识客户端数据字段702a的值。
代码360的第二行804使用对应于客户端数据字段702a的变量itemIdSrc,以从数据库362检索存储在客户端数据372的列a中的值。变量itemIdProvided被分配从数据库362检索到的值。
代码360的第三行806使用itemIdProvided的值来提供在线服务数据字段704输入itemId以生成在线服务查询384。所生成的在线服务查询384存储在变量modelArtsRequestBody中。
因此,代码生成器358接收由在线服务314提供的RESTful API的表示和配置数据379并且生成实现数据字段映射的代码360。在一些实施方式中,除非接口契约320改变,否则可能不需要重新生成代码360。
返回图6,在步骤612处,响应于后端服务124检测到触发条件,执行代码360。在各个实施方式中,当后端服务124检测到不同的触发条件时,可以执行代码360的不同部分。在各个实施方式中,这些触发条件可以包括预定义的事件、数据库操作或来自客户端应用312的通信或请求的接收。因此,可以根据实施方式的配置和由后端服务124检测到的触发条件而在彼此相对的不同时间处执行代码360的各个不同部分。在下面更详细地描述由各个实施方式使用的触发条件。
在步骤614处,后端服务124执行代码360以生成在线服务查询384并将在线服务查询384发送至在线服务314发送至在线服务314。在线服务查询384可以包括在线服务数据字段704,例如图8中示出的示例输入itemId。在图3的示例后端服务124中,后端服务124执行代码360以至少部分地基于从数据库362检索到的客户端数据376来生成在线服务查询384。例如,如参照图8所描述的,在线服务查询384包括使用从存储在客户端数据库362中的数据库表的列a检索到的客户端数据376增添的输入在线服务数据字段704itemId(对应于客户端数据字段702a)。
在一些实施方式中,代码360包括编程逻辑,该编程逻辑在检测到触发条件时被执行。包括编程逻辑的代码360在由后端服务124执行时,在步骤614处生成在线查询384并将在线查询384发送至在线服务314。代码360可以指定触发代码360的执行以生成和发送在线服务查询384的数据库操作。触发代码360的执行的数据库操作的这种规范可以基于由开发者在配置数据379中提供的数据字段的映射。例如,如果客户端数据字段702a和d被映射到在线服务数据字段704,则代码360的编程逻辑可以监视包含列a和d的数据库表,以获取保存到该表的新行或记录、或者该表中具有列a或d的修改值的任何行。这些事件中的任一个将构成触发条件的发生,从而使代码360被执行。代码360的执行导致代码360生成在线服务请求384并将在线服务请求384发送至在线服务314。
在步骤616处,后端服务124从在线服务314接收在线服务响应386。在参照图8描述的示例中,在线服务响应386将包括数据对象,该数据对象包含具有两个元素的数组:在线服务数据字段704itemId和predict。
在步骤618处,后端服务124将响应数据377发送至客户端应用数据库362。然而,如下所述,其他实施方式可以将响应数据377发送至不同的客户端数据接收者。发送至数据库362(或其他客户端数据接收者)的响应数据377至少部分地基于从在线服务314接收的在线服务响应386的内容。因此,在图8的示例中,在线服务响应386提供分别映射到客户端数据字段702a和d的在线服务数据字段704itemId和predict的值。虽然在图8示出的代码360的片段中未示出,但是在一些实施方式中,自动生成的代码360的附加部分可以对在线服务响应386进行解析并将所接收的itemId和predict的值存储在客户端应用数据库362的列a和d(对应于客户端数据字段702a和d)中。因此,由后端服务124执行代码360而存储在数据库362中的响应数据377基于在线服务响应386,并且将被发送至数据库362(或其他客户端数据接收者)。
在一些实施方式中,响应数据377可以是在线服务响应386的扁平化版本。例如,如果在线服务314发送复杂的数据对象作为在线服务响应386的一部分,则这些数据对象可以减少到其构成的在线服务数据字段704。可以基于配置数据379将由在线服务314发送的作为在线服务响应386的一部分的记录的数组或列表存储在数据库362中,作为数据库表中的行。类似地,由在线服务314发送的作为在线服务响应386的一部分的复杂数据对象,后端服务126可以基于配置数据379将复杂数据对象的属性映射到数据库表中的列,其中这些各种属性的值存储在数据库表的行中。
在一些实施方式中,UI模块356与开发者设备318的浏览器进行通信,以在浏览器中呈现可用于客户端应用312经由后端服务124使用的一个或更多个在线服务。步骤602处的标识在线服务可以通过查询在线服务的本地、远程或分布式列表来执行。该列表可以包括与每个相应的在线服务相关联的标识符以及指示后端服务124是否被允许与每个在线服务进行交互的指示符。该列表还可以提供每个可用的在线服务或其他数据或元数据的描述,以便于客户端应用312的开发者选择在线服务中的一个或更多个。可以基于关于客户端应用312的信息或其他标准来构建或过滤该列表。
在一些实施方式中,后端服务124的UI模块356向开发者设备318发送在线服务选项信息。在一些实施方式中,在线服务选项信息包括所标识的可用的在线服务的列表。在一些实施方式中,在线服务选项信息由后端服务124的内省模块354基于所标识的可用的在线服务的列表来生成。开发者设备318(例如,在开发者设备318上运行的浏览器)与后端服务124的UI模块356进行交互,以接收在线服务选项信息并在在开发者设备318上运行的浏览器中呈现在线服务选项信息380。在线服务选项信息以如下方式呈现在在开发者设备118上运行的浏览器中,该方式便于或简化客户端应用312的软件开发者使用开发者设备318对在线服务中的一个或更多个的选择。
在一些实施方式中,后端服务124从开发者设备318接收在线服务选择信息。在线服务选择信息标识客户端应用312将使用的可用的在线服务中的一个或更多个。
如上所述,在图3的示例实施方式中,后端服务124可以响应于不同的触发条件而执行代码360的不同部分。在各种实施方式中,触发条件基于对数据库362执行的数据库操作。例如,触发条件可以指示新数据已经被保存到数据库362的特定数据库表,数据库362的数据库表中的数据已被修改,或者数据库中的数据字段需要用来自在线服务314的数据来增添。代码360在由后端服务124执行时,使用从数据库表的行中检索到的客户端数据376来生成在线服务请求384,数据库表的行已如触发条件所指示地被新保存或修改。在一些实施方式中,代码360可以作为保存和触发操作的一部分与数据库362相关联,其中当数据库中的数据更改时,触发条件被后端服务124检测到。
因此,后端服务124可以允许开发者仅经由后端服务124提供的API来处理数据库362中的数据,这对于客户端应用312的软件开发者来说将是正常的。在线服务314对客户端应用312的软件开发者是隐藏的。有利地,本公开内容的后端服务124消除了客户端应用312的软件开发者编写将在线服务314与后端服务124集成的任何代码的需求。这是因为用于将在线服务314与后端服务124集成的代码360由后端服务124自动生成。
现在将参照图4和图5描述替选实施方式。
参照图4,示出了托管在云计算平台100上的后端服务124-1的第二实施方式。后端服务124-1包括内省模块354-1、UI模块356-1、代码生成模块358-1、数据库362-1和事件系统464。内省模块354-1、UI模块356-1和数据库362-1类似于图3中描述的内省模块354、UI模块356、代码生成模块358和数据库362,并且因此不再详细描述。代码生成模块358-1被配置成生成代码360-1。
事件系统464被配置成提供触发(例如,引起)代码360-1的执行的触发条件。内省模块354-1、UI模块356-1和代码生成模块358-1都被配置成使用事件系统464代替使用数据库操作作为触发(例如,引起)代码360-1的执行的触发条件,或者除了使用数据库操作之外还使用事件系统464作为触发(例如,引起)代码360-1的执行的触发条件。
在图4示出的实施方式中,基于可以触发代码460的执行的事件(由事件系统464输出的触发事件472)确定触发条件。在一些实施方式中,事件(例如,由事件系统464输出的触发事件472)可以包括客户端定义的事件488。响应于作为配置选项378-1的一部分呈现给开发者的事件配置选项,这些客户端定义的事件488可以由客户端应用312的软件开发者定义为配置数据379-1的一部分。后端服务124-1可以潜在地基于其他变量例如在线服务314的接口契约320或对数据库362执行的数据库操作来预先定义用于触发代码360-1的执行的其他触发事件472,而无需来自客户端应用312的软件开发者的输入。在一些实施方式中,用于触发代码360-1的执行的事件的示例是系统崩溃事件。在检测到系统崩溃事件时,可以执行代码460以更新数据库362中的可能已因系统崩溃而损坏或不完整的所有记录,从而根据需要使用新的在线服务请求384来重新增添那些数据库字段。在另一示例中,客户端应用312是安全相机应用,并且在线服务314是作为AI在线服务提供的面部识别软件。当相机捕获到进入安全区域的人的照片时,这构成触发事件472。在线服务请求384中包括到捕获到的照片的文件路径。在线服务314将作为AI在线服务提供的面部识别软件的面部识别模型应用于照片,以检查该人是否是已知罪犯。
参照图5,示出了后端服务124-2的第三示例实施方式。该实施方式不包括数据库362作为后端服务124-2的一部分。相反,后端服务124-2使用代码360-2分别转化和过滤客户端应用312和在线服务314每一个的数据字段来在客户端应用312与在线服务314之间来回传递查询和响应信息。内省模块354-2、UI模块356-2和代码生成模块358-2都被相应地配置。发送至开发者设备318的配置选项378可以包括关于由在线服务314提供的RESTful API的附加文档,以允许客户端应用312的开发者将必要的数据库访问逻辑编码到客户端应用312中。在该实施方式中,触发后端服务124-2执行代码360-2的触发条件可以是从客户端应用312接收到客户端请求数据570。在线服务请求384至少部分地基于客户端请求数据570来构造。此外,在该实施方式中,代替客户端数据接收者是数据库,客户端数据接收者是客户端应用312。
后端服务124、124-1使客户端应用312的软件开发者能够在不需要编写任何代码的情况下配置数据库362与在线服务314的输入和输出之间的关系。后端服务124、124-1自动生成将对在线服务314的访问集成到后端服务124、124-1中的代码360、360-2,以使客户端应用312能够使用由在线服务提供的非标准化的基于HTTP的RESTful API来访问在线服务314。后端服务124、124-1的软件代码360-1、360-2向客户端应用312提供对在线服务314的访问。软件代码360-1、360-2在由后端服务124-1、124-2执行时,使客户端应用312能够与后端服务124进行交互并使用由在线服务314提供的非标准化的基于HTTP的RESTful API来访问在线服务314。这消除了客户端应用312的软件开发者编写专用软件代码作为客户端应用312的一部分以与在线服务314的非标准化的RESTful API对接的需求。相反,客户端应用312仅需要与后端服务124、124-1的数据库362进行通信。
通过允许客户端应用312的软件开发者配置后端服务124-2的单个API而不是编写与由在线服务314提供的一个或更多个非标准化的RESTful API对接的软件代码,后端服务124-2使客户端应用312能够访问在线服务314。后端服务124-2基于由客户端应用312的软件开发者选择的开发者配置选项自动生成使客户端应用312能够访问在线服务314的代码360-2,并在运行时间期间根据需要执行代码360-2。因此,客户端应用312对在线服务314的访问由后端服务124-2的代码360-2来实现。这消除了编写专用软件代码作为客户端应用312的一部分以与由在线服务314提供的非标准化的RESTful API对接的需求。相反,客户端应用312仅需要能够与后端服务124-2的单个配置的API进行通信。
以上各种实施方式被描述为使用云计算平台100来部署或代管后端服务124、124-1、124-2以及使用服务器来代管在线服务314。在一些实施方式中,在线服务314可以托管在网络服务器、计算集群、另一云计算平台或其他网络连接的计算机上。
客户端应用312被描述为托管在经由通信网络与后端服务124、124-1、124-2进行通信的计算设备(例如,客户端设备313)上或在经由通信网络与后端服务124、124-1、124-2进行通信的计算设备(例如,客户端设备313)运行的软件应用。在一些实施方式中,代管或运行客户端应用312的客户端设备313可以是个人计算机、智能电话或其他移动电子设备、服务器。在一些实施方式中,客户端应用可以是与后端服务124、124-1、124-2托管在同一云计算平台100上的软件即服务(Saas)。
后端服务124、124-1、124-2、客户端设备313、开发者设备318或在线服务314之间的通信可以在不同的实施方式之间变化。这样的通信可以经由通信总线,其中通信部件中的一个或更多个可以和与其进行通信的部件实现在同一物理计算机上。该通信可以通过通信链路例如有线或无线数字通信链路发生,并且可以经由一个或更多个中介或经由通信网络诸如因特网来进行。
本文中所述的流程图和附图中的步骤和操作仅出于示例的目的。在不脱离本公开内容的教导的情况下,这些步骤和操作可以存在许多变型。例如,可以以不同的顺序执行步骤,或者可以添加、删除或修改步骤。
考虑到本公开内容,用于执行所描述的上述方法的软件的编码在本领域普通技术人员的范围内。能够由一个或更多个相应设备的一个或更多个处理器执行以执行上述方法的机器可读代码可以存储在机器可读介质诸如数据管理器的存储器中。术语“软件”和“固件”在本公开内容内是可互换的,并且包括存储在存储器中以供处理器执行的任何计算机程序,所述存储器包括随机存取存储器(Random Access Memory,RAM)存储器、只读存储器(Read Only Memory,ROM)存储器、EPROM存储器、电EPROM(EEPROM)存储器和非易失性RAM(non-volatile RAM,NVRAM)存储器。以上存储器类型仅是示例,并且因此不限于可用于存储计算机程序的存储器的类型。
概要
还公开了所公开范围内的所有值和子范围。此外,尽管本文中公开和示出的系统、设备和过程可以包括特定的多个元件,但是可以将系统、设备和组件修改为包括额外或更少的这样的元件。尽管本文中描述了若干个示例实施方式,但是修改、改编和其他实现是可行的。例如,可以对附图中示出的元件进行替换、添加或修改,并且可以通过替换、重新排序或向所公开的方法添加步骤来修改本文中所述的示例方法。另外,阐述了许多具体细节以提供对本文中描述的示例实施方式的透彻理解。然而,本领域普通技术人员将理解,可以在没有这些具体细节的情况下实践本文中描述的示例实施方式。此外,未详细描述公知的方法、过程和元件,以免模糊本文中描述的示例实施方式。本文中描述的主题旨在覆盖和包含技术上的所有适当改变。
尽管至少部分地在方法方面描述了本公开内容,但是本领域普通技术人员将理解,本公开内容还涉及用于执行所描述的方法的方面和特征中的至少一些的各种元件,无论是通过硬件、软件还是它们的组合的方式。因此,本公开内容的技术解决方案可以在非易失性或非暂态机器可读介质(例如,光盘、闪存等)中实施,在其上存储有有形存储在其上的可执行指令,所述可执行指令使处理设备能够执行本文中公开的方法的示例。
术语“处理器”可以包括任何可编程系统,包括使用微处理器/控制器或纳米处理器/控制器、数字信号处理器(digital signal processors,DSP)、专用集成电路(application specific integrated circuits,ASIC)、现场可编程门阵列(field-programmable gate arrays,FPGA)精简指令集电路(reduced instruction setcircuits,RISC)、逻辑电路以及能够执行本文中所述的功能的任何其他电路或处理器的系统。术语“数据库”可以指代数据主体、关系数据库管理系统(relational databasemanagement system,RDBMS)中的任一种或指代二者。如本文中所使用的,数据库可以包括数据的任何集合,包括分层数据库、关系数据库、平面文件数据库、对象关系数据库、面向对象的数据库以及存储在计算机系统中的记录或数据的任何其他结构化集合。以上示例仅是示例,并且因此不旨在以任何方式限制术语“处理器”或“数据库”的定义和含义。
在不脱离权利要求的主题的情况下,本公开内容可以以其他特定形式来实施。所描述的示例实施方式在所有方面应被认为仅是说明性的而非限制性的。本公开内容旨在涵盖和包含技术上的所有适当改变。因此,本公开内容的范围由所附权利要求而不是由前述描述来描述。权利要求的范围不应由示例中阐述的实施方式来限制,而是应给出与整个说明书一致的最宽泛的解释。
Claims (16)
1.一种方法,包括:
由后端服务从在线服务接收接口契约;
由所述后端服务向开发者设备发送基于对所述接口契约的内省而确定的配置选项;
由所述后端服务从所述开发者设备接收配置数据;以及
由后端服务基于对所述接口契约的内省和所述配置数据生成包括可执行指令的软件代码。
2.根据权利要求1所述的方法,还包括:
响应于检测到触发条件,由所述后端服务执行所述软件代码的可执行指令以进行如下操作:
向所述在线服务发送在线服务查询;
从所述在线服务接收在线服务响应;以及
向客户端数据接收者发送响应数据,所述响应数据至少部分地基于所述在线服务响应。
3.根据权利要求1或2所述的方法,其中,所述配置选项包括用于将所述响应数据的一个或更多个客户端数据字段映射到所述在线服务的一个或更多个在线服务数据字段的多个选项。
4.根据权利要求3所述的方法,其中,所述配置数据包括所述响应数据的一个或更多个客户端数据字段到所述在线服务的一个或更多个在线服务数据字段的映射。
5.根据权利要求2至4中任一项所述的方法,其中,所述响应数据是所述在线服务响应的扁平化版本。
6.根据权利要求1至5中任一项所述的方法,其中,所述客户端数据接收者是数据库。
7.根据权利要求6所述的方法,其中,发送至所述在线服务的所述在线服务查询至少部分地基于从所述数据库检索的客户端数据。
8.根据权利要求7所述的方法,其中,所述触发条件至少部分地基于对所述客户端应用数据库执行的数据库操作。
9.根据权利要求7所述的方法,其中,所述触发条件至少部分地基于事件。
10.根据权利要求9所述的方法,其中,所述事件至少部分地基于所述配置数据。
11.根据权利要求1至5中任一项所述的方法,其中,所述客户端数据接收者是客户端应用。
12.根据权利要求11所述的方法,其中,发送至所述在线服务的所述在线服务查询至少部分地基于从所述客户端应用接收的数据。
13.根据权利要求1至12中任一项所述的方法,其中,所述在线服务包括人工智能在线服务。
14.根据权利要求1至13中任一项所述的方法,其中,所述在线服务提供表述性状态转移(REST)应用程序接口(API),并且其中,所述软件代码使客户端应用能够与所述后端服务进行交互以使用所述RESTful API来访问在线服务。
15.一种包括指令的计算机可读介质,所述指令在由机器执行时使所述机器执行根据权利要求1至14中任一项所述的方法。
16.一种包括指令的计算机程序,所述指令在由机器执行时使所述机器执行根据权利要求1至14中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/076517 WO2021168640A1 (en) | 2020-02-25 | 2020-02-25 | Method, system and computer-readable medium for integrating a backend-as-a-service with an online service |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113841371A true CN113841371A (zh) | 2021-12-24 |
CN113841371B CN113841371B (zh) | 2024-01-09 |
Family
ID=77491767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080007981.6A Active CN113841371B (zh) | 2020-02-25 | 2020-02-25 | 用于将后端即服务与在线服务集成的方法、系统和计算机可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220413812A1 (zh) |
CN (1) | CN113841371B (zh) |
WO (1) | WO2021168640A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312812A (zh) * | 2013-06-27 | 2013-09-18 | 新浪网技术(中国)有限公司 | 一种移动应用的业务处理方法、装置及系统 |
US20150040016A1 (en) * | 2013-07-30 | 2015-02-05 | Divya Jindal | Settings management of an online service |
CN106464736A (zh) * | 2014-10-30 | 2017-02-22 | 环球互连及数据中心公司 | 用于基于云的服务交换的实时配置和管理的互连平台 |
CN107534586A (zh) * | 2015-05-11 | 2018-01-02 | 电子湾有限公司 | 网站流量控制的系统和方法 |
CN109074265A (zh) * | 2016-03-28 | 2018-12-21 | 甲骨文国际公司 | 移动云服务的预先形成的指令 |
CN109754090A (zh) * | 2018-12-27 | 2019-05-14 | 第四范式(北京)技术有限公司 | 支持执行多机器学习模型预测服务的分布式系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924569B2 (en) * | 2009-12-17 | 2014-12-30 | Intel Corporation | Cloud federation as a service |
CN105610923A (zh) * | 2015-12-23 | 2016-05-25 | 北京华康嘉合科技有限公司 | 一种基于云计算的数据处理系统和方法 |
CN107222542B (zh) * | 2017-06-08 | 2020-08-11 | 东华大学 | 一种云服务管理系统的构建方法 |
-
2020
- 2020-02-25 CN CN202080007981.6A patent/CN113841371B/zh active Active
- 2020-02-25 WO PCT/CN2020/076517 patent/WO2021168640A1/en active Application Filing
-
2022
- 2022-08-25 US US17/895,780 patent/US20220413812A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312812A (zh) * | 2013-06-27 | 2013-09-18 | 新浪网技术(中国)有限公司 | 一种移动应用的业务处理方法、装置及系统 |
US20150040016A1 (en) * | 2013-07-30 | 2015-02-05 | Divya Jindal | Settings management of an online service |
CN106464736A (zh) * | 2014-10-30 | 2017-02-22 | 环球互连及数据中心公司 | 用于基于云的服务交换的实时配置和管理的互连平台 |
CN107534586A (zh) * | 2015-05-11 | 2018-01-02 | 电子湾有限公司 | 网站流量控制的系统和方法 |
CN109074265A (zh) * | 2016-03-28 | 2018-12-21 | 甲骨文国际公司 | 移动云服务的预先形成的指令 |
CN109754090A (zh) * | 2018-12-27 | 2019-05-14 | 第四范式(北京)技术有限公司 | 支持执行多机器学习模型预测服务的分布式系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021168640A1 (en) | 2021-09-02 |
CN113841371B (zh) | 2024-01-09 |
US20220413812A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606565B2 (en) | Visual devops systems and methods | |
US10565086B2 (en) | Service modeling and virtualization | |
US10999234B1 (en) | Message processing using messaging services | |
US9792163B1 (en) | Decentralized control plane for a computing system | |
US10498625B1 (en) | Distributed testing service | |
EP3404542A1 (en) | Data pipeline architecture for analytics processing stack | |
US10089082B2 (en) | Visual devops systems and methods | |
US7996850B2 (en) | Dynamic business object properties for SOA architectures | |
US20170116051A1 (en) | Processing event messages for user requests to execute program code | |
US10719505B2 (en) | Database server system monitoring | |
US10397051B1 (en) | Configuration and testing of network-based service platform resources using a service platform specific language | |
US10203937B1 (en) | Grand unified processor | |
US10891569B1 (en) | Dynamic task discovery for workflow tasks | |
EP4264427A1 (en) | Multi-tenant control plane management on computing platform | |
US9336020B1 (en) | Workflows with API idiosyncrasy translation layers | |
US10013449B1 (en) | Validating and non-validating secondary indexes for a table in a non-relational data store | |
US11595299B2 (en) | System and method of suppressing inbound payload to an integration flow of an orchestration based application integration | |
US7996828B2 (en) | Back-end field control for multiple software layers | |
US10182104B1 (en) | Automatic propagation of resource attributes in a provider network according to propagation criteria | |
Loria et al. | An efficient real-time architecture for collecting IoT data | |
US10951540B1 (en) | Capture and execution of provider network tasks | |
CN112579319A (zh) | 一种基于LRU Cache优化的服务调用方法及装置 | |
EP3570513A1 (en) | Internet of things structure with a 3d adaption matrix | |
CN116057512A (zh) | 智能分布式追踪上下文注入 | |
CN113841371B (zh) | 用于将后端即服务与在线服务集成的方法、系统和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220211 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |