CN109240839A - 一种独立业务架构 - Google Patents
一种独立业务架构 Download PDFInfo
- Publication number
- CN109240839A CN109240839A CN201811124366.4A CN201811124366A CN109240839A CN 109240839 A CN109240839 A CN 109240839A CN 201811124366 A CN201811124366 A CN 201811124366A CN 109240839 A CN109240839 A CN 109240839A
- Authority
- CN
- China
- Prior art keywords
- module
- operation layer
- library
- layer
- providing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种独立业务架构,所述架构包括业务层、弱业务层和公共服务层;所述公共服务层,用于为业务层、弱业务层提供基础的服务库;所述弱业务层位于公共服务层之上,用于为业务层提供二次封装的公共服务层的服务库;所述业务层位于弱业务层之上,用于为用户提供应用的界面和交互。本申请的独立业务架构,可以避免业务模块之间耦合,业务更清晰,团队中新人接手更容易;可维护性更强,开发效率高;并且可以提高架构复用机率。
Description
技术领域
本申请涉及业务架构技术领域,尤其涉及一种独立业务架构。
背景技术
目前APP(英文全称:Application,中文:应用程序)开发普遍采用单一工程模式,APP上的多个业务相互耦合严重。面对移动互联网快速发展,APP产品快速迭代的需求下,经常会出现APP开发滞后,线上bug,测试不到位的问题,最终影响用户使用APP的操作体验,导致用户流失。例如:如图1所示的火币APP有多个业务模块,包括行情模块、K线模块、交易模块和资产模块,这些模块之间会互相调用。行情模块要调起k线模块和交易模块,k线模块要调起资产模块,交易模块要调起资产模块。
现有APP中普遍存在上述情况,APP中的各个业务模块,相互影响,例如,火币APP中的K线模块需要修改,将会导致其他模块的修改,测试没有边界,风险也不能控制。
因此,如何使APP中的业务模块独立迭代,不影响其他业务模块,不会出现修改一个业务模块,导致其他业务模块需要修改的情况发生,成为业内亟待解决的问题。
发明内容
本申请提供了一种独立业务架构,以解决现有技术中,APP中业务模块之间耦合严重,修改其中一个业务模块,就会导致其他业务模块连带修改,最终造成风险不可控的问题。
第一方面,本申请提供一种独立业务架构,所述架构包括业务层、弱业务层和公共服务层;
所述公共服务层,用于为业务层、弱业务层提供基础的服务库;
所述弱业务层位于公共服务层之上,用于为业务层提供二次封装的公共服务层的服务库;
所述业务层位于弱业务层之上,用于为用户提供应用的界面和交互。
结合第一方面,在第一方面的第一种可实现方式中,所述服务库包括网络库、缓存库、统计库、性能库、工具库和图片库;
所述网络库用于,提供网络请求的基本功能,其中,基本功能包括同步请求、异步请求、get方式和post方式;
所述缓存库用于,提供数据交换的缓冲区,实现高并发,大数据场景下,热点数据访问;
所述统计库用于,提供数据管理、统计分析、图表分析和输出管理功能;
所述性能库用于,优化架构性能;
所述工具库用于,执行通用任务,包括预处理、编译、优化图像、缩小代码、代码分析和运行测试;
所述图片库用于,提供图片。
结合第一方面,在第一方面的第二种可实现方式中,所述业务层包括多个业务模块,所述业务模块包括DB模块、API接口、CACHE储存器、视图模块和控制器;
所述DB模块,用于存储业务模块中的数据和文件;
所述视图模块,用于显示视图;
所述控制器负责调度业务内部逻辑和视图的关系。
结合第一方面,在第一方面的第三种可实现方式中,所述架构的组件代码库利用Git工具管理,用于组件版本独立维护。
结合第一方面,在第一方面的第四种可实现方式中,所述架构中的组件代码利用cocoapods工具管理,便于组件代码的集成。
结合第一方面,在第一方面的第五种可实现方式中,所述业务层包括首页模块、行情模块、k线模块、交易模块、个人资产模块;
所述首页模块,用于提供用户应用服务入口和搜索服务;
所述行情模块,用于提供用户数字货币的行情;
所述k线模块,用于提供用户数字货币的k线;
所述交易模块,用于提供用户数字货币交易服务;
所述个人资产模块,用于用户查看个人资产。
结合第一方面,在第一方面的第六种可实现方式中,所述弱业务层包括账户模块、皮肤模块、应用基础模块、路由模块和定位模块;
所述账户模块,用于为业务层提供账户信息;
所述皮肤模块,用于为业务层提供皮肤;
所述应用基础模块,用于为业务层提供应用基础信息;
所述路由模块,用于根据信道的情况自动选择和设定路由;
所述定位模块,用于为业务层提供定位信息。
结合第一方面的第六种可实现方式中,在第一方面的第七种可实现方式中,所述弱业务层还包括UI组件库、广告SDK和分享SDK。
结合第一方面,在第一方面的第八种可实现方式中,所述架构中使用url传递数据。
结合第一方面,在第一方面的第九种可实现方式中,所述架构通过中间件工作在多平台或者OS环境。
由以上技术方案可知,本申请的一种独立业务架构,所述架构包括业务层、弱业务层和公共服务层;所述公共服务层,用于为业务层、弱业务层提供基础的服务库;所述弱业务层位于公共服务层之上,用于为业务层提供二次封装的公共服务层的服务库;所述业务层位于弱业务层之上,用于为用户提供应用的界面和交互。本申请的独立业务架构,可以避免业务模块之间耦合,业务更清晰,团队中新人接手更容易;可维护性更强,开发效率高;并且提高架构复用机率,代码更清晰。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的现有技术中的业务模块网状连接结构图;
图2为本申请提供的业务模块中心化连接结构图;
图3为本申请提供的一种独立业务架构第一实施例的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。
现有技术中,APP的业务模块之间耦合严重,不利于APP的测试和维护,最终影响用户体验,造成用户流失,本申请中,将现有技术中业务模块之间的网状结构,改造成中心化结构,如图2所示,首页模块,k线模块,行情模块,交易模块分别与路由器连接,这种中心化结构有利于解决业务模块之间耦合严重的问题,同时中心化结构减少业务模块的对外接口,使业务模块更内聚。
请参阅图3,为本申请提供的一种独立业务架构第一实施例的结构框图,所述架构包括业务层1、弱业务层2和公共服务层3;
所述公共服务层3,用于为业务层1、弱业务层2提供基础的服务库;
具体的,所述公共服务层3跨业务层1和弱业务层2,不包含任何业务逻辑。只是一些基础的服务库,可以在任何地方使用。
所述弱业务层2位于公共服务层3之上,用于为业务层1提供二次封装的公共服务层3的服务库;
具体的,把公共服务层3封装为业务特性的二次封装,便于业务层1使用。所述弱业务层2跨业务层1。弱业务层2在独立架构中的位置很关键,处于公共服务层3与业务层1中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是无知的,改变上层的设计对于其调用的底层而言没有任何影响。弱业务层2的设计对于一个支持可扩展的架构尤为关键,因为扮演了两个不同的角色。对于公共服务层3而言,弱业务层2是调用者;对于业务层1而言,弱业务层2却是被调用者。
所述业务层1位于弱业务层2之上,用于为用户提供应用的界面和交互。
所述业务层1为具体的业务,例如货币APP中的首页,行情,交易和k线业务。
由以上实施例可知,本申请的一种独立业务架构第一实施例,所述架构包括业务层1、弱业务层2和公共服务层3;所述公共服务层3,用于为业务层1、弱业务层2提供基础的服务库;所述弱业务层2位于公共服务层3之上,用于为业务层1提供二次封装的公共服务层3的服务库;所述业务层1位于弱业务层2之上,用于为用户提供应用的界面和交互。本申请实施例的独立业务架构,可以避免业务模块之间耦合,业务更清晰,团队中新人接手更容易;可维护性更强,开发效率高;并且提高架构复用机率,代码更清晰。
本申请提供的一种独立业务架构第二实施例,该第二实施例与第二实施例的不同之处在于,所述服务库包括网络库、缓存库、统计库、性能库、工具库和图片库;
所述网络库用于,提供网络请求的基本功能,其中,基本功能包括同步请求、异步请求、get方式和post方式;
本申请中网络库可以为Libevent,Libevent是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个优势:事件驱动(event-driven),高性能;轻量级,专注于网络;源代码相当精炼、易读;跨平台,支持Windows、Linux、*BSD和Mac Os;支持多种I/O多路复用技术,epoll、poll、dev/poll、select和kqueue等;支持I/O,定时器和信号等事件;注册事件优先级。
所述缓存库用于,提供数据交换的缓冲区,实现高并发,大数据场景下,热点数据访问;
具体的,缓存就是数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在用完后还是会把文件送到硬盘等存储器里永久存储。
所述统计库用于,提供数据管理、统计分析、图表分析和输出管理功能;
所述性能库用于,优化架构性能;
具体的,性能对于架构有着极其重要的意义,性能优化也是开发APP中的难点。本申请采用性能库,优化架构性能。
所述工具库用于,执行通用任务,包括预处理、编译、优化图像、缩小代码、代码分析和运行测试;
所述图片库用于,提供图片。
由以上实施例可知,本申请的一种独立业务架构第二实施例,所述服务库包括网络库、缓存库、统计库、性能库、工具库和图片库。所述网络库用于提供网络请求的基本功能,所述缓存库用于提供数据交换的缓冲区,所述统计库用于数据的管理以及其他功能,所述性能库用于优化架构性能,所述工具库用于执行通用任务,所述图片库用于提供图片,本申请中所述服务库中包括多种功能库,为弱业务层2和业务层1提供基础信息和工具。
本申请提供的一种独立业务架构第三实施例,该第三实施例与第一实施例的不同之处在于,所述业务层1包括多个业务模块,所述业务模块包括DB模块、API接口、CACHE储存器、视图模块和控制器;
所述DB模块,用于存储业务模块中的数据和文件;
具体的,所述DB模块全称为database,中文为数据库。
所述视图模块,用于显示视图;
所述控制器负责调度业务内部逻辑和视图的关系。
所述API接口(API全称Application Program Interface)为应用编程接口。API接口是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。API的一个主要功能是提供通用功能集。程序员通过使用API函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。API同时为各种不同平台提供数据共享。根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将API分为四种类型:远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
当前应用于API的标准包括ANSI标准SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API可以应用于所有计算机平台和操作系统。这些API以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的API还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种API只处理一种信息格式,所以该情形下的信息交付API只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付API方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付API类型是比较理想的选择。
通过API接口可以确定要查询类的所在包,通过API接口可以查看类的继承关系和实现关系和功能描述,通过API接口可以确定查询的类型是结构,抽象类或普通类以及类的一些权限修饰。通过API接口可以确定查询的类的构造方法,是无参构造还是有参构造,可以针对参数类型进行说明。通过API可以确定要查询的类的成员方法。
Cache存储器为高速缓冲存储器,是位于CPU和主存储器DRAM(DynamicRandomAccessMemory)之间,规模较小,但速度很高的存储器,通常由SRAM(StaticRandomAccessMemory静态存储器)组成。它是位于CPU与内存间的一种容量较小但速度很高的存储器。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),L1Cache主要是集成在CPU内部,而L2Cache集成在主板上或是CPU上。
由以上实施例可知,本申请的一种独立业务架构第三实施例,所述业务层1包括多个业务模块,所述业务模块包括DB模块、API接口、CACHE储存器、视图模块和控制器。本申请实施例中所述DB模块,用于存储业务模块中的数据和文件;所述视图模块,用于显示视图;所述控制器负责调度业务内部逻辑和视图的关系。业务模块中的各个模块配合,使架构能够实现业务模块中的业务功能。
本申请提供的一种独立业务架构第四实施例,该第四实施例与第一实施例的不同之处在于,所述架构的组件代码库利用Git工具管理,用于组件版本独立维护。
Git工具是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。Git工具有以下功能:从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上;在自己的机器上根据不同的开发目的,创建分支,修改代码;在单机上自己创建的分支上提交代码;在单机上合并分支;把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
由以上实施例可知,本申请的一种独立业务架构第四实施例,所述架构的组件代码库利用Git工具管理,用于组件版本独立维护。本申请实施例,Git工具适合分布式开发,这样,服务器压力和数据量都不会太大;开发速度快、灵活;任意两个开发者之间可以很容易的解决冲突;并且可以离线工作。
本申请提供的一种独立业务架构第五实施例,该第五实施例与第一实施例的不同之处在于,所述架构中的组件代码利用cocoapods工具管理,便于组件代码的集成。
CocoaPods工具是OSX和iOS下的一个第三类库管理工具,通过CocoaPods工具可以为项目添加被称为Pods的依赖库,其中,这些类库必须是CocoaPods工具本身所支持的,并且可以轻松管理其版本。在引入第三方库时CocoaPods工具可以自动为完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。使用CocoaPods工具可以很方便地查找新的第三方库,这些类库是比较标准的,这样可以找到真正好用的类库。
创建库工程,配置HBKline.podspec文件,例如:
Pod::Spec.new do|s|
s.name=“HBKline”
s.version=“0.0.1”
s.summary=“火币K线”
s.description=“独立业务,多方使用”
s.homepage=“http://huobi.com”
s.license=“MIT”
s.author={“yangchuang”=>“yangchuang0515@huobi.com”}
s.ios.deployment_target=“9.0”
s.source={:git=>″,:tag=>s.version.to_s}
s.source_files=“**/*.{h,m}”
s.public_header_files=“**/*.h”
s.resource=“**/*.{png,json,storyboard,xib,lproj}”
s.frameworks=“AVFoundation”,“AudioToolbox”,“CoreMotion”,“CGNetwork”。
由以上实施例可知,本申请的一种独立业务架构第五实施例,所述架构中的组件代码利用cocoapods工具管理,便于组件代码的集成。本申请实施例采用cocoapods工具可以更便捷的管理版本。
本申请提供的一种独立业务架构第六实施例,该第六实施例与第一实施例的不同之处在于,所述业务层1包括首页模块、行情模块、k线模块、交易模块、个人资产模块;
所述首页模块,用于提供用户应用服务入口和搜索服务;
所述行情模块,用于提供用户数字货币的行情;
所述k线模块,用于提供用户数字货币的k线;
所述交易模块,用于提供用户数字货币交易服务;
所述个人资产模块,用于用户查看个人资产。
由以上实施例可知,本申请的一种独立业务架构第六实施例,所述业务层1包括首页模块、行情模块、k线模块、交易模块、个人资产模块。本申请实施例中业务层1中包括多种模块,可以实现APP中的多项业务,提供APP的可用性,为用户提供更多服务。
本申请提供的一种独立业务架构第七实施例,该第七实施例与第一实施例的不同之处在于,所述弱业务层2包括账户模块、皮肤模块、应用基础模块、路由模块和定位模块;
所述账户模块,用于为业务层1提供账户信息;
所述皮肤模块,用于为业务层1提供皮肤;
所述应用基础模块,用于为业务层1提供应用基础信息;
所述路由模块,用于根据信道的情况自动选择和设定路由;
所述定位模块,用于为业务层1提供定位信息。
由以上实施例可知,本申请的一种独立业务架构第七实施例,所述弱业务层2包括账户模块、皮肤模块、应用基础模块、路由模块和定位模块。本申请实施例中弱业务层2为业务层1提供可以调用的模块,各个模块方便业务层1中业务的实现。
本申请提供的一种独立业务架构第八实施例,该第八实施例与第一实施例的不同之处在于,所述弱业务层2还包括UI组件库、广告SDK和分享SDK。
UI组件库这次整理包涵一些常规的按钮、Switch、进度条等控件都是通用控件。UI库不仅包括控件,还包括效果、动画甚至是一些UI辅助类库等。
广告SDK就是植入程序里面的广告需要依赖的第三方API。比如APP所有者想在别人使用该APP展示广告,所有者就可以选择下载别人的广告SDK,调用它们提供的API,API会取得和展示广告,这样程序就能在适当的位置显示它们的广告,当有用户点击广告时,你就会从广告提供商哪里获得一定比例的推广提成。所以SDK广告就是内置于程序内的广告开发工具包,由广告提供商提供。
由以上实施例可知,本申请的一种独立业务架构第八实施例,所述弱业务层2还包括UI组件库、广告SDK和分享SDK。本申请实施例还可以为业务层1提供UI组件库、广告SDK和分享SDK。
本申请提供的一种独立业务架构第九实施例,该第九实施例与第一实施例的不同之处在于,所述架构中使用url传递数据。
Url为统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置等。
本申请中所述架构可以使用url传递数据,也可以通过协议传递自定义的复杂数据。
由以上实施例可知,本申请的一种独立业务架构第九实施例,所述架构中使用url传递数据。Url简洁易用,可同时传递多个字符型参数;Url可以很方便的在页面之间切换并传递参数,无需额外的处理,基于正常情况比较不会性能损失。
本申请提供的一种独立业务架构第十实施例,该第十实施例与第一实施例的不同之处在于,所述架构通过中间件工作在多平台或者OS环境。
中间件不是一个组件,它是一组组件,包括路由管道和消息管道,是把各业务模块的消息传递到目的地,通过内部标示和服务被发现机制来实现。中间件是独立的,不包含任何的业务特点,是公用的。
由以上实施例可知,本申请的一种独立业务架构第十实施例,所述架构通过中间件工作在多平台或者OS环境。本申请实施例通过使用中间件,使架构工作的环境更多样化。
本申请实施例中,架构中组件的声明周期由自身连接器管理,根据自身业务特性,维护生命周期。
架构的实现采用组件连接器,组件连接器的主要作用:第一,注册服务到路由器,说明自身业务标示。第二,判断当前调用是否符合规范。第三,维护业务组件的声明周期。
业务间的数据共享,采用框架上下文HBAppContextHandler,所有注册的业务组件,可以获取此上下文句柄对象,获取上面寄存数据。比如,当前切换到了某个业务模块后,要记录一个标记。在重置皮肤或者语言后,业务界面重置后能找回上次的操作界面。
本申请架构采用壳工程解耦。壳工程的主要作用是解决业务和平台工程的耦合,避免在一些公用的系统事件处理点上出现业务耦合。把系统的某些回调函数中的业务解耦合。壳工程解耦是业务组件的宿主工程,任何一个项目都必须有一个宿主工程,用来配置证书,调试,编译,打包发布等。
例如,系统启动多个服务初始化的模块非常容易耦合,造成一个服务修改,其他业务不正常的风险。采用公共服务管理模块,系统事件分发给各模块,模块独立处理处理自身逻辑,不影响其他服务模块。
工程模块解耦后,业务可以很便利的移植到任何的产品线上。
所述架构的工程集成采用pod方式集成所有业务,编写podfile文件,例如:
platform:ios,'9.0'
inhibit_all_warnings!
install!'cocoapods',:deterministic_uuids=>false
#-----------------------------------------Huobi Common Pods
def common_pods
#底层库
pod'HBAppLibrary',:path=>'BitVCProject/Library/ThirdToolKit/pods'
pod'HBAppCore',:path=>'BitVCProject/Common/pods'
#k线
pod'HBKline',:path=>'BitVCProject/HuobiPro/Kline'
#点卡
pod'HBPoints',:path=>'BitVCProject/HuobiPro/Points'
#安全中心
pod'HBSecurityCenter',:path=>'BitVCProject/HuobiPro/SecurityCenter'
#OTC
pod'HBOtc',:path=>'BitVCProject/HuobiPro/Otc'
#行情
pod'HBMarket',:path=>'BitVCProject/HuobiPro/Market'
#交易
pod'HBExchange',:path=>'BitVCProject/HuobiPro/Exchange'
#h5webview
pod'HBWebview',:path=>'BitVCProject/HuobiPro/Webview'
#首页
pod'HBHome',:path=>'BitVCProject/HuobiPro/Home'
#个人资产
pod'HBBalance',:path=>'BitVCProject/HuobiPro/Balance'
#引导介绍
pod'HBImGuide',:path=>'BitVCProject/HuobiPro/ImGuide'
#启动加载
pod'HBLaunch',:path=>'BitVCProject/HuobiPro/Launch'
#邀请返佣
pod'HBShare',:path=>'BitVCProject/HuobiPro/Share'
#我的功能
pod'HBAccount',:path=>'BitVCProject/HuobiPro/Account'
pod'YYDebugDatabase',:configurations=>'Debug'
#数据库调试工具,仅在debug模式下参与编译
end
业务之间调用关系,例如:
id<HBKlineServiceProtocol>serviceProtocolImpl=[[HBRouterServiceManager sharedInstance]createService:protocol(HBKlineServiceProtocol)];
serviceProtocolImpl.symbol=symbol;
serviceProtocolImpl.formMargin=fromMargin;
if([[HBChangeManager sharedManager]isLiteVersion]){
serviceProtocolImpl.showType=HBKLineShowTypeCollectOnly;
}else{
serviceProtocolImpl.showType=HBKLineShowTypeExchCollect;
}
serviceProtocolImpl.hidesBottomBarWhenPushed=YES;
UIViewController*vc=[HBRouter viewControllerForURL:[HBRouterUrlFactory urlFor-
ServiceProtocol:serviceProtocolImpl]
withParameters:serviceProtocolImpl?{kServiceProtocolImpl_KEY:serviceProtocolImpl}:nil
withBlock:nil];
[formController.navigationController pushViewController:vc animated:YES];
}
对本申请中的架构测试和验证:
编译运行:各业务独立编译,可以编译为framework库文件,减少工程编译时间。
架构组件化改造后,版本的崩溃率降到了0.04%,稳定性非常好。业务边界更清晰,版本迭代更快,开发体验有非常大的提升。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种独立业务架构,其特征在于,所述架构包括业务层、弱业务层和公共服务层;
所述公共服务层,用于为业务层、弱业务层提供基础的服务库;
所述弱业务层位于公共服务层之上,用于为业务层提供二次封装的公共服务层的服务库;
所述业务层位于弱业务层之上,用于为用户提供应用的界面和交互。
2.根据权利要求1所述的一种独立业务架构,其特征在于,所述服务库包括网络库、缓存库、统计库、性能库、工具库和图片库;
所述网络库用于,提供网络请求的基本功能,其中,基本功能包括同步请求、异步请求、get方式和post方式;
所述缓存库用于,提供数据交换的缓冲区,实现高并发,大数据场景下,热点数据访问;
所述统计库用于,提供数据管理、统计分析、图表分析和输出管理功能;
所述性能库用于,优化架构性能;
所述工具库用于,执行通用任务,包括预处理、编译、优化图像、缩小代码、代码分析和运行测试;
所述图片库用于,提供图片。
3.根据权利要求1所述的一种独立业务架构,其特征在于,所述业务层包括多个业务模块,所述业务模块包括DB模块、API接口、CACHE储存器、视图模块和控制器;
所述DB模块,用于存储业务模块中的数据和文件;
所述视图模块,用于显示视图;
所述控制器负责调度业务内部逻辑和视图的关系。
4.根据权利要求1所述的一种独立业务架构,其特征在于,所述架构的组件代码库利用Git工具管理,用于组件版本独立维护。
5.根据权利要求1所述的一种独立业务架构,其特征在于,所述架构中的组件代码利用cocoapods工具管理,便于组件代码的集成。
6.根据权利要求1所述的一种独立业务架构,其特征在于,所述业务层包括首页模块、行情模块、k线模块、交易模块、个人资产模块;
所述首页模块,用于提供用户应用服务入口和搜索服务;
所述行情模块,用于提供用户数字货币的行情;
所述k线模块,用于提供用户数字货币的k线;
所述交易模块,用于提供用户数字货币交易服务;
所述个人资产模块,用于用户查看个人资产。
7.根据权利要求1所述的一种独立业务架构,其特征在于,所述弱业务层包括账户模块、皮肤模块、应用基础模块、路由模块和定位模块;
所述账户模块,用于为业务层提供账户信息;
所述皮肤模块,用于为业务层提供皮肤;
所述应用基础模块,用于为业务层提供应用基础信息;
所述路由模块,用于根据信道的情况自动选择和设定路由;
所述定位模块,用于为业务层提供定位信息。
8.根据权利要求7所述的一种独立业务架构,其特征在于,所述弱业务层还包括UI组件库、广告SDK和分享SDK。
9.根据权利要求1所述的一种独立业务架构,其特征在于,所述架构中使用url传递数据。
10.根据权利要求1所述的一种独立业务架构,其特征在于,所述架构通过中间件工作在多平台或者OS环境。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811124366.4A CN109240839A (zh) | 2018-09-26 | 2018-09-26 | 一种独立业务架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811124366.4A CN109240839A (zh) | 2018-09-26 | 2018-09-26 | 一种独立业务架构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109240839A true CN109240839A (zh) | 2019-01-18 |
Family
ID=65056232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811124366.4A Pending CN109240839A (zh) | 2018-09-26 | 2018-09-26 | 一种独立业务架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240839A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569063A (zh) * | 2019-08-30 | 2019-12-13 | 五八有限公司 | 一种子应用程序app生成方法和生成装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622211A (zh) * | 2011-01-27 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种应用程序开发的方法和装置 |
CN103677841A (zh) * | 2013-12-18 | 2014-03-26 | 北京航天测控技术有限公司 | 基于元素级模板的ietm的代码生成方法及装置 |
EP2733604A4 (en) * | 2011-07-12 | 2015-08-05 | Tongling Yucheng Software Technology Co Ltd | SERVICE MODEL-ORIENTED SOFTWARE DEVICE PLATFORM AND EMBODIMENT FOR THIS |
CN106569794A (zh) * | 2016-09-23 | 2017-04-19 | 北京五八信息技术有限公司 | 应用程序开发装置 |
CN107729061A (zh) * | 2017-10-12 | 2018-02-23 | 武汉市灯塔互动文化传播有限公司 | 一种ios平台下工程项目的组件化构建方法 |
-
2018
- 2018-09-26 CN CN201811124366.4A patent/CN109240839A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622211A (zh) * | 2011-01-27 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种应用程序开发的方法和装置 |
EP2733604A4 (en) * | 2011-07-12 | 2015-08-05 | Tongling Yucheng Software Technology Co Ltd | SERVICE MODEL-ORIENTED SOFTWARE DEVICE PLATFORM AND EMBODIMENT FOR THIS |
CN103677841A (zh) * | 2013-12-18 | 2014-03-26 | 北京航天测控技术有限公司 | 基于元素级模板的ietm的代码生成方法及装置 |
CN106569794A (zh) * | 2016-09-23 | 2017-04-19 | 北京五八信息技术有限公司 | 应用程序开发装置 |
CN107729061A (zh) * | 2017-10-12 | 2018-02-23 | 武汉市灯塔互动文化传播有限公司 | 一种ios平台下工程项目的组件化构建方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569063A (zh) * | 2019-08-30 | 2019-12-13 | 五八有限公司 | 一种子应用程序app生成方法和生成装置 |
CN110569063B (zh) * | 2019-08-30 | 2023-05-02 | 五八有限公司 | 一种子应用程序app生成方法和生成装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11589691B2 (en) | System and method for locational image processing | |
US9113295B2 (en) | System and method for location based exchange vicinity interest specification | |
US9239705B2 (en) | Method and apparatus for customized software development kit (SDK) generation | |
CN101299754B (zh) | 具有动态用户界面的终端用户控制配置系统 | |
CN110019215A (zh) | 多重租赁数据库系统中的键模式管理 | |
CN110147369A (zh) | 多重租赁数据库系统中的数据分离和写入重新定向 | |
US20150113519A1 (en) | Extending functionality of web-based applications | |
CN111901294A (zh) | 一种构建在线机器学习项目的方法及机器学习系统 | |
JP5931934B2 (ja) | マルチサーバー予約システムにおける集中型予約コンテキスト管理のための方法及びシステム | |
CN104111826A (zh) | 一种软件项目开发方法及装置 | |
CN105637478A (zh) | 原生移动应用代码的计算机辅助开发 | |
CN102508722B (zh) | 一种嵌入式环境下的进程间通信方法 | |
CN109032722A (zh) | 更新ui组件的显示效果的方法、装置及设备、介质 | |
CN105144077A (zh) | 云服务平台 | |
CN101902756A (zh) | M2m业务平台及其工作方法 | |
CN103473696A (zh) | 一种收集、分析和分发网络商业信息的方法和系统 | |
CN108011768A (zh) | 一种aop拦截式HBase数据存储微服务架构构建方法 | |
CN103942055A (zh) | 面向融合网络混合服务流程编制语言的开发系统及方法 | |
CN112149079A (zh) | 基于微服务架构的规划评审管理平台及用户访问授权方法 | |
CN106648556A (zh) | 前后端集成开发测试的方法及装置 | |
CN108829467A (zh) | 第三方平台对接实现方法、装置、设备及存储介质 | |
CN110515514A (zh) | 一种数据处理方法、装置及存储介质 | |
US20100179982A1 (en) | Method for auditing the data of a computer application of a terminal | |
CN110019363A (zh) | 一种校验数据的方法和装置 | |
CN114546563A (zh) | 一种多租户页面访问控制方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |