一种接口的实现方法、装置和设备与流程

文档序号:14522728阅读:170来源:国知局
一种接口的实现方法、装置和设备与流程

【技术领域】

本发明涉及计算机应用技术领域,特别涉及一种接口的实现方法、装置和设备。



背景技术:

无论是终端设备与服务端设备(包括云端设备),还是终端设备与终端设备之间,都需要通过通道进行数据传输。然而,目前通道协议种类繁多,例如终端设备与服务端设备之间的通道协议包括mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)、ccp(cloudchannelprotocol,云通道协议)等,终端设备之间的通道协议包括蓝牙、nfc(nearfieldcommunication,近场通信)等,每个通道协议分别具有各自的软件框架,代码之间差异很大。这就造成支持不同协议的业务模块,需要在代码中写明其所支持通道协议的实现细节,这就给终端设备端的业务开发能力带来很高的要求,也造成各业务模块的实现繁琐。



技术实现要素:

有鉴于此,本发明提供了一种接口的实现方法、装置和设备,以便于降低对终端设备端的业务开发能力的要求以及简化业务模块的实现。

具体技术方案如下:

本发明提供了一种接口的实现方法,完成对通道的初始化后,执行以下数据传输处理:

获取来自业务模块的第一数据后,接口调用所述通道的第一发送函数,以在所述通道上发送所述第一数据;或者,

获取在所述通道上发送来的第二数据后,接口调用业务模块注册的回调函数,以将所述第二数据提供给业务模块进行处理。

根据本发明一优选实施方式,该方法还包括:

终端设备开机时,所述接口执行所述对通道的初始化;或者,

所述接口接收到第一数据后,若尚未执行所述对通道的初始化,则执行所述对通道的初始化。

根据本发明一优选实施方式,所述对通道的初始化包括:

所述接口调用所述通道的协商函数,以依据预先配置的通道建立参数,与服务端设备建立长连接并在该长连接上建立协议通道。

根据本发明一优选实施方式,在所述接口调用所述通道的第一发送函数之前,还包括:

所述接口提供给业务模块的第二发送函数被调用后,获取来自业务模块的第一数据,并将预先配置的业务标识和服务器标识作为所述第一发送函数的参数。

根据本发明一优选实施方式,所述接口调用业务模块注册的回调函数时,将所述第二数据作为所述回调函数的参数。

根据本发明一优选实施方式,该方法还包括:

若接收到切换通道的指令,则转至执行对另一通道的初始化,以将数据传输切换至所述另一通道。

根据本发明一优选实施方式,切换前和切换后的通道采用不同的通道协议。

根据本发明一优选实施方式,所述切换通道的指令由所述业务模块发送给所述接口;或者,由所述业务模块从在通道上发送来的第二数据中解析得到切换指令后转发给所述接口。

根据本发明一优选实施方式,所述通道采用的通道协议包括:

消息队列遥测传输mqtt、连接模式网络服务cmns、云通道协议ccp、近场通信nfc或蓝牙。

本发明还提供了一种接口的实现装置,该装置包括:

初始化单元,用于执行对通道的初始化;

发送单元,用于获取来自业务模块的第一数据后,调用所述通道的第一发送函数,以在所述通道上发送所述第一数据;

接收单元,用于获取在所述通道上发送来的第二数据后,调用业务模块注册的回调函数,以将所述第二数据提供给业务模块进行处理。

根据本发明一优选实施方式,所述初始化单元,具体用于在终端设备开机时,执行所述对通道的初始化;或者,在所述发送单元接收到第一数据后,若尚未执行所述对通道的初始化,则执行所述对通道的初始化。

根据本发明一优选实施方式,所述初始化单元在执行对通道的初始化时,具体执行:调用所述通道的协商函数,以依据预先配置的通道建立参数,与服务端设备建立长连接并在该长连接上建立协议通道。

根据本发明一优选实施方式,所述发送单元提供给业务模块的第二发送函数被调用后,获取来自业务模块的第一数据,并将预先配置的业务标识和服务器标识作为所述第一发送函数的参数。

根据本发明一优选实施方式,所述接收单元,还用于将所述第二数据作为所述回调函数的参数。

根据本发明一优选实施方式,该装置还包括:

切换单元,用于接收切换通道的指令后,触发所述初始化单元执行对另一通道的初始化,以将所述发送单元和接收单元进行的数据传输切换至所述另一通道。

根据本发明一优选实施方式,切换前和切换后的通道采用不同的通道协议。

根据本发明一优选实施方式,所述切换通道的指令由所述业务模块发送给所述切换单元;或者,由所述业务模块从在通道上发送来的第二数据中解析得到切换指令后转发给所述切换单元。

根据本发明一优选实施方式,所述通道采用的通道协议包括:

mqtt、cmns、ccp、nfc或蓝牙。

