For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
组件化编程开发是目前大多数软件开发程序员都在学习和使用的一种编程开发技术,而本文我们就通过案例分析来简单了解一下,组件化编程应用实践分享。
单一工程架构遇到的问题
在组件化架构之前,传统使用的工程架构主要是以Monolithic方式的单一工程架构,也就是将所有代码放在单个代码仓库里管理。单一工程架构使用了这么多年为什么突然遇到了问题,这也引入了APP项目开发的一个大背景,现有中大型APP项目变的越来越复杂:
多APP项目并存-集团内部存在多个APP项目,不同APP希望可以复用现有组件能力快速搭建出新的APP。
功能增多-随着项目功能越来越多,代码量增多。同时需要更多的开发人员参与到项目中,这会增加开发团队之间协作的成本。
多语言/多技术栈-引入了更多的新技术,例如使用一种以上的跨平台UI技术用于快速交付业务,不同的编程语言、音视频、跨平台框架,增加了整个工程的复杂度。
以上这些业务发展的诉求就给传统单一工程架构方式带来了很多新的技术要求:
工程效率
工程代码量过大会导致编译速度缓慢。
单git工程提交同时可能带来更多的git提交冲突和编译错误。
质量问题
如何将git提交关联到对应的功能模块需求。发版时进行合规检查避免带入不规范的代码,对整个功能模块回滚的诉求。
如何在单仓库中管控这么多开发人员的代码权限,尽可能避免不安全的提交并且限制改动范围。
更大范围的组件复用
基础组件从支持单个APP复用到支持多个APP复用。
不只是基础能力组件,对于业务能力组件也需要支持复用。(例如一个页面组件同时在多个APP使用)
跨平台容器需要复用底层组件能力避免重复开发,同时不同跨平台容器API需要尽量保持统一,底层基础设施向容器化发展支持业务跨APP复用。
跨技术栈通信
由于页面导航多技术栈混合共存,页面路由需要支持跨技术栈。
跨组件通信需要支持跨语言/跨技术栈通信。
更好的解耦
页面解耦。由于页面导航栈混合共存,页面自身不再清晰的知道上游和下游页面由什么技术栈搭建,所以页面路由需要做到完全解耦隔离技术栈的具体实现。
业务组件间维持松耦合关系,可以灵活添加/移除,基于现有组件能力快速搭建出不同的APP。
对于同一个服务或页面可以插件化方式灵活提供多种不同的实现,不同的APP宿主也可以提供不同的实现并且提供A/B能力。
由于包体积限制和不同组件包含相同符号导致的符号冲突问题,在复用组件的时候需要尽可能引入小依赖原则降低接入成本。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。