跨平台方案的东西的话核心是实现的是跨平台运行和多语言协同的核心目的吧

可以实现的有:代码的复用、跨平台执行、多语言调用

简单总结

  • 静态链接库Static Library

    • 编译时将库代码嵌入到可执行文件的一个方案吧.lib/.a

    • 平台相关的,需要根据不同的平台进行分开实现编译实现吧

    • 运行时无依赖、加载速度快、性能最好吧

    • 可执行文件的体积过大吧,升级的话需要进行重新编译实现吧

    • 一般用于小型工具的开发、无频繁的升级需求的模块的开发吧(因为大量的库对进行引入这些静态链接库,如果是长期更新的话就会导致后续的频繁的维护和更新,此时就会导致维护成本过大的问题导致吧)

  • 动态链接库(DLL/.so/.dylib

    • 运行时动态的加载共享代码库(操作系统级的东西吧)

    • 平台相关的,需要进行分平台进行分开编译实现吧

    • 实现代码复用、节省内存、模块化升级

    • 跨平台需要多版本的升级、依赖系统库吧

    • 常用于桌面端应用的开发、服务器程序的插件化和模块化的实现开发吧

  • webAssembly(WASM)

    • 跨平台的字节码标准吧(运行时的JIT编译模型实现吧)

    • 一次编译多平台运行吧(浏览器、NODEJS、独立的runtime)

    • 跨平台的二进制兼容吧,沙箱安全机制吧、接近原生的性能实现吧

    • 需要运行时依赖、调用系统 API 需要宿主桥接

    • web端的一些需要高性能的场景、跨平台应用的开发(web端 + 桌面端吧)

  • 进程间通信(IPC

    • 不同进程间通过协议的交换数据(socket/管道/消息队列)

    • 跨平台(依赖的是操作系统的IPC接口吧)

    • 解耦彻底的、支持的是分布式部署实现吧

    • 性能的开销很大(因为实现的是跨进程的通信吧)、需要手动的数据数据的序列化的实现吧

    • 大型系统的模块拆分的实现吧(微服务的服务拆分的实现、多语言进程之间的协作实现吧)

  • 远程过程调用实现(RPC

    • 跨网络/跨进程的函数调用,一般使用的是 gRPC / thrift

    • 跨平台的实现吧(基于的是网络协议的实现吧)

    • 调用的透明性实现吧(本地的函数一样吧)、支持分布式的实现吧

    • 网络依赖,序列化/反序列化的开销导致吧

    • 跨服务/跨机器的多语言协同的实现吧(微服务架构的实现吧)

  • 脚本绑定实现吧 script binding

    • 跨平台的讷(依赖的是脚本引擎吧)

    • 开发效率机制,脚本端实现灵活的拓展吧

    • 性能开销有的(脚本引擎解析),功能有一定的限制吧

    • 应用插件拓展(游戏脚本、工具脚本吧)

  • 中间件/消息队列

    • 基于消息队列传递的异步协同机制吧(kafka/RabbitMQ)

    • 基于网络的跨平台执行吧

    • 实现解耦异步通信、支持高并发机制吧

    • 系统复杂性的提高吧、延迟增强吧

    • 分布式系统的多语言异步协作吧

  • 容器化的实现

    • 打包应用以及依赖轻量的虚拟化环境吧

    • 一次构建多平台直接运行吧

    • 环境一致性的实现吧、部署的便捷性、隔离性好

    • 虚拟化开销大、依赖容器运行时

    • 跨环境部署、多语言服务实现吧

  • 虚拟机技术吧(VM/JVM/CLR)

    • 字节码解释,编译执行

    • 一次编译多平台运行,但是依赖VM

  • 跨平台框架的使用:flutter QT