本发明还提供了一种设备,包括

一个或者多个处理器;

存储器;

一个或者多个程序,所述一个或者多个程序存储在所述存储器中,被所述一个或者多个处理器执行以实现如下操作:

获取来自业务模块的第一数据后,调用所述通道的第一发送函数,以在所述通道上发送所述第一数据;或者,

获取在所述通道上发送来的第二数据后,调用业务模块注册的回调函数,以将所述第二数据提供给业务模块进行处理。

由以上技术方案可以看出,本发明通过一个接口作为通道和业务模块之间的桥梁,由该接口完成通道的初始化、通道发送函数的调用以及业务模块的回调,使得业务模块无需关心具体通道协议的实现细节,降低了对终端设备端的业务开发能力的要求以及简化业务模块的实现。

【附图说明】

图1为本发明实施例提供的一种典型的系统架构图;

图2为本发明实施例提供的另一种典型的系统架构图;

图3为本发明实施例提供的通道切换的实例图;

图4为本发明实施例提供的装置结构图;

图5为本发明实施例提供的设备结构图;

图6为本发明实施例提供的一种应用场景的示意图。

【具体实施方式】

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

本发明的核心思想在于,在业务模块和通道之间定义一层接口,接口通常指的是计算机不同功能层之间的通信规则,在本发明实施例中称其为yunio接口,由该yunio接口完成业务层与数据传输层之间的通信转化,即完成业务模块和通道之间数据传输的协调。

首先对本发明的系统架构进行简单介绍:一种典型的系统架构如图1中所示,终端设备需要与服务端设备之间进行交互,从而从服务端设备获取服务。那么终端设备与服务端设备之间需要建立通道。在本发明实施例中,yunio接口在业务模块与通道之间,负责业务模块与通道之间的交互协调。对于服务端设备而言,可以是一个服务器,也可以是一个服务器集群。对于服务端的实现方式本发明并不加以限制。

另一种典型的系统架构如图2中所示,终端设备需要与另一终端设备之间进行交互,那么两个终端设备之间需要建立通道。在本发明实施例中,yunio接口在业务模块与通道之间,负责业务模块与通道之间的交互协调。对于另一终端设备而言,可以是采用本发明实施例提供的yunio接口,也可以不采用。

在本发明实施例中,通道指的是在两个设备之间所建立连接的基础上,用于传输信令或数据的通路。如上所述,通道可以在终端设备与服务端设备之间建立,也可以在终端设备之间建立。对于终端设备与服务端设备之间建立的通道可以采用诸如mqtt、cmns、ccp等协议;对于终端设备与终端设备之间建立的通道可以采用诸如nfc、蓝牙等协议。

下面对yunio接口的具体实现进行详述。yunio接口主要包括三方面的处理:初始化、数据发送(向通道方向发送)和数据接收(从通道方向接收),下面分别对这几个处理进行详述。

其中初始化是在进行数据发送和数据接收之前需要执行的,初始化主要是对通道进行初始化,即调用通道的协商函数,该协商函数能够依据预先配置的通道建立参数与服务端设备连接长连接并在该长连接上建立协议通道。具体地,通道的协商函数负责通道的建立,当yunio接口调用该协商函数时,将预先配置于yunio接口的通道建立参数作为该协商函数的参数,使得该协商函数在执行时,能够依据通道建立参数完成通道的建立。

该对通道进行初始化的处理可以存在但不限于两个执行时机:

第一个执行时机为终端设备开机启动时,yunio接口执行对通道的初始化,这种情况下可以预先配置默认的通道,终端设备开机启动时,yunio接口对默认的通道进行初始化处理。例如,yunio接口向操作系统提供一个初始化函数:intyunio_init(void),当操作系统启动过程中该初始化函数被调用时,yunio接口执行对通道的初始化处理。

第二个执行时机为yunio接口接收到来自业务模块的数据,为了方面描述,在后续实施例中将来自业务模块的数据称为第一数据,将从通道接收到的数据称为第二数据。例如,业务模块需要向服务端设备请求服务时,或者业务模块需要向其他终端设备传输数据时,yunio接口会接收到来自业务模块的第一数据,此时发现尚未执行对对应通道的初始化,则开始执行对对应通道的初始化。

在本发明实施例中,yunio接口能够支持多种类型的通道,只需要预先在yunio接口中配置对应的通道建立参数即可。其中通道建立参数可以包括诸如服务端设备的ip地址、端口号、密钥等,主要是为了进行长连接的建立以及基于该长连接的通道协商。

本发明一个实施例中,业务模块指的是负责对网络事件或本地事件进行响应并处理的业务逻辑,例如,可以是一个消息总线,以负责功能模块(例如各应用之间,应用与系统之间等)消息互转。

