著录项信息
专利名称 | 一种应用程序的一体化开发系统、方法及装置 |
申请号 | CN201210421564.3 | 申请日期 | 2012-10-29 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2014-02-19 | 公开/公告号 | CN103593173A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/44 | IPC分类号 | G;0;6;F;9;/;4;4;;;H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 百度在线网络技术(北京)有限公司 | 申请人地址 | 北京市海淀区上地十街10号百度大厦三层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 百度在线网络技术(北京)有限公司 | 当前权利人 | 百度在线网络技术(北京)有限公司 |
发明人 | 林仕鼎;童遥;柳俊中;黎科峰;朱倩;王骕 |
代理机构 | 北京清亦华知识产权代理事务所(普通合伙) | 代理人 | 宋合成 |
摘要
本发明提出了一种应用程序的一体化开发系统,包括:开发者客户端,用于向用户客户端和云端服务器发送开发者文件;云端服务器,用于根据执行环境对业务逻辑代码进行识别以获得云端逻辑代码,并对数据代码进行处理并与用户客户端同步数据代码;用户客户端,用于根据执行环境对业务逻辑代码进行识别以获得用户逻辑代码,并接收云端服务器发送的同步的数据代码。本发明还提出了一种应用程序的一体化开发方法、云端服务器和用户客户端。本发明的系统根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端,使得开发人员在开发时无需区分云端服务器端代码或客户端代码,让随意背景的开发者群体都可以独立开发完整的Web应用程序。
1.一种应用程序的一体化开发系统,其特征在于,包括开发者客户端、用户客户端和云端服务器,其中,
所述开发者客户端,用于向所述用户客户端和云端服务器发送开发者文件,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;
所述云端服务器,用于根据执行环境对所述业务逻辑代码进行识别以获得所述云端逻辑代码,并对所述数据代码进行处理并与所述用户客户端同步所述数据代码;以及所述用户客户端,用于根据执行环境对所述业务逻辑代码进行识别以获得所述用户逻辑代码,并接收所述云端服务器发送的同步的数据代码。
2.如权利要求1所述的应用程序的一体化开发系统,其特征在于,还包括:
中间数据订阅服务器,用于接收所述开发者客户端发送的数据订阅请求,并根据所述数据订阅请求从对应的云端服务器获得对应的开发者数据发送至所述用户客户端。
3.如权利要求1所述的应用程序的一体化开发系统,其特征在于,所述云端服务器还用于将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。
4.如权利要求2所述的应用程序的一体化开发系统,其特征在于,所述云端服务器还用于将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。
5.如权利要求1-4任一项所述的应用程序的一体化开发系统,其特征在于,中间数据订阅服务器还用于从所述云端服务器获得相应的多个子数据结构,并将所述多个子数据结构拼接为对应的开发者数据。
6.如权利要求5所述的应用程序的一体化开发系统,其特征在于,所述云端服务器还用于对自身存储的所述多个子数据结构进行监控,并在所述多个子数据结构中的至少一个发生变化之后,通过所述中间数据订阅服务器将变化后的数据发送至所述用户客户端。
7.如权利要求3所述的应用程序的一体化开发系统,其特征在于,所述云端服务器还用于对所述多个子数据结构进行存储封装以补充存储信息。
8.一种应用程序的一体化开发方法,其特征在于,包括以下步骤:
云端服务器接收并保存开发者客户端发送的开发者文件,并在用户客户端请求时将所述开发者文件发送至用户客户端,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;以及
所述用户客户端和云端服务器分别根据执行环境对所述业务逻辑代码进行识别以获得所述用户逻辑代码和云端逻辑代码,且所述云端服务器对所述数据代码进行处理并与所述用户客户端同步所述数据代码。
9.如权利要求8所述的应用程序的一体化开发方法,其特征在于,还包括:
中间数据订阅服务器接收所述开发者客户端发送的数据订阅请求,并根据所述数据订阅请求从对应的云端服务器获得对应的开发者数据发送至所述用户客户端。
10.如权利要求8所述的应用程序的一体化开发方法,其特征在于,还包括:
所述云端服务器将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。
11.如权利要求8所述的应用程序的一体化开发方法,其特征在于,还包括:
中间数据订阅服务器从所述云端服务器获得相应的多个子数据结构,并将所述多个子数据结构拼接为对应的开发者数据。
12.如权利要求11所述的应用程序的一体化开发方法,其特征在于,还包括:
所述云端服务器对自身存储的所述多个子数据结构进行监控,并在所述多个子数据结构中的至少一个发生变化之后,通过所述中间数据订阅服务器将变化后的数据发送至所述用户客户端。
13.如权利要求11所述的应用程序的一体化开发方法,其特征在于,还包括:
所述云端服务器对所述多个子数据结构进行存储封装以补充存储信息。
14.一种云端服务器,其特征在于,包括:
接收模块,用于接收开发者客户端发送的开发者文件,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;
逻辑代码识别模块,用于根据执行环境对所述业务逻辑代码进行识别以获得所述云端逻辑代码;以及
数据代码识别模块,用于对所述数据代码进行处理并与用户客户端同步所述数据代码。
15.如权利要求14所述的云端服务器,其特征在于,所述数据代码识别模块还用于将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。
16.如权利要求15所述的云端服务器,其特征在于,还包括:
监控模块,用于对自身存储的所述多个子数据结构进行监控,并在所述多个子数据结构中的至少一个发生变化之后,通过所述数据代码识别模块与所述用户客户端进行同步。
17.如权利要求16所述的云端服务器,其特征在于,所述数据代码识别模块还用于对所述多个子数据结构进行存储封装以补充存储信息。
18.一种用户客户端,其特征在于,包括:
接收模块,用于接收开发者客户端发送的开发者文件,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;
逻辑代码识别模块,用于根据执行环境对所述业务逻辑代码进行识别以获得所述用户逻辑代码;以及
数据同步模块,用于与云端服务器进行数据同步。
一种应用程序的一体化开发系统、方法及装置\n技术领域\n[0001] 本发明涉及互联网云开发技术领域,特别涉及一种应用程序的一体化开发系统、方法、云端服务器及用户客户端。\n背景技术\n[0002] 随着互联网云技术的发展,应用程序的云开发已经越来越普及,并受到开发人员和用户的欢迎。现有的应用程序的云开发技术中,开发人员需要同时开发服务器与客户端两侧的代码逻辑,并制定各类接口定义和数据传输标准及格式,导致了如下缺点:\n[0003] 1、要求开发人员同时具有服务器端与客户端开发背景,对开发人员要求较高。\n[0004] 2、将服务器提供的各种功能以URL(Uniform/Universal ResourceLocator,统一资源定位符)的方式发布为资源,需要制定大量的接口标准,使开发人员反复纠结于使用URL,表单,AJAX,WebService,script嵌入等或其它各种方式调用服务器端的资源或向客户端传值。\n[0005] 3、由于服务器与客户端通常使用两种不同的语言或两种完全不同的编程模型,造成两侧代码无法通用,为保证兼容性,经常需要为相同功能和逻辑分别开发用于服务器和用于客户端的代码,从而造成大量重复性开发,占用开发人员大量精力,增加了开发成本。\n发明内容\n[0006] 本发明的目的旨在至少解决上述技术缺陷之一。\n[0007] 为此,本发明的目的在于提出一种应用程序的一体化开发系统、方法及装置,以实现根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端,使得开发人员在开发时无需区分云端服务器端代码或客户端代码,让随意背景的开发者群体都可以独立开发完整的Web应用程序。\n[0008] 为达到上述目的,本发明第一方面的实施例提出了一种应用程序的一体化开发系统,包括开发者客户端、用户客户端和云端服务器,其中,所述开发者客户端,用于向所述用户客户端和云端服务器发送开发者文件,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;所述云端服务器,用于根据执行环境对所述业务逻辑代码进行识别以获得所述云端逻辑代码,并对所述数据代码进行处理并与所述用户客户端同步所述数据代码;所述用户客户端,用于根据执行环境对所述业务逻辑代码进行识别以获得所述用户逻辑代码,并接收所述云端服务器发送的同步的数据代码。\n[0009] 根据本发明实施例的应用程序的一体化开发系统,通过使用统一的开发语言,使云端服务器、客户端之间的代码可以通用,在应用程序实际运行时,系统将根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端或两端通用,使得开发人员在开发时无需区分云端服务器端代码或客户端代码,即抹平了传统的云端服务器、客户端的界限,打破云端服务器端、客户端开发角色的严格区分,让随意背景的开发者群体都可以独立开发完整的Web应用程序。\n[0010] 在本发明的一个实施例中,所述应用程序的一体化开发系统还包括:中间数据订阅服务器,用于接收所述开发者客户端发送的数据订阅请求,并根据所述数据订阅请求从对应的云端服务器获得对应的开发者数据发送至所述用户客户端。\n[0011] 在本发明的一个实施例中,所述云端服务器还用于将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。\n[0012] 在本发明的一个实施例中,所述中间数据订阅服务器还用于从所述云端服务器获得相应的多个子数据结构,并将所述多个子数据结构拼接为对应的开发者数据。\n[0013] 在本发明的另一个实施例中,所述云端服务器还用于对自身存储的所述多个子数据结构进行监控,并在所述多个子数据结构中的至少一个发生变化之后,通过所述中间数据订阅服务器将变化后的数据发送至所述用户客户端。\n[0014] 在本发明的另一个实施例中,其特征在于,所述云端服务器还用于对所述多个子数据结构进行存储封装以补充存储信息。\n[0015] 本发明第二方面的实施例提出了一种应用程序的一体化开发方法,包括以下步\n骤:云端服务器接收并保存开发者客户端发送的开发者文件,并在用户客户端请求时将所述开发者文件发送至用户客户端,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;所述用户客户端和云端服务器分别根据执行环境对所述业务逻辑代码进行识别以获得所述用户逻辑代码和云端逻辑代码,且所述云端服务器对所述数据代码进行处理并与所述用户客户端同步所述数据代码。\n[0016] 根据本发明实施例的应用程序的一体化开发方法,通过使用统一的开发语言,使云端服务器、客户端之间的代码可以通用,在应用程序实际运行时,系统将根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端或两端通用,使得开发人员在开发时无需区分云端服务器端代码或客户端代码,即抹平了传统的云端服务器、客户端的界限,打破云端服务器端、客户端开发角色的严格区分,让随意背景的开发者群体都可以独立开发完整的Web应用程序。\n[0017] 在本发明的一个实施例中,所述应用程序的一体化开发方法还包括:中间数据订阅服务器接收所述开发者客户端发送的数据订阅请求,并根据所述数据订阅请求从对应的云端服务器获得对应的开发者数据发送至所述用户客户端。\n[0018] 在本发明的一个实施例中,所述应用程序的一体化开发方法还包括:所述云端服务器将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。\n[0019] 在本发明的一个实施例中,所述应用程序的一体化开发方法还包括:所述中间数据订阅服务器从所述云端服务器获得相应的多个子数据结构,并将所述多个子数据结构拼接为对应的开发者数据。\n[0020] 在本发明的一个实施例中,所述应用程序的一体化开发方法还包括:所述云端服务器对自身存储的所述多个子数据结构进行监控,并在所述多个子数据结构中的至少一个发生变化之后,通过所述中间数据订阅服务器将变化后的数据发送至所述用户客户端。\n[0021] 在本发明的一个实施例中,所述应用程序的一体化开发方法还包括:所述云端服务器对所述多个子数据结构进行存储封装以补充存储信息。\n[0022] 本发明第三方面的实施例提出了一种云端服务器,包括:接收模块,用于接收开发者客户端发送的开发者文件,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;逻辑代码识别模块,用于根据执行环境对所述业务逻辑代码进行识别以获得所述云端逻辑代码;数据代码识别模块,用于对所述数据代码进行处理并与所述用户客户端同步所述数据代码。\n[0023] 根据本发明实施例的云端服务器,自动进行代码识别,以及数据的拆分、监控、序列化、发送等操作,作为应用程序的一体化开发系统的重要组成部分,为开发人员减小开发代码的复杂度、降低开发成本提供了可能。\n[0024] 在本发明的一个实施例中,所述数据代码识别模块还用于将所述数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。\n[0025] 在本发明的一个实施例中,所述云端服务器还包括:监控模块,用于对自身存储的所述多个子数据结构进行监控,并在所述多个子数据结构中的至少一个发生变化之后,通过所述数据代码识别模块与所述用户客户端进行同步。\n[0026] 在本发明的一个实施例中,所述数据代码识别模块还用于对所述多个子数据结构进行存储封装以补充存储信息。\n[0027] 本发明第四方面的实施例提出了一种用户客户端,包括:接收模块,用于接收开发者客户端发送的开发者文件,其中,所述开发者文件包括业务逻辑代码和数据代码,所述业务逻辑代码包括云端逻辑代码和用户逻辑代码,且所述云端逻辑代码和用户逻辑代码具有不同的执行环境;逻辑代码识别模块,用于根据执行环境对所述业务逻辑代码进行识别以获得所述用户逻辑代码;数据同步模块,用于与云端服务器进行数据同步。\n[0028] 根据本发明实施例的用户客户端,自动进行代码识别、数据同步等操作,作为应用程序的一体化开发系统的重要组成部分,为开发人员减小开发代码的复杂度、降低开发成本提供了可能。\n[0029] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。\n附图说明\n[0030] 本发明所述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得\n明显和容易理解,其中:\n[0031] 图1为根据本发明实施例的应用程序的一体化开发系统的示意图;\n[0032] 图2为根据本发明另一实施例的应用程序的一体化开发系统的示意图;\n[0033] 图3为一个根据本发明而得到了简化的开发程序的示例;\n[0034] 图4为根据本发明实施例的应用程序的一体化开发方法的流程图;\n[0035] 图5为根据本发明一个实施例的应用程序的运行中代码执行过程的示意图;\n[0036] 图6为根据本发明另一个实施例的应用程序的一体化开发方法的流程图;\n[0037] 图7为本发明一个实施例的用户客户端获得数据的示意图;\n[0038] 图8为根据本发明一个实施例的云端服务器的示意图;以及\n[0039] 图9为根据本发明一个实施例的用户客户端的示意图。\n具体实施方式\n[0040] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。\n[0041] 在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。\n[0042] 在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解所述术语的具体含义。\n[0043] 下面参考图1至图5描述根据本发明实施例的应用程序的一体化开发系统及方法。\n[0044] 如图1所示,本发明第一方面实施例提出的应用程序的一体化开发系统包括开发\n者客户端110、云端服务器120和用户客户端130。\n[0045] 具体地,开发者客户端110向用户客户端130和云端服务器120发送开发者文件,其中,开发者文件包括业务逻辑代码和数据代码,业务逻辑代码包括云端逻辑代码和用户逻辑代码,且云端逻辑代码和用户逻辑代码具有不同的执行环境。云端服务器120根据执行环境对业务逻辑代码进行识别以获得云端逻辑代码,并对数据代码进行处理并与用户客户端\n130同步数据代码。用户客户端130根据执行环境对业务逻辑代码进行识别以获得用户逻辑代码,并接收云端服务器120发送的同步的数据代码。其中,执行环境作为云端服务器和用户客户端对代码进行分析、识别的标准,包括应用程序运行时使用的API(Application Programming Interface,应用程序接口)、目录结构信息等。在本发明的实施例中,开发者客户端110和用户客户端130可以为PC机、移动终端或掌上电脑等。\n[0046] 如图2所示,本发明的一个实施例的应用程序的一体化开发系统还包括:中间数据订阅服务器140,用于接收开发者客户端110发送的数据订阅请求,并根据数据订阅请求从对应的云端服务器120获得对应的开发者数据发送至用户客户端130。本发明实施例中,中间数据订阅服务器作为开发者客户端和用户客户端之间的桥梁,以数据订阅请求的形式在开发者客户端和用户客户端之间交互用户操作信息。具体的数据存储格式、存储位置等信息则由云端服务器进行管理,所以数据订阅请求中只需包括业务信息和用户信息,减少了数据传输量,节省了网络带宽。\n[0047] 本实施例中,云端服务器120、开发者客户端110和用户客户端130中的数据具有相同的数据描述。在服务器、客户端共同使用同一份基于结构化的数据描述,做到服务器端与客户端的统一,两端可以复用同一数据结构,并且立体的结构化数据,将使得开发者在描述业务数据时不需写入实现服务器端与客户端数据兼容的代码,降低开发代码的复杂度,减少了开发成本。\n[0048] 在本发明的一个实施例中,云端服务器120将数据代码拆分为多个子数据结构并\n存储至多个数据列表,其中,每个数据列表对应不同类型的数据。当客户端请求数据时,中间数据订阅服务器140从云端服务器120获得相应的多个子数据结构,并将多个子数据结构拼接为对应的开发者数据,再发送至客户端。在实际应用中,数据代码经常包括多个子数据结构,数据代码拆分为子数据结构的过程遵循既定的标准,便于数据的结构化描述,以及多个业务云端服务器同时进行并行计算。并且,不同的子数据结构,经常会存储在云端服务器中不同的业务云端服务器上,当接收到数据订阅请求后,需要从多个业务云端服务器中获得多个子数据结构,并进行拼接以转换为用户所需要的数据格式。\n[0049] 在本发明的一个实施例中,云端服务器120对自身存储的多个子数据结构进行监\n控,并在多个子数据结构中的至少一个发生变化之后,通过中间数据订阅服务器140将变化后的数据发送至用户客户端130。子数据结构的变化,并不仅因为客户端的用户操作,也可能因为其他子数据结构中的数据改变而发生了变化,此时也需要将变化后的数据发送至用户客户端,以保证用户客户端中的数据是实时的最新数据。\n[0050] 在本发明的一个实施例中,云端服务器120还用于对多个子数据结构进行存储封\n装以补充存储信息。\n[0051] 具体地,云端服务器自动对主键、关联表、外键等存储信息进行补充,以实现存储封装,并向客户端发送封装完成的数据。对存储信息的自动补充,使客户端仅需针对云端的数据容器提供的内容进行订阅即可获取数据,而无需关心数据存储的具体位置等细节问\n题,并且所获取的数据由云端提供保证均符合数据结构描述,从开发者角度来说,不需要考虑数据的存储细节,只需关注自身业务所需的数据。如图3所示,photo数据类型中只包括data,meta,comments三种子数据结构,系统自动将它们拆分为子数据后,分别存储在文件服务器、meta表服务器、comments表服务器中。在代码的数据结构中,因为无需编写数据库管理、数据兼容、传输方式等具体存储实现方案的代码,代码的长度和复杂度比起传统技术的代码大幅降低。\n[0052] 根据本发明实施例提供的应用程序的一体化开发系统,通过使用统一的开发语\n言,使云端服务器、客户端之间的代码可以通用,在应用程序实际运行时,系统将根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端或两端通用,使得开发人员在开发时无需区分云端服务器端代码或客户端代码,即抹平了传统的云端服务器、客户端的界限,打破云端服务器端、客户端开发角色的严格区分,让随意背景的开发者群体都可以独立开发完整的Web应用程序。并且,云端服务器与客户端采用统一的数据结构描述,使应用程序开发人员无需关注数据存储的具体位置、数据传输中的兼容性等细节问题,而只专注于描述业务所需的数据结构,减小了开发代码的复杂度,降低了开发成本,缩减了开发周期。\n[0053] 如图4所示,本发明第二方面实施例提出的应用程序的一体化开发方法,包括以下步骤:\n[0054] S301:云端服务器接收并保存开发者文件,并在用户客户端请求时将所述开发者文件发送至用户客户端,其中,开发者文件包括业务逻辑代码和数据代码,业务逻辑代码包括云端逻辑代码和用户逻辑代码,且云端逻辑代码和用户逻辑代码具有不同的执行环境。\n具体地,开发者文件包括程序源代码、配置文件、数据描述文件等。\n[0055] 在本发明的一个实施例中,云端服务器端与客户端使用统一的开发语言,例如\nJavascript语言,使云端服务器端与客户端的代码通用成为可能。云端服务器端与客户端采用统一的数据描述,并使用框架提供数据传输及序列化机制,使开发人员不再纠缠于数据接口的定义,不再处理复杂的数据交换工作。在本发明的实施例中,开发者客户端和用户客户可以为PC机、移动终端或掌上电脑等。\n[0056] S302:用户客户端和云端服务器分别根据执行环境对业务逻辑代码进行识别以获得用户逻辑代码和云端逻辑代码,且云端服务器对数据代码进行处理并与用户客户端同步数据代码。\n[0057] 如图5所示,本发明的优点在于,使用云端服务器、客户端统一的编程语言和编程模型,根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端或两端通用。在本发明的一个实施例的开发方法中,在云端服务器和客户端统一使用Javascript作为开发语言,云端服务器和客户端的运行环境除执行环境不同外,其他的内容都是统一的,例如操作字符串、数组等的程序及工具类等,所以数据结构的描述和操作该描述所指的数据内容的操作代码,由于操作的主体都是数据,与运行环境无关,所以这些代码在云端服务器和客户端之间可以通用。在应用程序运行时,只需根据不同的应用场景调用不同的对象程序,即可实现不属于当前环境的程序代码不会被错误地执行。例如,调用一个将人员对象的年龄加1并返回该人员对象的程序,只需传入数据对象即可,在云端服务器上与在客户端上都可以执行,而并不依赖某一端的API提供的特殊功能。而对于调用一个只需要执行在客户端中的将对象渲染为页面的程序,当客户端调用此程序时,客户端运行环境可以提供处理模板的能力并保证此程序顺利执行;而云端服务器上并不会执行这个程序。通过这种方法,实现了根据运行环境(或运行逻辑)自动将代码运行在某一端,使得开发人员无需区分云端服务器端代码或客户端代码,即抹平了传统的云端服务器、客户端的界限,打破云端服务器端、客户端开发角色的严格区分,让随意背景的开发者群体都可以独立开发完整的Web应用程序。\n[0058] 如图6所示,在本发明的一个实施例中,开发系统中还包括中间数据订阅服务器,此时,本实施例的应用程序的一体化开发方法还包括:\n[0059] S303:中间数据订阅服务器接收开发者客户端发送的数据订阅请求,并根据数据订阅请求从对应的云端服务器获得对应的开发者数据发送至用户客户端。\n[0060] 本发明实施例中,中间数据订阅服务器作为开发者客户端和用户客户端之间的桥梁,以数据订阅请求的形式在开发者客户端和用户客户端之间交互用户操作信息。具体的数据存储格式、存储位置等信息则由云端服务器进行管理,所以数据订阅请求中只需包括业务信息和用户信息,减少了数据传输量,节省了网络带宽。\n[0061] 在本发明的一个实施例中,数据代码经常包括多个子数据结构,数据代码拆分为子数据结构的过程遵循既定的标准,便于数据的结构化描述,以及多个业务云端服务器同时进行并行计算。并且,不同的子数据结构,经常会存储在云端服务器中不同的业务云端服务器上,当接收到数据订阅请求后,需要从多个业务云端服务器中获得多个子数据结构,并进行拼接以转换为用户所需要的数据格式。此时,应用程序的一体化开发方法还包括以下步骤:\n[0062] S304:云端服务器将数据代码拆分为多个子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。\n[0063] S305:云端服务器对自身存储的多个子数据结构进行监控,并在多个子数据结构中的至少一个发生变化之后,通过中间数据订阅服务器将变化后的数据发送至用户客户\n端。\n[0064] 在实际应用中,子数据结构的变化,并不仅因为客户端的用户操作,也可能因为其他子数据结构中的数据改变而发生了变化,此时也需要将变化后的数据发送至用户客户\n端,以保证用户客户端中的数据是实时的最新数据。\n[0065] S306:中间数据订阅服务器从云端服务器获得相应的多个子数据结构,并将多个子数据结构拼接为对应的开发者数据。\n[0066] 拼接时,系统根据开发者预先规定的数据结构,将子数据结构拼接为开发者数据,供应用程序使用。\n[0067] S307:云端服务器对所述多个子数据结构进行存储封装以补充存储信息。\n[0068] 云端服务器自动对主键、关联表、外键等存储信息进行补充,以实现存储封装,并向客户端发送封装完成的数据。对存储信息的自动补充,使客户端仅需针对云端的数据容器提供的内容进行订阅即可获取数据,而无需关心数据存储的具体位置等细节问题,并且所获取的数据由云端提供保证均符合数据结构描述,从开发者角度来说,不需要考虑数据的存储细节,只需关注自身业务所需的数据。如图3所示,photo数据类型中只包括data,meta,comments三种子数据结构,系统自动将它们拆分为子数据后,分别存储在文件服务器、meta表服务器、comments表服务器中。在代码的数据结构中,因为无需编写数据库管理、数据兼容、传输方式等具体存储实现方案的代码,代码的长度和复杂度比起传统技术的代码大幅降低。\n[0069] 本发明的一个实施例中的应用程序的一体化开发方法还包括步骤:\n[0070] S308:云端服务器对多个子数据结构进行序列化,所述中间数据订阅服务器在拼接之前进行反序列化。\n[0071] 序列化是数据传输过程中客户端与云端服务器端都需要执行的一个操作,序列化是指将数据内容转换成可以供网络传输的字符串格式或二进制格式的转换过程,反序列化则是将传输内容还原为数据内容的过程。数据由客户端向云端服务器端进行传输时,序列化工作由客户端完成,反序列化工作由云端服务器端完成;云端服务器端向客户端传输时,序列化工作在云端服务器端完成,反序列化工作由客户端完成,在传统开发过程中,开发人员需要理解目标云端服务器支持的数据传输格式,如表单、URL键值,或特殊的文本格式如逗号分隔、XML等,并理解传输方法(包括get\post\websocket等)及资源请求位置、控制参数及请求内容的返回格式,并以此为基础开发传递数据的数据序列化和反序列化方法.在使用框架后,这一系列的操作统一由框架提供,开发人员只需要使用数据,不需要关心其传输过程,代码的长度和复杂度比起传统技术的代码大幅降低。\n[0072] 图7为一个根据本发明实施例的面向统一结构化数据的应用程序的开发方法获得\n数据的示意图,如图所示,子数据结构存储在各业务服务器中,中甲的框架包括中间订阅服务器、开发者进行开发的工具集以及使客户端程序得以运行的运行时环境的总称。当有用户请求时,框架接收到各订阅用户的数据订阅信息,对数据订阅信息进行分析后,将各业务服务器作为数据发布服务器,框架从各数据发布服务器中提取相应的子数据结构,并组装成应用程序所需的用户数据,即实现从子数据结构到数据结构的自动映射,具有以下优点:\n[0073] 1、使开发人员不至于从多个零散的数据发布服务器进行订阅,减少了获取得数据复杂程度。\n[0074] 2、使客户端在运行时,直接从中间容器可以拿到完整的可用数据,而不需要再对数据进行组装等操作。减少了操作数据的复杂程度。\n[0075] 根据本发明实施例提供的应用程序的一体化开发方法,通过使用统一的开发语\n言,使云端服务器、客户端之间的代码可以通用,在应用程序实际运行时,系统将根据代码的运行逻辑自动决定代码将执行于云端服务器端或客户端或两端通用,使得开发人员在开发时无需区分云端服务器端代码或客户端代码,即抹平了传统的云端服务器、客户端的界限,打破云端服务器端、客户端开发角色的严格区分,让随意背景的开发者群体都可以独立开发完整的Web应用程序。并且,云端服务器与客户端采用统一的数据结构描述,使应用程序开发人员无需关注数据存储的具体位置、数据传输中的兼容性等细节问题,而只专注于描述业务所需的数据结构,减小了开发代码的复杂度,降低了开发成本,缩减了开发周期。\n[0076] 如图8所示,本发明第三方面实施例的云端服务器,包括:接收模块610、逻辑代码识别模块620和数据代码识别模块630。\n[0077] 具体地,接收模块610接收开发者客户端发送的开发者文件,其中,开发者文件包括业务逻辑代码和数据代码,业务逻辑代码包括云端逻辑代码和用户逻辑代码,且云端逻辑代码和用户逻辑代码具有不同的执行环境。逻辑代码识别模块620根据执行环境对业务逻辑代码进行识别以获得云端逻辑代码。数据代码识别模块630对数据代码进行处理并与用户客户端同步数据代码。本发明实施例中,接收模块610接收代码后,逻辑代码识别模块\n620和数据代码识别模块630均是自动识别代码并进行处理的,从而使开发者在开发时不再需要像传统的代码开发过程中,根据代码在云端的运行环境而设计接口等附加程序或组件保证代码的兼容性,代码的长度和复杂度比起传统技术的代码大幅降低。\n[0078] 在本发明的一个实施例中,数据代码识别模块630还用于将数据代码拆分为多个\n子数据结构并存储至多个数据列表,其中,每个数据列表对应不同类型的数据。在实际应用中,数据代码经常包括多个子数据结构,数据代码拆分为子数据结构的过程遵循既定的标准,便于数据的结构化描述,以及多个业务云端服务器同时进行并行计算。并且,不同的子数据结构,经常会存储在云端服务器中不同的业务云端服务器上,当接收到数据订阅请求后,需要从多个业务云端服务器中获得多个子数据结构,并进行拼接以转换为用户所需要的数据格式。\n[0079] 本发明的一个实施例的云端服务器还包括:监控模块。监控模块对云端服务器自身存储的多个子数据结构进行监控,并在多个子数据结构中的至少一个发生变化之后,通过数据代码识别模块与用户客户端进行同步。在实际应用中,子数据结构的变化,并不仅因为客户端的用户操作,也可能因为其他子数据结构中的数据改变而发生了变化,因此需要监控模块对子数据结构进行监控,以保证在子数据结构变化时,将变化后的数据发送至用户客户端,实现用户客户端中的数据是实时的最新数据。\n[0080] 本发明一个实施例的云端服务器还包括:序列化模块。序列化模块对多个子数据结构进行序列化,并将序列化后的多个子数据结构发送至客户端。序列化是数据传输过程中客户端与云端服务器端都需要执行的一个操作,序列化是指将数据内容转换成可以供网络传输的字符串格式或二进制格式的转换过程,反序列化则是将传输内容还原为数据内容的过程。数据由客户端向云端服务器端进行传输时,序列化工作由客户端完成,反序列化工作由云端服务器端完成;云端服务器端向客户端传输时,序列化工作在云端服务器端完成,反序列化工作由客户端完成,在传统开发过程中,开发人员需要理解目标云端服务器支持的数据传输格式,如表单、URL键值,或特殊的文本格式如逗号分隔、XML等,并理解传输方法(包括get\post\websocket等)及资源请求位置、控制参数及请求内容的返回格式,并以此为基础开发传递数据的数据序列化和反序列化方法.在使用框架后,这一系列的操作统一由框架提供,开发人员只需要使用数据,不需要关心其传输过程,代码的长度和复杂度比起传统技术的代码大幅降低。\n[0081] 根据本发明实施例的云端服务器,自动进行代码识别,以及数据的拆分、监控、序列化、发送等操作,作为应用程序的一体化开发系统的重要组成部分,为开发人员减小开发代码的复杂度、降低开发成本提供了可能。\n[0082] 如图9所示,本发明第四方面实施例的用户客户端,包括:接收模块710、逻辑代码识别模块720和数据同步模块730。\n[0083] 具体地,接收模块710接收开发者客户端发送的开发者文件,其中,开发者文件包括业务逻辑代码和数据代码,业务逻辑代码包括云端逻辑代码和用户逻辑代码,且云端逻辑代码和用户逻辑代码具有不同的执行环境。逻辑代码识别模块720根据执行环境对业务逻辑代码进行识别以获得用户逻辑代码。数据同步模块730用于与云端服务器进行数据同步。本发明实施例中,接收模块710接收代码后,逻辑代码识别模块720和数据代码识别模块\n730均是自动识别代码并进行处理的,从而使开发者在开发时不再需要像传统的代码开发过程中,根据代码在云端的运行环境而设计接口等附加程序或组件保证代码的兼容性,代码的长度和复杂度比起传统技术的代码大幅降低。\n[0084] 根据本发明实施例的用户客户端,自动进行代码识别、数据同步等操作,作为应用程序的一体化开发系统的重要组成部分,为开发人员减小开发代码的复杂度、降低开发成本提供了可能。\n[0085] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现其中可以不按所示出或讨论的顺\n序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。\n[0086] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。\n[0087] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。\n[0088] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对所述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。\n[0089] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
法律信息
- 2017-07-25
- 2014-03-19
实质审查的生效
IPC(主分类): G06F 9/44
专利申请号: 201210421564.3
申请日: 2012.10.29
- 2014-02-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-11-18
|
2007-12-28
| | |
2
| |
2010-08-11
|
2009-12-17
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |