欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种移动端与服务器端数据交互方法独创技术15068字

一种移动端与服务器端数据交互方法

2021-03-10 13:26:58

一种移动端与服务器端数据交互方法

  技术领域

  本发明涉及移动应用开发领域,是一种移动端与服务器端数据交互方法。

  背景技术

  随着智能手机、平板电脑等移动设备的普及,各类移动应用的发展愈加繁荣。与此同时,移动应用的体积越来越庞大,通过网络接口获取数据是移动应用展示内容的主要来源,因此移动应用中的网络通讯模块也变得越来越重要。由于移动应用与网络接口的交互在移动应用开发中具有重要地位,并且在移动应用程序中,网络接口请求的代码块非常多而且所在位置比较离散,所以移动应用和网络接口的交互模块在编写和调试上具有较高的复杂度,影响着移动应用的开发效率。

  目前存在很多成熟的框架可用于实现移动应用与网络接口交互的开发,例如在安卓开发中可以采用Retrofit请求框架,后台则常采用Struts2,SpringMVC等框架。这些框架对于移动开发中的网络通讯模块已经给出了可行的解决方案。在后台服务器编写接口,移动应用程序中编写请求。对于每一个移动端的网络接口调用,在服务器端对应已编写好的url,实现对应请求参数的处理代码模块。这种明确的分工使得移动应用开发中的接口调试与协同开发变得困难和复杂。在没有开发网络接口之前,移动端开发时的UI显示只能使用假数据填充,之后再改为网络接口请求来的数据,并调试接口数据的适配问题,其中开发出错率,以及开发复杂度都显著提高。

  现有的设计模式中,移动应用想要访问服务器资源,需要通过HTTP协议向指定的服务器传递信息,服务器根据应用请求调用相应的接口,并返回相应的结果。整个流程所涉及的操作为移动端定义请求接口方法,创造请求数据,填充URL和数据,向服务器发送请求,服务器调用指定URL的网络接口处理请求,返回请求结果,移动端根据请求结果刷新UI。在这种设计模式下,移动端与服务器端交互时传递的数据较为复杂,并且特定URL的请求数据和返回数据必须事先约定。请求数据和URL之间却没有明确的联系,如果在发送请求时携带了错误的请求数据,移动端将不能接受到正常的返回结果。

  上述模式中存在的另一个问题是接口对请求数据的逻辑处理耦合在接口之中,即使是使用MVC架构将逻辑处理模块独立起来,逻辑处理模块所处理的数据仍然需要通过上层数据接收层传递给它,并没有把网络请求的发送与接收完全屏蔽,无法真正实现移动端像调用函数一样调用接口,无法达到移动端与服务器端数据的一致性。

  此外,上述模式中服务器端和移动端在开发模块实现隔离的同时对交互数据也进行了隔离,因而难以实现协同开发。因而,涉及网络请求的移动应用开发不能仅考虑移动端,如何让移动端和服务器端相辅相成,配合恰当,在简化移动端的同时可以让服务器端也方便的开发接口,实现协同开发,从而降低开发复杂度,让移动端和服务器端具有数据一致性的同时也具有模块隔离性,是目前移动应用中网络通讯模块设计与开发面临的主要问题。

  发明内容

  本发明的目的在于针对现有技术中的不足,提供一种移动端与服务器端数据交互方法,通过在服务器端和移动端之间采用约定格式的指令进行交互通信,以确保请求的指令和返回数据之间具有更好的一致性,并在业务逻辑层面隔离指令的网络传输过程。

  本发明所解决的技术问题可以采用以下技术方案来实现:

  一种移动端与服务器端数据交互方法,应用于移动端和服务器端,其包括以下步骤:

  (S1)构造请求指令模块根据业务逻辑模块的请求构造指令;所述指令包括操作码和操作数;所述操作码包括所述指令请求服务器端操作的类和对类的操作,所述操作数为对类操作过程中的参数;

  (S2)指令发送模块对所述指令进行解析,根据所述指令的类型对所述指令进行相应处理,并加入标签信息,以得到扩展指令;

  (S3)所述指令发送模块将所述扩展指令发送至所述指令接收模块;

  (S4)所述指令接收模块对所述扩展指令进行解析,以还原所述指令;并将还原后的指令发送至所述指令驱动模块;

  (S5)所述指令驱动模块根据所述指令中的操作码调用相应类及其操作对所述指令中的操作数进行处理,以获得返回数据,并将所述返回数据发送至所述指令接收模块;

  (S5)所述指令接收模块将所述返回数据以及代表其种类的标签信息封装成扩展指令发送至所述指令发送模块;

  (S6)所述指令发送模块对返回的扩展指令进行解析,得到返回数据,并发送至所述构造请求指令模块;

  (S7)所述构造请求指令模块将接收的返回数据转发至所述业务逻辑模块。

  本发明的进一步改进在于,所述指令以及所述扩展指令以json格式实现。

  本发明的进一步改进在于,所述服务器端和所述移动部署在同一设备上时,所述构造请求指令模块将指令直接发送至所述指令驱动模块,所述指令驱动模块直接将返回数据发送至所述构造请求指令模块。

  本发明的进一步改进在于,所述指令驱动模块包括对象管理器以及分析器;

  所述分析器用于解析所述指令中的操作码,获得操作码对应的类以及对类的操作,并将解析结果转发至所述对象管理器;

  所述对象管理器中关联存储有所述服务器端可操作的类以及类的各个操作,并根据所述分析器的分析结果调用相应的类以及对类的操作,同时代入指令中的操作数,以获取返回数据。

  本发明的进一步改进在于,所述指令驱动模块还包括异常处理模块;当所述分析器检测到异常的操作码时,将操作码对应的指令转发至所述异常处理模块,由所述异常处理模块进行记录,并生成相应的返回数据。

  本发明的进一步改进在于,步骤(S2)中,对所述指令进行处理的方式包括base64编码、对称加密。

  与现有技术相比,本发明的有益效果在于:

  1.本发明方法基于移动应用的移动端与服务器端数据交互的特点,构建统一的移动端指令发送方法、统一的服务器端指令接收方法、统一的服务器端指令驱动的逻辑处理方法、统一的数据返回方法,实现移动端与服务器端数据交互的便捷,提高移动应用的网络接口的开发效率。

  2.在保证模块隔离性的同时也保证了移动端与服务器端面向的交互数据的一致性。

  3.指令驱动模块成为实际数据交互的载体,保证程序的扩展性,提高测试效率。

  4.屏蔽具体网络传输,降低数据耦合度,简化移动端和服务器端的代码编写。

  附图说明

  图1为本发明所述的指令的结构示意图。

  图2为本发明所述的移动端与服务器端通讯方法的流程示意图。

  具体实施方式

  为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。

  如图1、2所示,本发明的实施例提供一种移动端与服务器端数据交互方法,应用于移动端和服务器端,该方法包括以下步骤:

  (S1)构造请求指令模块根据业务逻辑模块的请求构造指令;指令包括操作码和操作数;操作码包括指令请求服务器端操作的类和对类的操作,操作数为对类操作过程中的参数;

  (S2)指令发送模块对所述指令进行解析,根据所述指令的类型对所述指令进行相应处理,并加入标签信息,以得到扩展指令;

  (S3)所述指令发送模块将所述扩展指令发送至所述指令接收模块;

  (S4)所述指令接收模块对所述扩展指令进行解析,以还原所述指令;并将还原后的指令发送至所述指令驱动模块;

  (S5)所述指令驱动模块根据所述指令中的操作码调用相应类及其操作对所述指令中的操作数进行处理,以获得返回数据,并将所述返回数据发送至所述指令接收模块;

  (S5)所述指令接收模块将所述返回数据以及代表其种类的标签信息封装成扩展指令发送至所述指令发送模块;

  (S6)所述指令发送模块对返回的扩展指令进行解析,得到返回数据,并发送至所述构造请求指令模块;

  (S7)所述构造请求指令模块将接收的返回数据转发至所述业务逻辑模块。

  本实施例中,指令由构造请求指令模块生成,指令的结构如图2所示。在操作码中,“类”表示希望调用的对象的名称,“对类的操作”移动端想要服务器端对对象的操作方式,而操作数表示上述操作过程中的参数。在具体实现过程中,操作码和操作数都采用字符串进行表示。操作码中的“类”对应服务器端中的一个对象,而“对类的操作”对应对象的方法。这种面对对象的表达方式复合主流软件开发思想,指令中的内容直观形象,不仅便于服务器端处理,还可降低开发人员的开发难度,在调试过程中抓取的指令的含义直观,不必调用解析工具进行额外解析。

  通常移动端与服务器端的交互都是与服务器端的数据库进行交互。现有的关系数据库中,通常将每张表看作一个类,表里的每一行看为一个对象。而移动应用向服务器发送请求,最终也是对服务器数据库进行一定的操作,这些操作是面向数据库表的抽象数据类型的,因此移动应用的网络请求可以根据具体操作的抽象数据类型来划分,所以指令的操作码部分应该包含类和对类的操作,指令的数据部分可能有很多参数,为了更好的组织代码,提高代码质量。

  现有的网络请求库通常只能实现post、get等简单功能。而本实施例中,由于操作码仅需移动端与服务器端约定,因此指令的操作码中的“对类的操作”可以采用更加多样的操作。为了实现这一功能,在移动端与服务器端约定好的情况下,仅需在服务器端实现相应的方法(method),即可供服务器端进行调用。因此采用指令进行交互,可使提高系统的可扩展性。

  指令驱动模块是从面向对象的思想出发,它需要实现的功能是能够执行相应的指令,返回执行结果。因此指令驱动模块包括对象管理器以及分析器。分析器用于解析指令中的操作码,获得操作码对应的类以及对类的操作,并将解析结果转发至所述对象管理器。对象管理器中关联存储有所述服务器端可操作的类以及类的各个操作,并根据分析器的分析结果调用相应的类以及对类的操作,同时代入指令中的操作数,以获取返回数据。

  本实施例中,指令驱动模块还包括异常处理模块;当分析器检测到异常的操作码时,将操作码对应的指令转发至所述异常处理模块,由所述异常处理模块进行记录,并生成相应的返回数据。异常处理模块能够报出异常,并可以提示异常原因,从而提高开发效率。

  在本实施例中,指令以及扩展指令采用json格式实现。JSON格式在传输效率上优于其它数据传输格式,主流编程语言均具有丰富的json的工具库。此外,JSON具有便于扩展的特征,可以在其中加入其它字段,已实现更加丰富的功能。

  例如,在一些实施例中,在指令的JSON中加入指令编号的字段,服务器端在发送返回数据的过程中,将指令编号附加在返回数据的JSON中,以便移动端判断返回数据对应的指令。

  在开发过程中,移动端和服务器端可部署在同一个设备上,以便联合调试以及协同开发。在此过程中,构造请求指令模块将指令直接发送至指令驱动模块,指令驱动模块直接将返回数据发送至构造请求指令模块。

  无论是开发过程还是在生产环境,移动端的构造请求指令模块生成的指令和服务器端的指令驱动模块所接收的指令是相同的。同时指令驱动模块生成的返回数据与构造请求指令模块接收到的返回数据是一致的。指令发送模块以及指令接收模块相适配,仅用于传递指令。对于构造请求指令模块、移动端的业务逻辑、指令驱动模块以及服务器端的数据库服务来说,指令的传递过程以及网络通信过程被完全屏蔽,这样可以将网络通信过程完全屏蔽,让程序的编写和调试更加方便,也方便将请求接口函数化。

  在移动应用工程中,出于网络通讯安全性的考虑,往往需要对指令进行处理,例如指令中的操作数为图片、音频视频等文件时,需要对指令进行base64编码,指令中包括用户的密码等敏感数据时,传输过程需要对称加密。为了将传输过程与业务逻辑模块分离,本实施例中,指令发送模块根据指令的类型对所述指令进行相应处理(例如base64编码或对称加密)。扩展指令中包括处理后的指令以及对应的标签信息。指令接收模块可根据标签信息从相应的扩展指令中还原出指令。

  服务器端返回数据的过程也是以扩展指令的方式在网络中传输的。指令接收模块向指令发送模块发送的扩展指令中包括处理后的返回数据以及相应的信息标签。返回数据需要进行处理目的不仅在于保证网络传输过程中的安全性,标签信息还可使得指令接发送模块可以根据不同的返回数据类型对返回数据采用相应的解析方法,将网络传输引入的额外处理步骤隔离在指令发送模块以及指令接收模块中,降低了系统的耦合性,提高了系统的开发效率以及维护成本。

  本实施例可以让移动应用调用接口如同调用本地函数,这给程序的调试带来了极大的便利。在这种模式下,当需要修改功能或者是添加新功能时,只需要修改指令驱动模块就可以完成,极大的提高了程序的可扩展性。

《一种移动端与服务器端数据交互方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)