本发明涉及通信技术,特别是一种支持多种应用容器的web应用框架及使用方法。
背景技术:
随着互联网的发展,人们使用软件应用的类型也越来广泛,iosapp、安卓app、微信小程序、自助终端应用、pc应用等。而作为系统开发者,为了满足更多的用户使用场景,增加用户使用量,一般都会开会用户常用的几种应用,如微信小程序、iosapp、安卓app。对于同一个系统,如果需要同时上微信小程序、iosapp、安卓app,就要分别开发在这3个平台上开发3个软件应用,但其基本的业务逻辑都是一样的,这样无疑有很大的重复工作量。这给项目版本的管理和维护都带来不小的难度。
技术实现要素:
针对现有技术中的问题,本发明提供一种支持多种应用容器的web应用框架及使用方法,可以节省成本,降低维护复杂性。
第一方面,本发明提供一种支持多种应用容器的web应用框架,包括:
web应用系统和应用容器;所述web应用系统在web页面的运行过程中与所述应用容器交互;
所述web应用系统包括:具有多个业务功能的业务层、业务设备层、容器调用单元;
其中,所述web页面展示的业务功能中具有所述业务设备层中抽象出的用于调用设备的设备接口;若所述设备接口被触发,则所述业务设备层获取应用容器的类型并与所述容器调用单元交互,实现所述应用容器中调用所述设备接口对应的设备。
可选地,所述应用容器包括:自助终端程序,ios程序、安卓程序和微信小程序中的一种和多种;
所述容器调用单元包括:对应自助终端程序的终端调用器、对应ios程序的ios调用器,对应安卓程序的安卓调用器和对应微信小程序的微信调用器。
可选地,所述业务设备层包括:设备实现单元、设备工厂单元、设备接口;
所述业务层的每一个业务功能可调用一个或多个业务设备层中的设备接口;
所述设备工厂单元,用于在所述设备接口被触发后获取设备接口所属的应用容器的类型,以及根据所述应用容器的类型,调用指定对应的设备实现单元;
所述设备实现单元包括:对应自助终端程序的终端设备实现单元、对应ios程序的ios设备实现单元,对应安卓程序的安卓设备实现单元,对应微信小程序的微信设备实现单元;
所述设备实现单元用于在所述设备工厂确定所述应用容器的类型之后,将触发的设备接口采用该应用容器类型匹配的设备实现单元进行参数转换,以及基于该应用容器类型对应的容器调用单元进行加载,进而在对应的应用容器中使用。
可选地,业务设备层中设备接口对应的设备包括:相机、录音或扫一扫。
可选地,所述业务层的多个业务功能增加时,每一业务功能均使用所述业务设备层中抽象出的用于调用设备的设备接口。
第二方面,本发明提供一种如上任一所述的web应用框架的使用方法,包括:
s1、在用户触发一应用容器加载web页面后,所述web页面展示的业务功能具有业务设备层中抽象出的用于调用设备的设备接口;
s2、若接收到所述设备接口的触发指令,则所述业务设备层获取应用容器的类型并与web应用系统的容器调用单元交互,实现所述应用容器中调用所述设备接口对应的设备。
可选地,所述步骤s2包括:
若接收到所述设备接口的触发指令,则所述业务设备层的设备工厂确定所述应用容器的类型,使得所述设备接口采用该应用容器类型匹配的设备实现单元进行参数转换,以及基于该应用容器类型对应的容器调用单元进行加载,进而在对应的应用容器中使用。
本发明具有的有益效果:
本实施例的web应用框架在不同应用平台上运行,仅需要为业务层的每个设备抽象统一的设备接口,进而为不同类型的应用容器都实现各自的设备调用,使得开发人员不需要关注是什么ios的应用、还是安卓的应用、或是微信小程序,也不用关注该应用上的设备怎么调用,只需要调用定义好的设备接口,然后可以根据不同的应用容器类型去调用不同的设备实现单元。
附图说明
图1为本发明一实施例提供的支持多种应用容器的web应用框架的示意图;
图2为本发明另一实施例提供的支持多种应用容器的web应用框架使用方法的示意图;
图3为本发明一实施例提供的终端app下运行的效果图;
图4为本发明一实施例提供的微信小程序下运行的效果图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
本实施例中的应用容器可理解为:各应用平台上支持内嵌web页面的带web容器的应用,如安卓app,iosapp,微信小程序等。
本实施例中的设备可理解为:在应用上能完成某个指定的与设备有关的操作的部件,如相机、扫一扫、录音等设备。
如图1所示,本实施例的支持多种应用容器的web应用框架,包括:
web应用系统和应用容器;所述web应用系统在web页面的运行过程中与所述应用容器交互;
本实施例的web应用系统包括:具有多个业务功能的业务层、业务设备层、容器调用单元;
其中,所述web页面展示的业务功能中具有所述业务设备层中抽象出的用于调用设备的设备接口;若所述设备接口被触发,则所述业务设备层获取应用容器的类型并与所述容器调用单元交互,实现所述应用容器中调用所述设备接口对应的设备。
举例来说,本实施例的应用容器可包括:自助终端程序,ios程序、安卓程序和微信小程序中的一种和多种;
所述容器调用单元包括:对应自助终端程序的终端调用器、对应ios程序的ios调用器,对应安卓程序的安卓调用器和对应微信小程序的微信调用器。
进一步地,上述的业务设备层可包括:设备实现单元、设备工厂单元、设备接口;
所述业务层的每一个业务功能可调用一个或多个业务设备层中的设备接口;
所述设备工厂单元,用于在所述设备接口被触发后获取设备接口所属的应用容器的类型,以及根据所述应用容器的类型,调用指定对应的设备实现单元;
所述设备实现单元包括:对应自助终端程序的终端设备实现单元、对应ios程序的ios设备实现单元,对应安卓程序的安卓设备实现单元,对应微信小程序的微信设备实现单元;
所述设备实现单元用于在所述设备工厂确定所述应用容器的类型之后,将触发的设备接口采用该应用容器类型匹配的设备实现单元进行参数转换,以及基于该应用容器类型对应的容器调用单元进行加载,进而在对应的应用容器中使用,如图3和图4所示。
可理解的是,本实施例的业务层的业务功能对应图1中的功能一、功能二(如朋友圈)、功能三(如交社保)等。业务设备层中设备接口对应的设备包括:相机、录音或扫一扫。所述业务层的多个业务功能增加时,每一业务功能均使用所述业务设备层中抽象出的用于调用设备的设备接口。
另外,本实施例中的设备实现单元在图1中采用终端相机实现、ios相机实现、安卓相机实现和微信相机实现示意性示出的。
在实际应用中,本实施例的设备工厂、设备实现、容器调用单元等在开发阶段编写一个能够使用的代码即可,如果增加业务层的业务功能,则可使用抽象出的设备接口即可,无需调整设备实现单元和容器调用单元。
也就是说,业务层的多个业务功能增加时,所述业务设备层的设备接口增加。
由此,本实施例的web应用框架在不同应用平台上运行,仅需要为业务层使用的各设备抽象统一的设备接口,进而为不同类型的应用容器都实现各自的设备调用,使得开发人员不需要关注是什么ios的应用、还是安卓的应用、或是微信小程序,也不用关注该应用上的设备怎么调用,只需要调用定义好的设备接口,然后可以根据不同的应用容器类型去调用不同的设备实现单元。
为了更好的理解本发明实施例的web应用框架,以下从程序代码开发阶段进行说明。
容器调用单元:web页面在运行过程中都可能会与应用容器交互,web调用微信、ios、安卓都不一样。所以需要分别为这些应用容器编写调用器。各调用器也需要进行抽象,对各设备的接口、方法名、入参、出参进行抽象,以可以满足各种设备调用时的要求。这样,web系统就可以通过这些调用器去调用各种类型的应用容器了。本实施例的各调用器可理解为各个应用容器的调用工具库。
设备接口:设备接口可为统一的标准设备接口,其在业务层实现,也用于展示在web页面。同一种设备在不同的应用容器中操作流程,方法参数都可能是不一样的。为了使各应用容器在业务调用设备的时候,不需要考虑各种应用容器上定义的接口方法、参数的差异。需要对不同应用容器上的同种设备进行抽象,抽象出其通用操作方法,和方法的入参和出参。
以从业务功能(相机)选照片举例说明上述的抽象内容:
应用容器:安卓小程序:
原安卓的接口方法名为:getpicture
参数有:
照片数量:
属性名:maximumimagescount,
数据类型:数值类型
照片来源:
属性名:sourcetype,
数据类型:数据类型(0、1)。
应用容器:微信小程序:
原微信小程序的接口方法名为:chooseimage
参数有:
照片数量:
属性名:count,
数据类型:数值类型
照片来源:
属性名:sourcetype,
数据类型:字符串类型。
抽象标准接口,可以理解为将上述接口方法和参数都统一了;
如接口方法可以统一成getpicture,
参数统一成:
照片数量:属性名:count,数据类型:数值类型
照片来源:属性名:sourcetype,数据类型:字符串
经过上述的抽象标准接口之后,业务功能要想获取照片的话就可以调用接口getpicture。
在功能需要拍照时,调用抽象标准接口,即标准的相机拍照接口。
设备实现单元:即自定义实现设备接口,对于每一种设备,在不同的应用容器上需要实现该设备在该应用容器上的操作。这里需要把业务转过来的准备参数转成在这个应用容器上能识别的参数,并根据这种应用容器的要求作一定的参数封装和转换,然后通过应用容器对应的调用器去调用最终的设备。
也就是说,设备实现单元把标准的参数转成具体应用调用的参数类型,并通过容器调用器调用应用里的设备。
设备工厂:在各业务模块中,如果需要调用设备,都会定义这种设备对应接口类型的变量。在编写代码的时候只需要写调用这个接口就行,但在实际运行过程中是需要调用这些接口的实现的,而且在不同的应用容器系统下调用的实现也是不一样的。
也就是说,执行调用时,设备工厂会先通过容器获取应用类型(ios,安卓,微信),然后根据应用类型去执行相应的相机拍照实现。
应用容器加载web端:应用容器加载web包括容器端和web端两部分。
应用容器端需要能控制web页面的加载,及相关异常情况的。此外容器端还需要封装接受web端调用方法的操作。
web端就是整个web系统,此外,在容器加载web过程中,web也需要根据不同的容器加载与之对应的样式、js插件等内容。
本实施例的web应用框架在不同应用平台上运行,仅需要为业务层的每个设备抽象统一的设备接口,进而为不同类型的应用容器都实现各自的设备调用。
根据本发明的另一方面,本发明还提供一种基于上述任意实施例的web应用框架的使用方法,该方法包括如下步骤:
s1、在用户触发一应用容器加载web页面后,所述web页面展示的业务功能具有业务设备层中抽象出的用于调用设备的设备接口;
s2、若接收到所述设备接口的触发指令,则所述业务设备层获取应用容器的类型并与web应用系统的容器调用单元交互,实现所述应用容器中调用所述设备接口对应的设备。
具体地,若接收到所述设备接口的触发指令,则所述业务设备层的设备工厂确定所述应用容器的类型,使得所述设备接口采用该应用容器类型匹配的设备实现单元进行参数转换,以及基于该应用容器类型对应的容器调用单元进行加载,进而在对应的应用容器中使用。
本实施例的web应用框架在不同应用平台上运行,仅需要为每个设备类型的设备定义标准的设备接口,并为不同类型的应用都实现各自的设备调用。使得开发人员不需要关注是什么ios的应用、还是安卓的应用、或是微信小程序,也不用关注该应用上的设备怎么调用,只需要调用定义好的标准接口,然后可以根据同的应用类型去调用不同的设备实现。
上述各个实施例可以相互参照,本实施例不对各个实施例进行限定。
最后应说明的是:以上所述的各实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。