在本发明实施例中,业务模块需要通过通道向对端传输数据时,可以调用yunio接口提供的发送函数,也就是说,yunio接口向业务模块提供了一个发送函数,例如intyunio_push(char*data,intin_len)。当业务模块需要发送数据时,调用该发送函数,将要发送的数据作为该发送函数的参数,传递给yunio接口。对于yunio接口,其提供给业务模块的发送函数被调用后,调用通道的发送函数,并将业务模块发送的数据作为通道的发送函数的参数。通道的发送函数主要执行将数据在通道上的发送,为了保证数据在通道上的发送,以及标识数据来源,在调用通道的发送函数时,还会进一步将诸如appkey、serverid等信息作为通道的发送函数的参数。

通道的发送函数被调用后,会将数据依据相应的协议类型进行封装后,通过通道发送给对端。若对端是服务端设备且是云端的服务器集群,由于服务器集群对于同一个终端设备而言,是同享同一个通道的,那么为了区分具体的服务器,在服务器端,会存在一个服务端路由设备,负责依据数据包中携带的serverid信息将数据转发至对应的服务器。该部分是对端执行的处理,本发明并不加以限制。

对于对端通过通道发送来的数据即第二数据,通道的接收函数会对第二数据进行解封装,然后提供给yunio接口。

基于实时性角度考虑,由于对端发送来的数据需要让业务模块能够及时获取,因此yunio接口可以设计成回调方式,即业务模块向yunio接口预先注册有回调函数,一旦yunio接口从通道接收到第二数据,就调用该回调函数,并将第二数据作为回调函数的参数。当业务模块注册的函数被调用后,会对第二数据进行处理。其中业务模块第二数据的处理由业务模块具体的业务逻辑确定,例如将第二数据提供给对应的应用。

例如,yunio接口预先定义回调函数的注册规则,例如按照如下形式进行注册:

intyunio_on_read_message(constchar*appkey,read_message_funcread_message_func)。

其中read_message_func为回调的函数定义,message为传递的参数,typedefint(*read_message_func)(constchar*message)。

若在通道有数据发送过来,则执行read_message_func的实例。

通常,同一时间终端设备与对端设备只能使用一个通道,但鉴于本发明提供的yunio接口能够支持多种类型的通道,因此,本发明实施例还提供了一种机制,终端设备与对端设备之间能够进行通道切换,该通道切换同样可以在yunio接口处实现。即当yunio接口接收到切换通道的指令后,开始执行对另一通道的初始化,以将数据传输切换至另一通道。

该通道切换的指令由本端的业务模块负责发送给yunio接口。一种实现方式为:业务模块主动向yunio接口发送通道切换指令;另一种实现方式为:业务模块接收到对端设备发送来的数据,进行解析后确定是通道切换指令,则将该通道切换指令转发给yunio接口。

对于通道切换指令的触发策略可以灵活配置,例如可以在当前通道上连续发生了n次数据传输失败时,则进行通道切换;再例如当服务端设备升级,推送支持新的通道协议的服务数据时,等等。

举一个例子,如图3所示,假设终端设备与服务端设备正采用ccp通道进行数据传输,此时ccp通道提供的发送函数和接收函数体现为图中的ccp模块。但连续发生了n次数据传输失败,则业务模块可以向yunio接口发送通道切换指令。yunio接口接收到通道切换指令后,可以调用当前通道的通道断开函数(该通道断开函数也体现为图中的ccp模块),断开当前通道。

然后,yunio接口开始对mqtt通道进行初始化,即调用mqtt通道的协商函数,建立与服务端设备的长连接,并在该长连接上协商建立mqtt通道。后续接收到来自业务模块的数据后,调用mqtt通道的发送函数,从而在mqtt通道上发送来自业务模块的数据,mqtt通道的协商函数、发送函数和接收函数体现为图中的mqtt模块。对于在通道上发送来的数据,由mqtt模块提供给yunio接口后,由yunio接口调用业务模块注册的回调函数,以将从mqtt通道发送来的数据提供给业务模块进行处理。这样就完成了从ccp通道切换为mqtt通道。

以上是对本发明所提供方法进行的详细描述,下面对本发明提供的装置进行详细描述。

图4为本发明实施例提供的装置结构图,该装置用于实现上述yunio接口的功能,即可以体现为yunio接口。如图4所示,该装置可以包括:初始化单元01、发送单元02和接收单元03,还可以包括切换单元04,其中各组成单元的主要功能如下:

初始化单元01负责执行对通道的初始化。其中,初始化的处理可以存在但不限于两个执行时机:第一个执行时机是在终端设备开机时,执行对通道的初始化。第二个执行时机是在发送单元接收到第一数据后,若尚未执行对通道的初始化,则执行对通道的初始化。

