具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结 合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描 述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施 例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提 下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种iOS高性能高扩展网络架构,如图1至图3所示, 所述iOS高性能高扩展网络架构包括业务网络层和基础网络层。
如图1所示,所述业务网络层的网络逻辑包括用于根据扩展协议生成基础 请求数据的请求前逻辑,和用于作为子类接受基础请求数据创建请求的请求中 子类逻辑。
所述基础网络层的网络逻辑包括用于作为父类接受基础请求数据、生成网 络请求并发起的请求中父类逻辑,以及用于对服务器根据网络请求返回的数据 进行解析、并返回解析后的请求数据或判定请求失败的请求后逻辑。
简单来说,所述业务网络层的网络逻辑包括依赖私有组件的不可复用逻辑; 例如:
日志***:持久储存日志,上报策略相关实现。帮助记录请求错误。
用户信息:基本用户信息管理,登录态管理等。存取鉴权等基本参数。
设备信息管理:用户设备信息,服务端鉴权需要部分参数。
鉴权加密:由部分核心开发者实现加密库,完成与服务端同步鉴权的逻辑。
域名管理:管理整个App中所有基础域名,并提供切换功能方便开发过程 中切换。
YYModel等第三方网络库:业务层需要使用到数据模型转换的第三方网络 库;优选的,本发明采用的第三方网络库为AFNetworking。
所述基础网络层的网络逻辑包括依赖第三方网络库的可复用逻辑,具体包 括处理基础请求发起及性能,扩展协议等仅依赖第三方库AFNetworking的功能 逻辑。使得以后更换底层库只需调整基础层网络库即可。
如图2所示,所述业务网络层包括生成器定义模块、解析器定义模块以及 请求对象继承类模块,
所述生成器定义模块用于定义一个扩展协议‘DYRequestMakerProtocol’, 定义协议方法如下:
I.‘RequestMethod’,返回值为枚举:GET方法、POST方法。
II.‘RequestParams’,返回值为字典:请求参数。
III.‘RequestUrl’,返回值为字符串:请求完整路径。
该扩展协议能够使实现这个扩展协议的对象将复杂的业务参数转换为基础 请求数据,进而根据基础请求数据创建网络请求,将把原来的网络请求前逻辑 与根据该扩展协议生成的网络请求本身通过这个协议隔离开来了,从而实现在 不需要调整代码情况下扩展网络请求前逻辑的目的。
具体的实现方式是:定义一个类‘DYRequestMaker’为生成器,遵循‘DYRequestMakerProtocol’协议,通过调用鉴权加密、域名管理库、用户信 息、设备信息等私有库完成外部任意传入参数转换为基础的请求方法、请求路 径、请求参数。
所述解析器定义模块用于定义一个扩展协议‘DYRequestParserProtocol’, 定义协议方法如下:
‘request:parsedResponse:completion:’,无返回值,第一个参数为请 求对象本身,第二个参数为被上一个解析器解析过后的参数,第三个参数为一 个Block回调,当解析完成后调用,会传递给下一个解析器,通过定义上述协 议,从而使解析器支持自由组合插件化扩展。
具体的实现方式是:定义三个类如‘DYErrorParser’为错误解析器、‘DYTokenParser r’为登录态解析器、‘DYModelParser’为模型解析器,均遵 循‘DYRequestParserProtocol’协议,且三个解析器之间的层级关系为:登录 态解析器为错误解析器的下层解析器,模型解析器为登录态解析器的下层解析 器。
错误解析器按照与服务器约定逻辑识别服务器接受请求后返回的参数是否 错误,若没有错误继续下层解析器(即登录态解析器);登录态解析器接收到上 层解析器(即错误解析器)传回的参数,并按照与服务器约定逻辑识别该参数 是否存在登录态错误,若有则调用用户信息管理更新登录态,否则继续下层解 析器(即模型解析器);所述模型解析器接收到上层解析器(即登录态解析器) 传回的参数,将服务器返回的字典转换为数据模型并抛出。
所述解析器的数量根据需要可以自行设定,解析器之间的层级关系也可以 自行设定。
所述请求对象继承类模块用于定义一请求对象继承类,所述请求对象继承 类与基础网络层的网络请求对象类之间为继承关系,所述请求对象继承类为子 类,所述网络请求对象类为父类,因此,所述请求对象继承类通过调用网络请 求对象类类方法将基础请求数据传入基础网络层实现网络请求对象创建,并注 册解析器。
具体的实现方式是:定义一个请求对象继承类‘DYRequest’,所述请求对 象继承类作为子类继承自基础网络库中的父类即网络请求对象类 ‘DYNetworkRequest’,定义类方法‘requestWithMaker:’,如图3所示,通过 该方法实现通过DYRequestMakerProtocol’协议取出请求方法、请求路径、请 求参数,并调用父类方法‘requestWithMethod:Url:Params:’将请求方法、请 求路径、请求参数传入基础网络层实现网络请求对象的创建;创建网络请求对 象后默认注册预先定义的错误解析器、登录态解析器、模型解析器,使解析器 保存在网络请求对象中,方便在网络请求结束后会调用这些解析器对服务器传 回的数据进行解析。
如图2所示,所述基础网络层包括网络请求对象类定义模块、管理网络请 求对象类定义模块。
其中,所述网络请求对象类定义模块用于定义一网络请求对象类,所述网 络请求对象类根据业务网络层中的基础请求数据实现网络请求对象创建,并通 过管理网络请求对象类定义模块发起网络请求,且将传入的回调存入网络请求 抽象类的回调属性中。
具体的实现方式是:定义一个类‘DYNetworkRequest’为网络请求对象。 定义类方法‘requestWithMethod:Url:Params:’,通过该方法将请求方法、请 求路径、请求参数传入基础网络层实现网络请求对象的创建;定义对象方法 ‘sendCompletion:’,通过该方法调用管理网络请求对象类的API接口发起 网络请求,并将外部业务层传入的回调保存在生成的网络请求对象的回调属性 中;定义对象方法‘resgisetParser:’,实现将注册的解析器保存在网络请求 对象的解析属性中。
所述管理网络请求对象类定义模块用于定义一管理网络请求对象类,所述 管理网络请求对象类对网络请求对象进行发起、回调、取消、解析等逻辑管理, 具体的实现方式如下:
定义一个类‘DYNetworkRequestManager’为管理网络请求对象,定义对象 方法‘sendRequest:’,通过该方法使基础网络层的网络库内部通过 AFNetworking的API接口完成整个网络请求基础逻辑的搭建,从而使管理网络 请求对象能够实现对网络请求对象进行发起、回调、取消、解析等逻辑管理。 具体如图3所示,网络请求对象‘DYNetworkRequest’通过‘sendCompletion’ 调用管理网络请求对象‘DYNetworkRequestManager’的对象方法‘sendRequest:’,实现网络请求的发起,并将外部业务层传入的回调保存在生 成的网络请求对象的回调属性中。
当网络请求完成,接收到服务器返回的数据时,调用存储在网络请求对象 中的解析器对返回数据进行解析,并调用存储在网络请求对象中的外部业务层 传入的回调,将解析完成的数据进一步返回给外部业务层。
另外,在管理网络请求对象类中初始化一个异步串行队列,并将网络请求 开始发起到实际发起的过程、以及数据解析的过程放入异步串行队列中执行。 其中,实际发起由***并发发起。
本发明所述一种iOS高性能高扩展网络架构,其通过将网络层分为业务网 络层和基础网络层,并将网络请求逻辑分为请求前逻辑、请求中子类逻辑、请 求中父类逻辑以及请求后逻辑,然后将依赖私有组件的请求前逻辑和请求中子 类逻辑设置在业务网络层,将依赖第三方网络库的请求中父类逻辑和请求后逻 辑设置在基础网络层,从而在外部任何地方实现了网络请求生成器逻辑,实现 了对网络请求前逻辑的扩展,同时支持解析器自由组合插件化扩展,还通过串 行队列将网络请求发起前与数据解析放在子线程中执行,达成高性能请求的需 求。本发明所述一种iOS高性能高扩展网络架构,分层清晰、职责单一、性能 优秀、且便于维护。
上面主要描述了一种iOS高性能高扩展网络架构,下面将对一种iOS高性 能高扩展网络架构的实现方法进行详细描述。如图4所示,所述iOS高性能高 扩展网络架构的实现方法包括如下步骤:
S1、将网络请求逻辑分为请求前逻辑、请求中逻辑以及请求后逻辑,并进 一步将请求中逻辑分为请求中子类逻辑、请求中父类逻辑;
S2、设置业务网络层和基础网络层,将请求前逻辑和请求中子类逻辑设置 在业务网络层,将请求中父类逻辑和请求后逻辑设置在基础网络层;
S3、在业务网络层中,根据生成器协议定义一用于将自外部业务层任意传 入参数转换为基础请求数据的生成器类,根据解析器协议定义至少一个用于注 册解析器的解析器类,定义一将基础请求数据传入基础网络层实现网络请求对 象创建并注册解析器的请求对象继承类;
S4、在基础网络层中,定义一根据业务网络层中的基础请求数据实现网络 请求对象创建的网络请求对象类,以及定义一搭建网络请求基础逻辑,并通过 网络请求基础逻辑完成网络请求发起的管理网络请求对象类。
其中,所述请求对象继承类与基础网络层的网络请求对象类之间为继承关 系,所述请求对象继承类为子类,所述网络请求对象类为父类,因此,所述请 求对象继承类通过调用网络请求对象类类方法将基础请求数据传入基础网络层 实现网络请求对象创建,并注册解析器。
网络请求对象类调用管理网络请求对象类的对象方法,实现网络请求的发 起,并将外部业务层传入的回调保存在生成的网络请求对象的回调属性中。
另外,所述iOS高性能高扩展网络架构的实现方法包括步骤S5:
S5、在管理网络请求对象类中初始化一个异步串行队列,并将网络请求开 始发起到实际发起的过程、以及数据解析的过程放入异步串行队列中执行。其 中,实际发起由***并发发起。
图5是本发明一实施例提供的iOS高性能高扩展网络架构的服务 器结构的示意图。所述服务器,为提供计算服务的设备,通常指具有 较高计算能力,通过网络提供给多个用户使用的计算机。如图5所示, 该实施例的服务器6包括:存储器61、处理器62以及***总线63, 所述存储器61包括存储其上的可运行的程序611,本领域技术人员 可以理解,图5中示出的终端设备结构并不构成对终端设备的限定, 可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的 部件布置。
下面结合图5对终端设备的各个构成部件进行具体的介绍:
存储器61可用于存储软件程序以及模块,处理器62通过运行存储在存储 器61的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储 器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、 至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存 储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。 此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器, 例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在存储器61上包含iOS高性能高扩展网络架构的实现方法的可运行程序 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执行的可运行程序具体为: 一种iOS高性能高扩展网络架构的实现方法,所述iOS高性能高扩展网络架构 的实现方法包括如下步骤:
S1、将网络请求逻辑分为请求前逻辑、请求中逻辑以及请求后逻辑,并进 一步将请求中逻辑分为请求中子类逻辑、请求中父类逻辑;
S2、设置业务网络层和基础网络层,将请求前逻辑和请求中子类逻辑设置 在业务网络层,将请求中父类逻辑和请求后逻辑设置在基础网络层;
S3、在业务网络层中,根据生成器协议定义一用于将自外部业务层任意传 入参数转换为基础请求数据的生成器类,根据解析器协议定义至少一个用于注 册解析器的解析器类,定义一将基础请求数据传入基础网络层实现网络请求对 象创建并注册解析器的请求对象继承类;
S4、在基础网络层中,定义一根据业务网络层中的基础请求数据实现网络 请求对象创建的网络请求对象类,以及定义一搭建网络请求基础逻辑,并通过 网络请求基础逻辑完成网络请求发起的管理网络请求对象类;
S5、在管理网络请求对象类中初始化一个异步串行队列,并将网络请求开 始发起到实际发起的过程、以及数据解析的过程放入异步串行队列中执行。其 中,实际发起由***并发发起。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述 的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程, 在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详 述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实 施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬 件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案 的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同 方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理 解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分 技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱 离本发明各实施例技术方案的精神和范围。