• MAUI ABP框架迁移总结(1)


    前言

    微软在二周前, 发布了MAUI-6.0.312版本, 微软将这个版本称之为正式版本, 那么既然正式版本发布, 也就意味着可以进行开发接入了, 当然这其中肯定不排除BUG。
    那么这次, 我主要的工作则是把之前的Xamarin.Forms ABP框架完整的移植到MAUI当中。

    迁移工作

    由于Xamarin.Forms当中使用到了好几个第三方以及社区组件, 包含UI组件、Xamarin社区工具包、Xamarin开源跨平台插件(访问图像、媒体资源等)。这些组件在MAUI当中
    是处理无法使用的情况, 考虑到这些, 总结如下:

    • UI组件则暂时使用原生来代替, 因为大部分UI没有特别的需求。
    • Xamarin社区工具包中的一些功能无法使用, 暂时用别的替换, 例如自定义控件部分, SnackBar等。
    • Xamarin开源跨平台插件则考虑在 Essentials中寻找替代方案

    开始迁移工作

    本次主要的目标是将Xamarin当中所有的UI页面、ViewModel、本地服务、网络服务、系统资源 等迁移到MAUI项目当中, 这里则分几步进行。

    • 针对系统资源统一迁移到Resources文件夹当中,包含图像、字体库等资源。
    • UI页面以及ViewModel全部迁移到MAUI项目当中, 移除Xamarin.Forms命名空间, 以及第三方依赖。
    • 本地化服务以及网络服务移植到MAUI项目当中。 例如:平台本地化实现, 通过在Platforms当中单独实现。
    • 启动资源配置以及依赖注入更新到MAUI的模式。

    移植效果图

    经过2天的移植工作,已经将90%的业务功能迁移到MAUI当中, 包含ABP框架当中的功能, 如: 系统授权、多语言切换、用户管理、组织、多租户等。下面是整个迁移的一些效果图。
    关于细节方面, 后面将会讲解MAUI于Xamarin.Forms的差异。

    • 登录页
    • 系统首页
    • 用户管理
    • 审计日志
    • 语言列表
    • 系统设置
    • 关于更多, 后面持续更新....

    部分移植项截图示例

    图像资源统一

    字体库依赖注入

    .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                    fonts.AddFont("Montserrat-Bold.ttf", "Montserrat-Bold");
                    fonts.AddFont("Montserrat-Medium.ttf", "Montserrat-Medium");
                    fonts.AddFont("Montserrat-Regular.ttf", "Montserrat-Regular");
                    fonts.AddFont("Montserrat-SemiBold.ttf", "Montserrat-SemiBold");
                    fonts.AddFont("UIFontIcons.ttf", "FontIcons");
                    fonts.AddFont("iconfont.ttf", "iconfont");
                })
    

    本地化实现

    总结

    MAUI项目的迁移工作, 大体上比较顺利, 尤其是在一些新的特性上, 会大幅度提升开发效率。例如目前已知的

    • 单项目结构
    • 统一的资源管理
    • 启动项配置及依赖注入
    • 统一 Essentials类库至MAUI当中
    • GlobalUsing
    • 简化SDK声明及调用
    • WinUI的原生支持

    在后面的文章中, 则会持续更新Xamarin.Forms迁移MAUI的一些相关问题。

  • 相关阅读:
    日期格式化
    堆栈
    编写自己的C头文件
    线性表(gcc实现)
    排序的稳定性
    git创建和合并分支
    当单选input框改变时触发
    css样式定义
    div块显示在一行
    redis数据结构(一)
  • 原文地址:https://www.cnblogs.com/zh7791/p/16349825.html
Copyright © 2020-2023  润新知