概要
有关于多个系统的融合问题,一直是互联网后半场的中心话题,微前端、微服务,甚至是组件物料体系,应用商店等模式,都在围绕着这个主题,从不同维度的需求去解决这类问题,有的是以人力冲杀、有的以标准取胜、有的通过工程化去解决、有的以甩给第三方处理为办法,本文将以少人力,低成本的角度去尝试一种思路。
问题背景(先扯个套话)
多系统集成已成为数字化转型中不可避免的趋势,但集成过程中也面临着许多挑战,如统一UI、多系统功能权限集成和多系统消息集成等。在这篇技术博客中,我们将探讨这些问题,并为您提供解决方案。
统一UI
在多系统集成中,应用程序和系统之间的交互可能不够流畅和一致。这主要由于UI的不一致造成。如果每个应用程序和系统都具有不同的UI元素,那么整体体验将变得混乱,严重影响用户的使用体验。
为了解决这个问题,企业可以考虑使用统一UI成为一个标准。 组件库提供了一些用于界面设计和开发的组件。组件不仅可使外观一致,还可确保一致性、易用性和用户友好性。使用统一UI的企业可以显著提高用户体验并提高生产力。
多系统功能权限集成
在多系统集成中,每个应用程序和系统都具有独特的安全性和访问权限。如果不在多个系统中保持一致,势必会造成安全性漏洞和数据泄露的风险,严重影响企业的安全性。
为了解决此问题,您可以使用中心化访问控制(CAC)管理多个系统中的身份验证和授权。中心化访问控制不仅可以优化安全性,还可以简化访问控制和授权管理。此外,使用单一登录(SSO)插件也是一个不错的选择,它允许用户使用单一凭证登录到多个系统中去。
多系统消息集成
在多系统集成中,每个应用程序和系统通常都会生成和发送大量消息,包括电子邮件、应用程序通知和警报。这些消息现在可能分散在不同的系统中,这对用户造成了很大的困扰,因为用户不得不不断地切换系统以查看消息。
在这种情况下,企业可以考虑使用统一的消息中心集成多个应用程序和系统。这将使用户的工作更加高效,因为他们将能够在一个位置访问和管理所有消息。企业也可以考虑使用消息队列(MQ)技术,以便在访问多个系统时,确保消息的一致性和可靠性。
常规思路及问题
大公司的思路基本集中在微前端、微服务、统一UI组件这个路径上去做,因为人力充足、制度规范,能在很大程度上保证这方案的有效执行。
“微” 字的理解:“巨石应用”、“超大型工程”(半个小时编译、半小时启动那种,服务拆分)
简单概括满足开发时粒度的拆分、部署与应用的无关性(如:子应用的部署迁移不影响上层使用)、一致性的通信接入标准(框架)。最终因量级的爆发式增长,打的补丁处理(注册、发现、监控和追踪) 也就是说微前端、微服务,这个微字的共性就是工程化项目的粒度拆分,实现类似网关层,保证了最终应用和部署之间可以缓冲,至于应用、服务本质上两者处理的粒度细化后的诉求有所不同,因此演化出了自己的方言要求。
- 典型如前端:WebPack 5和模块联合、qiankun、 Luigi等,简单一点儿,联邦模块实现了三个要素(URL加载,渲染root,参数)是不是跟jq时代的组件化封装类似? 只不过面临的情况就是多体系React、Vue2、angularjs、Vue3、html、强交互、框架融合、样式隔离等问题。
- 服务:Dobbo、Eureka、nacos等,当然要说好用和稳定还是nacos相对好一些,nginx按理说更好用,但是外置的,界面配置、链路追踪、内部组件约定等满足不了,不过又有新问题,框架太多,建设阶段不同,重构收益小,又有新问题,higress 可以做一下研究。
回到问题本身,要实现多服务的融合“前端”+“后端”=应用,要实现应用的融合集成,前后端的配合必不可少,服务端的整合途径很多,方法也很多,此处先暂时不展开讲,说说前端。
- 假如有100个系统,要集成整合,UI的风格调整升级,微服务集成改造,少不了,如果是企业整合,改造和要求=钱,中间的技术成本、沟通成本、时间成本会比较巨大,这种方案基本上要求不同公司的认知水准和你在一个平面上,同时要求每个系统的风格一致。
- 系统是人为划定的边界,一个员工完成一个完整的业务,往往可能会穿插好几个系统,不停的切换系统,因此功能级整合诉求也存在。
- 重复建设问题,比如同一个功能项的重复建设问题,局部的差异导致重新开发,这是功能物料化、工程化的一项诉求。
- 用户个性化诉求,常见如个人工作台问题,几乎不具备可移植性,不同岗位看到不同的统计面板和功能信息,多到10几个,少到几个不等,统计和功能链接的集中堆放造成的问题,造成反复和难以定制。 以上的问题,除了堆人还是堆人,甚至有些针对第三方的应用基本上已经超脱了软件本身。
思路
集成的手段和弊端都很明显,我的思路是增加一条软途径,解决frame和微前端共存问题,分离应用链接和统计看板、同时系统的菜单导航收归自己,能一定程度上保证风格统一。
itab以及win11web风格的集成风格给了我一些思路,本质上操作系统风格在很早之前就有人在用,但是对组、链接、系统应用、通知等的内容思考的并不细致。
系统APP设置,包含有菜单目录权限设置,外置的框子可以在本侧管理,同时系统应用包含链接访问及微应用访问,两种不同的场景处置,以适应不同的集成方式。
链接的方式只需要链接地址和应用名即可。
以下React、Vue相关的相关仿win11界面风格均有,感兴趣的可以关注一下这两个,方便改造和使用
总结
相关的内容和技术思路基本已快完成,此项作为一个片面的技术总结,算是老瓶装新酒以做延展,实施起来相对1~2个人就能进行实施和开发,相关的适应场景也有一些延展性考量,比如操作系统风格不适应的话可以做多种模式,比如导航模式及特殊定制化模式,基本上结构数据划定之后,这些风格的变更反倒无伤大雅了,我尽量写了一些,可能还是有些细节没有阐述到,如果有相关疑或者不对的地方请指导。