饿了么移动app架构设计的架构演进

原文:/p/c
文/圣迪(简书作者)原文链接:/p/c著作权归作者所有,转载请联系作者获得授权,并标注&简书作者&。
时代演进,技术也随之发展。到今天,APP已然成为绝大多数互联网企业用来获取用户的核心渠道。与此同时,伴随着业务量的增长,愈来愈大、愈来愈多的APP也在不断地、持续地挑战着每一个移动端研发人员的知识深度,而我们的移动端技术人员也在这个不断接受挑战的过程中,成就了今天的移动互联网时代。饿了么移动APP就是这样一个挑战,多用户量、多业务量,在接受着更多更挑剔用户的同时,默默地、不断地演进着移动端的架构。
我们常说,脱离业务谈架构就是纯粹的刷流氓。饿了么移动APP的发展也是其业务发展的一面镜子。
在饿了么业务发展的早期,移动APP经历从无到有的阶段。为了快速上线抢占市场,传统移动APP开发的MVC架构成了&短平快&思路的首选:
图1 MVC架构
这种架构以层次结构简单清晰,代码容易开发而被大多数人所接受。
在MVC的体系架构中,Controller层负责整个APP中主要逻辑功能的实现;Model层则负责数据结构的描述以及数据持久化的功能;而View层作为展现层负责渲染整个APP的UI。分工清晰,简洁明了;并且这种系统架构在语言框架层就得到了Apple的支持,所以非常适用于APP的startup开发。
然后,这种架构在开发的后期会由于其超高耦和性,从而造就庞大Controller层,而这也是一直被人所诟病。最终的MVC都从Model-View-Controller走向了Massive-View-Controller 的终点。
2 Module Decoupled
&短平快&的MVC架构帮助饿了么移动APP快速抢占了市场。而随着代码量的不断增加,臃肿的Controller层也在渐露头角;而业务上,饿了么移动APP也从单一APP发展为多APP齐头并进的格局。这时候,如果降低耦合,复用已有模块成了架构的第一要务。
架构中,模块复用的第一要求便是代码的功能组件化。组件化意味着拥有独立功能的代码从系统中进行抽象并剥离,再以&插件&的形式插回原有系统中。这样剥离出来的功能组件,便可以供其他APP进行使用,从而降低系统中模块与模块之间的耦和性;也同时提高了APP之间代码的复用性。
饿了么移动对于组件有两种定义:公有组件和业务组件。公有组件指的是封装得比较好的一些SDK,包括一些第三方组件和自己内部使用的组件。如iOS中最著名的网络SDK AFNetworking,Android下OKHttp,都是这类组件的代表。而对于业务组件,则定义为包含了一系列业务功能的整体,例如登录业务组件,注册业务组件,即为此类组件的典型代表。
对于公有组件,饿了么移动采取了版本化的管理方式,而这在iOS和Android平台上也早有比较成熟的解决方案。例如,对于iOS平台,CocoaPods基本上成为了代码组件化管理的标配;在Android平台上,Gradle也是非常成熟和稳健的方案。采用以上管理工具的另一个原因在于,对企业开发而言,代码也是一种商业机密。基于保密性的目的,支持内网搭建私有服务器成为了必需。以上的管理工具都能够很好地支持这些操作。
对于业务的组件化,我们采取了业务模块注册机制的方式来达到解耦合的目的。每个业务模块对外提供相应的业务接口,同时在系统启动的时候向Excalibur系统注册自己模块的Scheme(Excalibur是饿了么移动用来保存Scheme与模块之间映射的系统,同时能根据Scheme进行Class反射返回)。 当其他业务模块对该业务模块有依赖时,从Excalibur系统中获取相关实例,并调用相应接口来实现调用,从而实现了业务模块之间的解耦目的。
而在业务组件,即业务模块的内部,则可以根据不同开发人员的偏好,来实现不同的代码架构。如现在讨论得比较火的MVVM, MVP等,都可以在模块内部进行而不影响整体系统架构。
这时候的架构看起来更像是这样:
图2 EMC架构
这种E(Excalibur)M(Modules)C(Common)架构以高内聚、低耦合为主要的特点,以面向接口编程为出发点,降低了模块与模块之间的联系。
该架构的另外一大好处则在于解决了不同系统版本的兼容性问题。这里举iOS平台下的WebView作为例子来进行说明。Apple从iOS8系统开始提供了一套更好的Web支持框架&&WebKit,但在iOS7系统下却无法兼容,从而导致Crash。使用此类架构,可以在iOS7系统下仍然注册使用传统的WebView来渲染网页,而在iOS8及其以上系统注册WebKit来作为渲染网页的内核。即避免了Apple严格的审核机制,又达到了动态加载的目的。
移动APP的开发有两种不同的路线,Native APP和Web APP。这两种路线的区别类似于PC时代开发应用程序时的C/S架构和 B/S架构。
以上我们谈到的都属于典型的Native APP,即所有的程序都由本地组件渲染完成。这类APP优点是显而易见的,渲染速度快、用户体验好;缺点同时也十分突出:出现了错误一定要等待下一次用户进行APP更新才能够修复。
Web APP的优点恰好就是Native APP的缺点所在,其页面全部采用H5撰写并存放在服务器端。每次进行页面渲染时都从服务器请求最新的页面。一旦页面有错误服务器端进行更新便能立刻解决。不过其弊端也容易窥见:每次页面都需要请求服务器,造成渲染时等待时间过长,从而导致的用户体验不够完美,并且性能上较Native APP慢了1-2个数量级;与此同时还会导致更多的用户流量消耗。另一个缺点则在于,Web APP在移动端上调用本地的硬件设备存在一定的不便。不过这些弊端也都有相应的解决方案,如PhoneGap将网页提前打包在本地以减少网络的请求时间;同时也提供一系列的插件来访问本地的硬件设备。然而,尽管如此,其渲染速度上还是会稍微存在一定的差距。
Hybrid APP则是综合了二者优缺点的解决方案。饿了么移动对于此二类APP的观点在于,纯粹展示性的模块会更适合使用Web页面来达到渲染的目的;而更多的数据操作性、动画渲染性的模块则更适合采用Native的方式。
基于之前的EMC架构,我们将部分模块重新进行了架构:
图3 Hybrid-EMC架构
Hybrid-EMC架构中,Web作为一个子模块,注册加入到整个系统中,从而实现让业务上需要快速迭代的模块达到实时更新的效果。
4 React-Native & Hot Patch
经过这些年的业务发展,Hybrid提供的展示界面更新方案也逐渐地无法满足APP更新迭代的需要。因此越来越多的动态部署的方案被提了出来,比如iOS下的JSPatch, waxPatch,Android下的Dexpose,AndFix, ClassLoader,都是比较成熟Hot Patch动态部署解决方案。这些方案的思路都是通过下载远程服务器的代码来动态更新本地的代码行为。
React-Native则属于另一种动态部署的方案,其核心原理在于通过JavaScript来调用本地组件进行界面的渲染。
而饿了么移动APP发展到今天,各个APP综合用户量已经过亿。因此一个非常小的Bug所带来的问题都可能会直接影响到几万人的使用。为了保证APP的稳定性和健壮性,Hot Patch方案也就成了当下最有待解决的问题。
根据80%的用户访问20%页面这一80/20原则,保证这20%访问最频繁的页面的稳定性就是保证了80%的APP的稳定性。因此,饿了么移动对于部分访问最频繁的模块进行了React-Native备份。当这部分页面出现问题时,APP可以通过服务器的配置,自动切换成React-Native的备份页面;而与此同时开发人员开发一个小而精的Hot Patch来修复出现的问题。当Hot Patch完成修补后,再切换回Native APP的原生功能。
这时候的架构看起来会像是这样:
图4 HotPatch-EMC架构
HotPatch-EMC的架构主要目标在于解决移动APP的稳定性问题。通过RN与Native的主备,可以减少系统APP出错带来的失误成本。
我们都知道,对于软件工程来说,这世上没有银弹。对于架构而言其实也非常的适用。业务的不断更新,带来了饿了么移动APP架构的不断演进。
架构没有真正的好坏之分,只要适用于自己的业务,就是好的架构!
阅读(...) 评论()每天三分钟,知晓天下事,视频、语音、文字综合版任您挑!微信搜索fgzadmin关注或点击标题下方可以快速关注。
原创不易,认可价值,动手指点并转发,就是最好的支持与肯定。淘宝特约店址:http://goldengame.
深夜十点,陪你读书。
慢工出细活
由于中、美、俄三国自2008年后基本上长期上演“三国杀”(昨天文章《原创丨中美俄世纪三国杀,谁是百年长跑冠军
其实这是个有奖活动贴。n其实这是个有奖活动贴。n其实这是个有奖活动贴。
思考者正在阅读原创丨三次世界大战亚洲开打,美国推演靠谱吗?原创丨央行连出两大招,有何深意?微历史丨张学良为啥
美国总统奥巴马日在接受媒体采访时表示,2011年对利比亚局势的干涉,是其总统生涯中做出的最
我们都知道,美国软实力很厉害,在过去很多年都一直掌控者国际话语权,他们可以提着民主、自由、人权的大棒满世界乱
思考者正在阅读原创丨重大变革,我们的世界都将逃不过被TA重塑!原创丨中美黄岩岛较量,谁是最后赢家?原创丨你射饿了么移动APP的架构演进 - IOS - 伯乐在线
& 饿了么移动APP的架构演进
时代演进,技术也随之发展。到今天,APP已然成为绝大多数互联网企业用来获取用户的核心渠道。与此同时,伴随着业务量的增长,愈来愈大、愈来愈多的APP也在不断地、持续地挑战着每一个移动端研发人员的知识深度,而我们的移动端技术人员也在这个不断接受挑战的过程中,成就了今天的移动互联网时代。饿了么移动APP就是这样一个挑战,多用户量、多业务量,在接受着更多更挑剔用户的同时,默默地、不断地演进着移动端的架构。
我们常说,脱离业务谈架构就是纯粹的刷流氓。饿了么移动APP的发展也是其业务发展的一面镜子。
在饿了么业务发展的早期,移动APP经历从无到有的阶段。为了快速上线抢占市场,传统移动APP开发的MVC架构成了“短平快”思路的首选:
图1 MVC架构
这种架构以层次结构简单清晰,代码容易开发而被大多数人所接受。
在MVC的体系架构中,Controller层负责整个APP中主要逻辑功能的实现;Model层则负责数据结构的描述以及数据持久化的功能;而View层作为展现层负责渲染整个APP的UI。分工清晰,简洁明了;并且这种系统架构在语言框架层就得到了Apple的支持,所以非常适用于APP的startup开发。
然后,这种架构在开发的后期会由于其超高耦和性,从而造就庞大Controller层,而这也是一直被人所诟病。最终的MVC都从Model-View-Controller走向了Massive-View-Controller 的终点。
2 Module Decoupled
“短平快”的MVC架构帮助饿了么移动APP快速抢占了市场。而随着代码量的不断增加,臃肿的Controller层也在渐露头角;而业务上,饿了么移动APP也从单一APP发展为多APP齐头并进的格局。这时候,如果降低耦合,复用已有模块成了架构的第一要务。
架构中,模块复用的第一要求便是代码的功能组件化。组件化意味着拥有独立功能的代码从系统中进行抽象并剥离,再以“插件”的形式插回原有系统中。这样剥离出来的功能组件,便可以供其他APP进行使用,从而降低系统中模块与模块之间的耦和性;也同时提高了APP之间代码的复用性。
饿了么移动对于组件有两种定义:公有组件和业务组件。公有组件指的是封装得比较好的一些SDK,包括一些第三方组件和自己内部使用的组件。如iOS中最著名的网络SDK AFNetworking,Android下OKHttp,都是这类组件的代表。而对于业务组件,则定义为包含了一系列业务功能的整体,例如登录业务组件,注册业务组件,即为此类组件的典型代表。
对于公有组件,饿了么移动采取了版本化的管理方式,而这在iOS和Android平台上也早有比较成熟的解决方案。例如,对于iOS平台,CocoaPods基本上成为了代码组件化管理的标配;在Android平台上,Gradle也是非常成熟和稳健的方案。采用以上管理工具的另一个原因在于,对企业开发而言,代码也是一种商业机密。基于保密性的目的,支持内网搭建私有服务器成为了必需。以上的管理工具都能够很好地支持这些操作。
对于业务的组件化,我们采取了业务模块注册机制的方式来达到解耦合的目的。每个业务模块对外提供相应的业务接口,同时在系统启动的时候向Excalibur系统注册自己模块的Scheme(Excalibur是饿了么移动用来保存Scheme与模块之间映射的系统,同时能根据Scheme进行Class反射返回)。 当其他业务模块对该业务模块有依赖时,从Excalibur系统中获取相关实例,并调用相应接口来实现调用,从而实现了业务模块之间的解耦目的。
而在业务组件,即业务模块的内部,则可以根据不同开发人员的偏好,来实现不同的代码架构。如现在讨论得比较火的MVVM, MVP等,都可以在模块内部进行而不影响整体系统架构。
这时候的架构看起来更像是这样:
图2 EMC架构
这种E(Excalibur)M(Modules)C(Common)架构以高内聚、低耦合为主要的特点,以面向接口编程为出发点,降低了模块与模块之间的联系。
该架构的另外一大好处则在于解决了不同系统版本的兼容性问题。这里举iOS平台下的WebView作为例子来进行说明。Apple从iOS8系统开始提供了一套更好的Web支持框架——WebKit,但在iOS7系统下却无法兼容,从而导致Crash。使用此类架构,可以在iOS7系统下仍然注册使用传统的WebView来渲染网页,而在iOS8及其以上系统注册WebKit来作为渲染网页的内核。即避免了Apple严格的审核机制,又达到了动态加载的目的。
移动APP的开发有两种不同的路线,Native APP和Web APP。这两种路线的区别类似于PC时代开发应用程序时的C/S架构和 B/S架构。
以上我们谈到的都属于典型的Native APP,即所有的程序都由本地组件渲染完成。这类APP优点是显而易见的,渲染速度快、用户体验好;缺点同时也十分突出:出现了错误一定要等待下一次用户进行APP更新才能够修复。
Web APP的优点恰好就是Native APP的缺点所在,其页面全部采用H5撰写并存放在服务器端。每次进行页面渲染时都从服务器请求最新的页面。一旦页面有错误服务器端进行更新便能立刻解决。不过其弊端也容易窥见:每次页面都需要请求服务器,造成渲染时等待时间过长,从而导致的用户体验不够完美,并且性能上较Native APP慢了1-2个数量级;与此同时还会导致更多的用户流量消耗。另一个缺点则在于,Web APP在移动端上调用本地的硬件设备存在一定的不便。不过这些弊端也都有相应的解决方案,如PhoneGap将网页提前打包在本地以减少网络的请求时间;同时也提供一系列的插件来访问本地的硬件设备。然而,尽管如此,其渲染速度上还是会稍微存在一定的差距。
Hybrid APP则是综合了二者优缺点的解决方案。饿了么移动对于此二类APP的观点在于,纯粹展示性的模块会更适合使用Web页面来达到渲染的目的;而更多的数据操作性、动画渲染性的模块则更适合采用Native的方式。
基于之前的EMC架构,我们将部分模块重新进行了架构:
图3 Hybrid-EMC架构
Hybrid-EMC架构中,Web作为一个子模块,注册加入到整个系统中,从而实现让业务上需要快速迭代的模块达到实时更新的效果。
4 React-Native & Hot Patch
经过这些年的业务发展,Hybrid提供的展示界面更新方案也逐渐地无法满足APP更新迭代的需要。因此越来越多的动态部署的方案被提了出来,比如iOS下的JSPatch, waxPatch,Android下的Dexpose,AndFix, ClassLoader,都是比较成熟Hot Patch动态部署解决方案。这些方案的思路都是通过下载远程服务器的代码来动态更新本地的代码行为。
React-Native则属于另一种动态部署的方案,其核心原理在于通过JavaScript来调用本地组件进行界面的渲染。
而饿了么移动APP发展到今天,各个APP综合用户量已经过亿。因此一个非常小的Bug所带来的问题都可能会直接影响到几万人的使用。为了保证APP的稳定性和健壮性,Hot Patch方案也就成了当下最有待解决的问题。
根据80%的用户访问20%页面这一80/20原则,保证这20%访问最频繁的页面的稳定性就是保证了80%的APP的稳定性。因此,饿了么移动对于部分访问最频繁的模块进行了React-Native备份。当这部分页面出现问题时,APP可以通过服务器的配置,自动切换成React-Native的备份页面;而与此同时开发人员开发一个小而精的Hot Patch来修复出现的问题。当Hot Patch完成修补后,再切换回Native APP的原生功能。
这时候的架构看起来会像是这样:
图4 HotPatch-EMC架构
HotPatch-EMC的架构主要目标在于解决移动APP的稳定性问题。通过RN与Native的主备,可以减少系统APP出错带来的失误成本。
我们都知道,对于软件工程来说,这世上没有银弹。对于架构而言其实也非常的适用。业务的不断更新,带来了饿了么移动APP架构的不断演进。
架构没有真正的好坏之分,只要适用于自己的业务,就是好的架构!
可能感兴趣的话题
关于iOS频道
iOS频道分享iOS和Swift开发,应用设计和推广,iOS相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线1450人阅读
android(67)
随着移动互联网时代的到来,移动技术也随之飞速发展。如今,APP已然成为绝大多数互联网企业用来获取用户的核心渠道。与此同时,伴随着业务量的增长,愈来愈多的APP也在不断地挑战着每一个移动端研发人员的知识深度,而移动端技术人员也在这个不断接受挑战的过程中,成就了今天的移动互联网时代。
饿了么作为一家在O2O领域高速发展的公司,APP面临着多重挑战,如庞大的用户群体、高频高并发的业务、交易即时性等等。饿了么移动端的开发小伙伴在技术和业务的多重压力下,不断推进着饿了么移动端的架构演进。
我们常说,脱离业务谈架构就是纯粹的耍流氓。饿了么移动APP的发展也是其业务发展的一面镜子。
在饿了么业务发展的早期,移动APP经历了从无到有的阶段。为了快速上线抢占市场,传统移动APP开发的MVC架构成了“短平快”思路的首选:
这种架构因简单清晰,容易开发而被大多数人所接受。
在MVC的体系架构中,Controller层负责整个APP中主要逻辑功能的实现;Model层则负责数据结构的描述以及数据持久化的功能;而View层作为展现层负责渲染整个APP的UI。分工清晰,简洁明了。此外,这种系统架构在语言框架层就得到了Apple的支持,所以非常适用于APP的startup开发。
然后,这种架构在开发的后期会由于其超高耦合性,造成Controller层庞大,而这也是一直被人们所诟病。最终的MVC都从Model-View-Controller走向了Massive-View-Controller的终点。
2.ModuleDecoupled
“短平快”的MVC架构在早期可以满足饿了么移动APP的快速开发迭代,但是随着代码量的不断增加,臃肿的Controller层也在渐露头角;而业务上,饿了么移动APP也从单一APP发展为多APP齐头并进的格局。这时候,降低耦合,复用已有模块便成了架构的第一要务。
架构中,模块复用的第一要求便是代码的功能组件化。组件化意味着拥有独立功能的代码从系统中进行抽象并剥离,再以“插件”的形式插回原有系统中。这样剥离出来的功能组件,便可以供其他APP使用,从而降低系统中模块与模块之间的耦合性;也同时提高了APP之间代码的复用性。
饿了么移动对于组件有两种定义:公有组件和业务组件。公有组件指的是封装得比较好的一些SDK,包括一些第三方组件和自己内部使用的组件。如iOS中最著名的网络SDK AFNetworking,Android下OKHttp,都是这类组件的代表。业务组件,则定义为包含了一系列业务功能的整体,例如登录业务组件,注册业务组件,即为此类组件的典型代表。
对于公有组件,饿了么移动采取了版本化的管理方式,而这在iOS和Android平台上早有比较成熟的解决方案。例如,对于iOS平台,CocoaPods基本上成为了代码组件化管理的标配;在Android平台上,Gradle也是非常成熟和稳健的方案。采用以上管理工具的另一个原因在于,对企业开发而言,代码也是一种商业机密。基于保密的目的,支持内网搭建私有服务器成为了必需。以上的管理工具都能够很好地支持这些操作。
对于业务的组件化,我们采取了业务模块注册机制来达到解耦合的目的。每个业务模块对外提供相应的业务接口,同时在系统启动的时候向Excalibur系统注册自己模块的Scheme(Excalibur是饿了么移动用来保存Scheme与模块之间映射的系统,同时能根据Scheme进行Class反射返回)。
当其他业务模块对该业务模块有依赖时,从Excalibur系统中获取相关实例,并调用相应接口来实现调用,从而实现了业务模块之间的解耦目的。
而在业务组件,即业务模块的内部,则可以根据不同开发人员的偏好,来实现不同的代码架构。如现在讨论得比较火的MVVM, MVP等,都可以在模块内部进行而不影响整体系统架构。
这时候的架构看起来更像是这样:
E(Excalibur)M(Modules)C(Common)架构以高内聚、低耦合为主要的特点,以面向接口编程为出发点,降低了模块与模块之间的联系。
该架构的另外一大好处则在于解决了不同系统版本的兼容性问题。这里以iOS平台下的WebView作为例子来进行说明。Apple从iOS8系统开始提供了一套更好的Web支持框架——WebKit,但在iOS7系统下却无法兼容,从而导致Crash。使用此类架构,可以在iOS7系统下仍然注册使用传统的WebView来渲染网页,而在iOS8及其以上系统注册WebKit来作为渲染网页的内核。既避免了Apple严格的审核机制,又达到了动态加载的目的。
移动APP的开发有两种不同的路线,NativeAPP和Web APP。这两种路线的区别类似于PC时代开发应用程序时的C/S架构和 B/S架构。
以上我们谈到的都属于典型的Native APP,即所有的程序都由本地组件渲染完成。这类APP优点是显而易见的,渲染速度快、用户体验好;缺点同时也十分突出:出现了错误一定要等待下一次用户进行APP更新才能够修复。
Web APP的优点恰好就是Native
APP的缺点所在,其页面全部采用H5撰写并存放在服务器端。每次进行页面渲染时都从服务器请求最新的页面。一旦页面有错误,服务器端进行更新便能立刻解决。不过其弊端也容易窥见:每次页面都需要请求服务器,造成渲染时等待时间过长,从而导致的用户体验不够完美,并且性能上较Native APP慢了1-2个数量级;与此同时还会导致更多的用户流量消耗。另一个缺点则在于,Web APP在移动端上调用本地的硬件设备存在一定的不便。不过这些弊端也都有相应的解决方案,如PhoneGap将网页提前打包在本地以减少网络的请求时间;同时也提供一系列的插件来访问本地的硬件设备。然而,尽管如此,其渲染速度上还是存在一定的差距。
Hybrid APP则是综合了二者优缺点的解决方案。饿了么移动对于此二类APP的观点在于,纯粹展示性的模块会更适合使用Web页面来达到渲染的目的;而更多的数据操作性、动画渲染性的模块则更适合采用Native的方式。
基于之前的EMC架构,我们将部分模块重新进行了架构:
Hybrid-EMC架构中,Web作为一个子模块,注册加入到整个系统中,从而让业务上需要快速迭代的模块实现实时更新。
4.React-Native&
经过这些年的业务发展,Hybrid提供的展示界面更新方案也逐渐地无法满足APP更新迭代的需要。因此越来越多动态部署的方案被提了出来,比如iOS下的JSPatch, waxPatch,Android下的Dexpose, AndFix, ClassLoader,都是比较成熟Hot
Patch动态部署解决方案。这些方案的思路都是通过下载远程服务器的代码来动态更新本地的代码行为。
React-Native则属于另一种动态部署的方案,其核心原理在于通过JavaScript来调用本地组件进行界面的渲染。
而饿了么移动APP发展到今天,各个APP综合用户量已经过亿。因此一个非常小的Bug所带来的问题都可能会直接影响到几万人的使用。为了保证APP的稳定性和健壮性,Hot Patch方案也就成了当下最有待解决的问题。
根据80%的用户访问20%页面这一80/20原则,保证这20%访问最频繁的页面的稳定性就是保证了80%的APP的稳定性。因此,饿了么移动对于部分访问最频繁的模块进行了React-Native备份。当这部分页面出现问题时,APP可以通过服务器的配置,自动切换成React-Native的备份页面;而与此同时开发人员开发一个小而精的Hot
Patch来修复出现的问题。当Hot Patch完成修补后,再切换回Native APP的原生功能。
这时候的架构看起来会像是这样:
HotPatch-EMC架构
HotPatch-EMC的架构主要目标在于解决移动APP的稳定性问题。通过RN与Native的主备,可以减少系统APP出错带来的失误。
我们都知道,对于软件工程来说,这世上没有银弹。这对于架构而言其实也非常的适用。移动技术的不断发展和业务的不断变化,推动了饿了么移动APP架构的不断演进。
架构没有真正的好坏之分,只要适用于自己的业务,就是好的架构!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:297526次
积分:3058
积分:3058
排名:第9736名
原创:68篇
转载:69篇
评论:79条
(4)(1)(8)(3)(1)(1)(5)(7)(3)(10)(3)(3)(12)(16)(10)(7)(1)(4)(3)(8)(15)(21)

我要回帖

更多关于 移动app开发技术架构 的文章

 

随机推荐