网络环境的动态切换方法及系统、服务器及存储介质与流程

文档序号:16087438发布日期:2018-11-27 22:36阅读:189来源:国知局

本发明涉及直播平台Android移动端应用开发技术领域,尤其涉及一种网络环境的动态切换方法及系统、服务器及存储介质。



背景技术:

在客户端的开发过程中肯定会使用到网络,传统方案中网络环境一般只有一套,当软件开发完毕且测试成功后直接将软件部署到线上环境,这种方案存在的一个问题就很难保证线上不会出现异常情况,因为测试环境和线上环境存在着很大的差异性。

传统方案中网络切换是简单的通过多个URL的适配方式来实现网络环境的切换,这样会导致多套URL维护起来非常复杂和耗时,而且在传统方案中,获取对象的方法一般是通过直接对对象通过new关键字来进行实例化操作,从而来获取到对象,这种方式存在的一个严重问题,就是如果可以获取到多个对象,那么第一个对象在切换成当前网络环境的同时,第二个对象正在切换成目标网络环境,这样最终切换成哪一个环境是不可预知的。



技术实现要素:

有鉴于此,本发明实施例提供了一种能够对上线软件在不同的网络环境下进行测试,确保上线软件功能的稳健性的网络环境的动态切换方法及系统、服务器及存储介质。

本发明实施例的第一方面,提供了一种网络环境的动态切换方法,所述网络环境的动态切换方法包括以下步骤:

定义网络环境类,根据网络环境类生成网络环境对象;

设计一个网络环境类函数,调用网络环境类函数来获取到当前网络环境对象;

调用当前网络环境对象中的网络域名数据来确定到当前网络环境类型信息;

判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,如果当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息;

根据目标网络环境类型信息进行网络环境切换。

本发明实施例的第二方面,提供了一种网络环境的动态切换系统,所述网络环境的动态切换系统包括以下功能模块:

网络环境对象生成模块,用于定义网络环境类,根据网络环境类生成网络环境对象;

网络环境对象获取模块,用于设计一个网络环境类函数,调用网络环境类函数来获取到当前网络环境对象;

网络环境信息确定模块,用于调用当前网络环境对象中的网络域名数据来确定到当前网络环境类型信息;

网络环境判断模块,用于判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,如果当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息;

网络环境切换模块,用于根据目标网络环境类型信息进行网络环境切换。

本发明实施例的第三方面,提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述网络环境的动态切换方法的步骤。

本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述网络环境的动态切换方法的步骤。

本发明所述网络环境的动态切换方法,其通过网络环境类生成网络环境对象;并设计一个网络环境类函数,调用网络环境类函数来获取到唯一的当前网络环境类型信息;判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,如果当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息;最后根据目标网络环境类型信息进行网络环境切换。采用本发明所述网络环境的动态切换方法,能够对上线软件在不同的网络环境下进行测试,确保上线软件功能的稳健性,有效的解决传统方案中软件开发后直接上线而引起的线上各种问题,使得上线软件质量能够大幅度的提升。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的网络环境的动态切换方法的流程框图;

图2为图1中步骤S1的子流程框图;

图3为图1中步骤S2的子流程框图;

图4为图1中步骤S5的子流程框图;

图5为本发明实施例提供的网络环境的动态切换系统的功能模块框图;

图6为本发明实施例提供的网络环境对象生成模块的功能单元框图;

图7为本发明实施例提供的网络环境对象获取模块的功能单元框图;

图8为本发明实施例提供的网络环境切换模块的功能单元框图;

图9本发明实施例提供的服务器的结构示意图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供一种网络环境的动态切换方法,所述网络环境的动态切换方法包括以下步骤:

S1、定义网络环境类,根据网络环境类生成网络环境对象。

如图2所示,所述步骤S1包括以下分步骤:

S11、定义一个网络环境枚举类型,并在网络环境枚举类型中定义一个类型枚举变量;

S12、将所述类型枚举变量设置为网络环境枚举类型的构造函数中的参数;

S13、将网络环境枚举类型生成的网络环境对象存放在类型枚举变量中。

具体的,首先设计一个枚举类型NetEnvironmentType,用于标记当前的网络环境,由于在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象,String对象是System.Char对象的有序集合,用于表示字符串,String对象的值是该有序集合的内容,并且该值是不可变的,为了能够方便通过字符串信息快速得到网络类型信息,因此,在自定义的枚举类型NetEnvironmentType中设计了一个String类型的枚举变量type,并且将该type字段来设置为枚举NetEnvironmentType类的构造函数中的参数,该构造函数是NetNetEnvironmentTypeEnvironment(String type),通过该构造函数生成的网络环境对象即存放在枚举变量type中。

同时,在枚举NetEnvironmentType类中定义了两个枚举常量,分别是ENV_RELEASE和ENV_LIVE,其中ENV_RELEASE表示的是线上环境,并将其值赋值为release,ENV_LIVE表示的是预发布环境,并将ENV_LIVE的值设置为live,这两个环境中,除了域名不同以外,其他的接口名称和接口功能是完全相同的,通过ENV_RELEASE和ENV_LIVE这两个枚举值来对当前的网络环境来进行区分处理。

因此,所述枚举类型NetEnvironmentType的定义如下所示

S2、设计一个网络环境类函数,调用网络环境类函数来获取到当前网络环境对象。

如图3所示,所述步骤S2包括以下分步骤:

S21、设计一个网络环境类函数,并定义网络环境类函数的实例对象变量;

S22、所述实例对象变量自类型枚举变量中获取得到网络环境对象;

S23、调用网络环境类函数,判断实例对象变量中网络环境对象是否为空,如果不为空,则将网络环境对象返回出去,如果为空,则通过调用new关键字来进行实例化操作,并将实例化好的网络环境对象返回出去。

为了能获取到唯一的切换网络环境对象,本发明设计一个用于获取网络环境切换对象的函数,该函数的名称为getNetEnvironmentInstance,是一个public公有类型的函数,从而使调用者具备访问该函数的权限,且该函数没有入参参数。该函数的定义如下所示:

public static NetEnvironmentgetNetEnvironmentInstance(){}

定义一个全局的NetEnvironment类型的变量instance,将该instance声明成一个静态static对象,如此才能够在静态方法getNetEnvironmentInstance中使用,具体的定义方式如下所示:

private static NetEnvironment instance。

完成上述定义之后,首先所述变量instance自枚举变量type中获取得到网络环境实例对象,然后调用getNetEnvironmentInstance,判断变量instance中instance是否为空,如果不为空,则直接通过returninstance语句将变量instance中网络环境实例对象返回出去,否则通过调用NetEnvironmentinstance=new NetEnvironment()方法来对其进行实例化操作,实例化完成后再通过returninstance语句将实例化好的对象instance进行返回出去。这样调用者通过调用本发明设计的getNetEnvironmentInstance函数就能够获取到唯一的NetEnvironment对象信息了。

S3、调用当前网络环境对象中的网络域名数据来确定到当前网络环境类型信息。

即通过调用getNetEnvironmentInstance函数来获取到当前的NetEnvironment对象信息,并将该对象标记为mNetEnvironment;然后调用mNetEnvironment对象中的NetEnvironmentType来获取到当前的网络环境信息,并将当前的网络环境类型信息标记为currentType。

S4、判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息。

将当前网络环境类型信息currentType和待切换的目标网络环境类型信息进行比对,如果当前网络环境类型信息currentType和目标网络环境类型信息一样,则代表当前网络已经处于该网络环境下了,直接通过Toast.show(“当前正处于currentType环境下”)的提示提醒用户当前网络环境类型信息就是目标网络环境类型信息。

如果当前网络环境类型信息currentType和目标网络环境类型信息不一致,则首先需要将当前网络环境类型信息currentType的值设置成currentType=ENV_LIVE,然后再执行环境切换的工作。

S5、根据目标网络环境类型信息进行网络环境切换。

如图4所示,所述步骤S5包括以下分步骤:

S51、根据当前网络环境类型信息判定网络环境切换的域名地址信息;

S52、如果当前网络环境类型信息为预发布网络环境,则将全局的域名基础信息修改为预发布网络域名;

S53、如果当前网络环境类型信息为线上网络环境,则将全局的域名基础信息修改为线上网络域名。

在网络环境切换时,通过实例切换语句即switch-case语句来对当前网络环境类型信息currentType进行逻辑筛选,来判定网络环境切换的域名地址信息,例如:如果currentType=ENV_LIVE,则将全局的域名基础信息BASE_URL=“douyu.live.com”,如果currentType=ENV_RELEASE,则修改域名基础信息BASE_URL=“douyu.release.com”,通过上述筛选形式来修改全局唯一BASE_URL的地址指向,从而来实现了访问请求的网络环境的切换目标,并保证了网络切换的完整性,且避免了切换存在的脏数据等问题。

具体的,网络环境的具体切换动作是通过调用系统的结束生命周期方法来将整个应用程序的进程给关闭掉;再调用系统的启动界面进程来打开应用程序;重新启动系统得到的网络环境就是目标网络环境。

本发明所述网络环境的动态切换方法,其通过网络环境类生成网络环境对象;并设计一个网络环境类函数,调用网络环境类函数来获取到唯一的当前网络环境类型信息;判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,如果当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息;最后根据目标网络环境类型信息进行网络环境切换。采用本发明所述网络环境的动态切换方法,能够对上线软件在不同的网络环境下进行测试,确保上线软件功能的稳健性,有效的解决传统方案中软件开发后直接上线而引起的线上各种问题,使得上线软件质量能够大幅度的提升。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

上面主要描述了一种网络环境的动态切换方法,下面将对一种网络环境的动态切换系统,如图5所示,所述网络环境的动态切换系统包括以下功能模块:

网络环境对象生成模块10,用于定义网络环境类,根据网络环境类生成网络环境对象;

网络环境对象获取模块20,用于设计一个网络环境类函数,调用网络环境类函数来获取到当前网络环境对象;

网络环境信息确定模块30,用于调用当前网络环境对象中的网络域名数据来确定到当前网络环境类型信息;

网络环境判断模块40,用于判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,如果当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息;

网络环境切换模块50,用于根据目标网络环境类型信息进行网络环境切换。

如图6所示,所述网络环境对象生成模块10包括以下功能单元:

枚举类型定义单元11,用于定义一个网络环境枚举类型,并在网络环境枚举类型中定义一个类型枚举变量;

构造参数设置单元12,用于将所述类型枚举变量设置为网络环境枚举类型的构造函数中的参数;

对象存放单元13,用于将网络环境枚举类型生成的网络环境对象存放在类型枚举变量中。

如图7所示,所述网络环境对象获取模块20包括以下功能单元:

类函数设计单元21,用于设计一个网络环境类函数,并定义网络环境类函数的实例对象变量;

对象获取单元22,用于使所述实例对象变量自类型枚举变量中获取得到网络环境对象;

对象判断单元23,用于调用网络环境类函数,判断实例对象变量中网络环境对象是否为空,如果不为空,则将网络环境对象返回出去,如果为空,则通过调用new关键字来进行实例化操作,并将实例化好的网络环境对象返回出去。

如图8所示,所述网络环境切换模块50包括以下功能单元:

域名判断单元51,用于根据当前网络环境类型信息判定网络环境切换的域名地址信息;

预发布域名修改单元52,用于如果当前网络环境类型信息为预发布网络环境,则将全局的域名基础信息修改为预发布网络域名;

线上域名修改单元53,用于如果当前网络环境类型信息为线上网络环境,则将全局的域名基础信息修改为线上网络域名。

图9是本发明一实施例提供的直播间样式扩展的服务器结构的示意图。所述服务器,为提供计算服务的设备,通常指具有较高计算能力,通过网络提供给多个用户使用的计算机。如图9所示,该实施例的服务器6包括:存储器61、处理器62以及系统总线63,所述存储器61包括存储其上的可运行的程序611,本领域技术人员可以理解,图9中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图9对终端设备的各个构成部件进行具体的介绍:

存储器61可用于存储软件程序以及模块,处理器62通过运行存储在存储器61的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

在存储器61上包含网络环境的动态切换方法的可运行程序611,所述可运行程序611可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器61中,并由处理器62执行,以完成通知的传递并获取通知实现过程,所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序611在所述服务器6中的执行过程。例如,所述计算机程序611可以被分割为获取模块、比对模块、拼接模块和发送模块。

处理器62是服务器的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器61内的软件程序和/或模块,以及调用存储在存储器61内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器62可包括一个或多个处理单元;优选的,处理器62可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器62中。

系统总线63是用来连接计算机内部各功能部件,可以传送数据信息、地址信息、控制信息,其种类可以是例如PCI总线、ISA总线、VESA总线等。处理器62的指令通过总线传递至存储器61,存储器61反馈数据给处理器62,系统总线63负责处理器62与存储器61之间的数据、指令交互。当然系统总线63还可以接入其他设备,例如网络接口、显示设备等。

所述服务器应至少包括CPU、芯片组、内存、磁盘系统等,其他构成部件在此不再赘述。

在本发明实施例中,该终端所包括的处理器62执行的可运行程序具体为:一种网络环境的动态切换方法,所述网络环境的动态切换方法包括如下步骤:

步骤1、定义一个网络环境枚举类型,并在网络环境枚举类型中定义一个类型枚举变量;

步骤2、将所述类型枚举变量设置为网络环境枚举类型的构造函数中的参数;

步骤3、将网络环境枚举类型生成的网络环境对象存放在类型枚举变量中;

步骤4、设计一个网络环境类函数,并定义网络环境类函数的实例对象变量;

步骤5、所述实例对象变量自类型枚举变量中获取得到网络环境对象;

步骤6、调用网络环境类函数,判断实例对象变量中网络环境对象是否为空,如果不为空,则将网络环境对象返回出去,如果为空,则通过调用new关键字来进行实例化操作,并将实例化好的网络环境对象返回出去;

步骤7、调用当前网络环境对象中的网络域名数据来确定到当前网络环境类型信息;

步骤8、判断当前网络环境类型信息和待切换的目标网络环境类型信息是否一样,如果当前网络环境类型信息和待切换的目标网络环境类型信息不一致,则将当前网络环境类型信息的值设置成目标网络环境类型信息;

步骤9、通过调用系统的结束生命周期方法来将整个应用程序的进程给关闭掉;

步骤10、在通过后台调用系统的启动界面进程方法来实现打开应用的目标;

步骤11、重新打开的网络环境就是目标网络环境。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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