具体地,初始化单元01在执行对通道的初始化时,可以调用通道的协商函数,以依据预先配置的通道建立参数,与服务端设备建立长连接并在该长连接上建立协议通道。在本发明实施例中,yunio接口能够支持多种类型的通道,只需要预先在yunio接口中配置对应的通道建立参数即可。其中通道建立参数可以包括诸如服务端设备的ip地址、端口号、密钥等,主要是为了进行长连接的建立以及基于该长连接的通道协商。

后续终端设备与对端设备之间的数据传输由发送单元02和接收单元03执行:

发送单元02负责获取来自业务模块的第一数据后,调用通道的第一发送函数,以在通道上发送所述第一数据。具体地,发送单元02提供给业务模块的第二发送函数被调用后,获取来自业务模块的第一数据,并将预先配置的appkey和serverid等作为第一发送函数的参数。

接收单元03负责获取在所述通道上发送来的第二数据后,调用业务模块注册的回调函数,以将所述第二数据提供给业务模块进行处理。基于实时性角度考虑,由于对端发送来的数据需要让业务模块能够及时获取,因此yunio接口可以设计成回调方式,即业务模块向yunio接口预先注册有回调函数,一旦yunio接口从通道接收到第二数据,就调用该回调函数,并将第二数据作为回调函数的参数。当业务模块注册的函数被调用后,会对第二数据进行处理。其中业务模块第二数据的处理由业务模块具体的业务逻辑确定,例如将第二数据提供给对应的应用。

切换单元04负责接收切换通道的指令后,触发初始化单元01执行对另一通道的初始化,以将发送单元02和接收单元03进行的数据传输切换至另一通道。对于通道切换指令的触发策略可以灵活配置,例如可以在当前通道上连续发生了n次数据传输失败时,则进行通道切换;再例如当服务端设备升级,推送支持新的通道协议的服务数据时,等等。切换前和切换后的通道可以采用不同的通道协议。

切换通道的指令可以由业务模块主动发送给切换单元04。也可以由业务模块从在通道上发送来的第二数据中解析得到切换指令后转发给切换单元04。

该装置所涉及的通道采用的通道协议可以包括:mqtt、cmns、ccp等,这种情况下对端设备通常为服务端设备,还可以包括:nfc或蓝牙等,这种情况下对端设备通常也是终端设备。

本发明实施例提供的上述方法和装置可以以设置并运行于设备中的计算机程序体现。该设备可以包括一个或多个处理器,还包括存储器和一个或多个程序,如图5中所示。其中该一个或多个程序存储于存储器中,被上述一个或多个处理器执行以实现本发明上述实施例中所示的方法流程和/或装置操作。例如,被上述一个或多个处理器执行的方法流程,可以包括:

获取来自业务模块的第一数据后,调用所述通道的第一发送函数,以在所述通道上发送所述第一数据;

获取在所述通道上发送来的第二数据后,调用业务模块注册的回调函数,以将所述第二数据提供给业务模块进行处理。

本发明可以广泛地应用于物联网中物联终端设备与云端服务设备之间的数据传输,或者物联终端设备之间的数据传输。其中物联终端设备可以包括智能电视、智能空调、智能热水器、智能冰箱、智能空气净化器等智能家电设备,智能手机、平板电脑、笔记本电脑等智能移动设备,智能手表、智能眼镜、智能手环等可穿戴式设备,智能体温计、智能体重仪、智能血压仪等智能医疗设备,还可以包括智能汽车等多种物联终端设备。

下面举一个具体的应用场景:

以智能汽车为例,在智能汽车的操作系统中可以预置本发明实施例提供的上述yunio接口,智能汽车可以通过该yunio接口与云端服务设备建立通道后,从云端服务设备获取多种服务,如图6中所示。假设智能汽车的yunio接口配置的默认通道协议类型为ccp,那么当智能汽车的操作系统启动时,yunio接口调用ccp通道的初始化函数,完成智能汽车与云端服务设备,即图中的id.router之间的ccp通道建立。当智能汽车需要向云端请求服务时,例如请求导航服务,则导航类app可以将要发送的请求提供给业务模块,即图中的id.jscore,由id.jscore对该请求进行处理后,通过调用yunio接口提供的发送函数将该请求提供给yunio接口。yunio接口调用ccp通道的发送函数,由该发送函数对该请求进行ccp封装后,将封装后的请求以及appkey、serverid通过ccp通道发送给id.router,由id.router依据appkey、serverid将请求转发给对应的服务设备,即导航服务设备。

对于导航服务设备返回的数据,yunio接口接收到该数据(该数据已由ccp通道的接收函数进行解封装)后,调用id.jscore注册的回调函数,将该数据提供给id.jscore,由id.jscore转发至对应的app。

对于其他类型的服务设备,例如音乐服务设备、天气服务设备等,均可以采用ccp通道与智能汽车之间进行数据传输。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1