V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rwecho
V2EX  ›  程序员

V2ex.MAUI, 一个 C#的 MAUI 客户端,需要你的帮助

  •  3
     
  •   rwecho · 2023-07-20 19:34:46 +08:00 · 3894 次点击
    这是一个创建于 497 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开始

    相信这本是一个不应该存在的项目,因为已经有很多优秀的 app 在之前已经被大家所熟知, 不过由于 dotnet core 8.0 即将发布, dotnet 社区也越来越获取, 借着这股东风, 我希望能把这个项目建立起来. 目前它还是一个粗糙的半成品, 虽然有了几个基本功能但是离能用和好用,还有不少距离. 但是相信随着对 app 知识的了解, 将会把这个 app 打造成一个多平台,好用,易用,v2ex 的 app

    介绍

    这是一个 C# MAUI 项目,里面已经完成的模块有主页,话题列表,节点等基础浏览功能,每个功能都需要认真打磨,但是我想在这个阶段把这个项目和大家分享下,也希望得到你们的帮助。 之前一直想用 c# 开发 app ,尝试过 Xamarin, Flutter ,MAUI 6.0 ,最后都已 react 和小程序来解决了。但是最近 dotnet 8.0 preview 已经发布,里面有很多特性可圈可点,Visual Studio 对 MAUI 的支持也越来越好( BUG 更少了)。所以,在这个节点邀请各位,希望能参与进来,大家一起来给 dotnet core 圈增加一点点热度。

    邀请

    这个项目中,用到了一些优秀的框架,它可以帮助我们把代码写的更简单:

    • Abp: 一个非常优秀的 C# 框架,里面集成了很多基础模块,这个项目的模块注入和本地化等功能都是依赖于它而建立的
    • CommunityToolkit:一个 MAUI 的基础功能开源库,里面很多组件都是非常实用的
    • MVVM: 使用的非常古老的方式来开发,刚开始我想用 MVU 模式,但是看了一些项目之后发现它的写法怪怪的,并且 Comet 库最近不怎么活跃,不知道 MVU 模式还能不能成熟起来

    这里面很多功能很有趣,里面有很多问题需要我们解决和讨论,有些可能需要扒源码,有些需要去问,整个 MAUI 还是比较有吸引力的。目前这个项目还有很多功能需要完成:

    • 只有浏览功能,没有发布和回复功能
    • webview 没有样式
    • reply 里面的 html 没有解析
    • 感谢,打赏金币等功能没有
    • 样子很丑
    • ...

    最后

    写到这,我还在想要不要发布,因为已经有非常多优秀的 V2EX app 在论坛里面,实在不不到一个很好的理由让别人来使用这么一个粗糙的软件,当然它还没有发布你们也用不了。但是最近我看到论坛里面最近多了很多关于 C#的关键字,看来有不少小伙伴喜欢这门语言,那我们就一起搞个事情呗。

    当然不仅仅是 C# 的伙伴们,如果你是 Java 开发,你可以给我们指点一下, 如果你是前端开发,你可以告诉我们怎么搞好界面。如果编程不是你吃饭的家伙,你可以用你专业的眼光告诉我们软件应该怎么开发。当然如果你讨厌 C# 也可以看看这个语言还行不行了

    • 项目地址:V2ex.Maui
    • 微信:cndlY2hvMDA4 如果下面二维码无效了,加我微信,或者把微信留下面我来加你

    33 条回复    2023-07-21 13:46:57 +08:00
    cnbatch
        1
    cnbatch  
       2023-07-20 19:43:22 +08:00   ❤️ 1
    看完介绍,我只有一个疑问:为什么不直接用网页版?
    YsHaNg
        2
    YsHaNg  
       2023-07-20 19:58:01 +08:00
    网页好好的为啥你们都拼了命的开发 app
    Jirajine
        3
    Jirajine  
       2023-07-20 20:02:46 +08:00   ❤️ 1
    别吹 MAUI 了,一个不支持 Linux 但宣传跨平台的谎言产品,比 flutter 差得远,甚至不如 electron 。
    molvqingtai
        4
    molvqingtai  
       2023-07-20 20:10:31 +08:00
    @cnbatch 楼主的意思就是用 C# 生态开发一个练手的客户端应用
    forgottencoast
        5
    forgottencoast  
       2023-07-20 22:13:27 +08:00
    把 Abp 一个 Web 服务端的框架集成进客户端的项目里就觉得怪怪的。
    而且一个客户端程序,基本上它的逻辑处理都交给了服务端处理,用 Abp 整个就是除了增加项目的复杂度没看出来能带来什么益处。
    rwecho
        6
    rwecho  
    OP
       2023-07-20 22:16:50 +08:00
    @forgottencoast
    也可能会有性能上面的损失, Abp 主要用到的是 Autofac 和 Localization.
    forgottencoast
        7
    forgottencoast  
       2023-07-20 22:22:28 +08:00
    @rwecho
    你用的是.Net 8 ,自带的 IOC 容器应付这个级别的项目绰绰有余(甚至我觉得绝大部分项目),根本不需要再引入第三方的了。
    这个项目用 Localization 纯粹就是没事找事干吧[手动狗头]。
    Al0rid4l
        8
    Al0rid4l  
       2023-07-21 00:05:51 +08:00
    看社区的反映 MAUI 坑有点多啊, LZ 开发过程中有没有遇到什么坑呢?

    而且似乎 MS 对 MAUI 的支持也不太行, PC 端社区氛围感觉更看好 Avalonia 一些
    roundgis
        9
    roundgis  
       2023-07-21 01:06:01 +08:00 via Android
    abp 這種框架在此處有什麼用途麼
    angrylid
        10
    angrylid  
       2023-07-21 01:07:43 +08:00   ❤️ 1
    这是学习前端开发御三家:TODO list ,背单词,v2ex
    rwecho
        11
    rwecho  
    OP
       2023-07-21 07:06:48 +08:00
    @forgottencoast 确实有道理
    主要是我非常喜欢 abp 的项目结构. 另外对一些扩展性有很灵活的支持, 例如能很轻易加入 Blob 模块
    看来你也用 Abp 框架, 自带的 IOC 需要在一个地方集中注入, 使用 ITransientDependency 的话, 就可以更灵活. 另外引入了 Autofac 之后, 就可以使用 ILifetime 这个接口, 如果要进行参数实例化,会非常有用.

    当然话说回来, 还真是没事找事
    rwecho
        12
    rwecho  
    OP
       2023-07-21 07:07:50 +08:00
    @angrylid
    是的, 可能这是我们经常用到的 app
    rwecho
        13
    rwecho  
    OP
       2023-07-21 07:20:50 +08:00
    @Al0rid4l 确实坑不少啊, 之前想用 MVU 模式开发, 结果看到社区非常不活跃, 里面的 issue 也很多没有处理. 就没有再坚持了.
    现在列表会跳, 还没找到什么原因, 某种情况下会出现不显示 child 组件.
    还有像这个库 html-agility-pack, 之前一直用, 但是在开发过程中发现一些问题.


    还有这个问题, RefreshView 显示不正常. 现在来看应该是 maui 的问题.


    CollectionView,加载下一页的时候不工作
    rwecho
        14
    rwecho  
    OP
       2023-07-21 07:25:38 +08:00
    @roundgis abp 还是有不少用途的, 我现在写 console 项目也喜欢用它来创建, 你们现在用不用 abp?
    rwecho
        15
    rwecho  
    OP
       2023-07-21 07:31:12 +08:00
    @Al0rid4l 之前我也看好 Avalonia , 那时候还是和 Xamarin 对比, 现在来看 MAUI 进步还是很大的. dotnet 8 对 MAUI 的支持还是不少的. 估计会在 11 月份发布正式版.
    rwecho
        16
    rwecho  
    OP
       2023-07-21 07:32:43 +08:00
    @cnbatch @YsHaNg 哈哈哈

    还有 v2er, 用了好多年了.
    rwecho
        17
    rwecho  
    OP
       2023-07-21 07:34:41 +08:00
    @Jirajine 是的, 我之前也这么认为, 甚至我觉得 MAUI 的天花板就是 Flutter 了, 话说回来, 多条路去罗马不也是个好事嘛
    agdhole
        18
    agdhole  
       2023-07-21 08:25:43 +08:00
    @forgottencoast #7 .net 8 有什么巨大更新么,为什么不推荐 autofac 了
    a33291
        19
    a33291  
       2023-07-21 08:28:43 +08:00   ❤️ 1
    个人感觉支不支持 linux 无所谓,主要是能够良好支持 ios 和 android,win 就好,因为 pc 端至少用个 electron 还可以,但是移动端原生开发又不会,用 cordova 之类(类似 electron)又不够效率.

    不过 maui 的话感觉还需要在发展发展,貌似调用原生组件(比如高德地图的 sdk)还挺麻烦
    a33291
        20
    a33291  
       2023-07-21 08:30:39 +08:00
    @agdhole #18 autofac 是在 bcl 没有自带之前出现的,现在已经自带了一个 ioc(ServiceCollection),基本上已经能够替换或者和 autofac 整合

    另外由于 aot 的引入,所以 bcl 相关的库对 aot 更为友好
    rocky2024
        21
    rocky2024  
       2023-07-21 08:41:04 +08:00
    本科毕业设计就是拿 .NET MAUI 框架来开发安卓软件的,我蛮有兴趣的
    rwecho
        22
    rwecho  
    OP
       2023-07-21 09:08:03 +08:00
    @a33291 #20 是的 AOT 确实有问题。 不过目前可以不考虑这块,因为对于性能来讲是后面优化问题。
    forgottencoast
        23
    forgottencoast  
       2023-07-21 09:18:36 +08:00
    @agdhole
    如#20 @a33291 所言,.NET Core 自带的 ioc 已经足够大部分项目使用了,绝大部分情况下没必要再引入第三方的类库来徒增复杂度。
    tsanie
        24
    tsanie  
       2023-07-21 09:30:37 +08:00   ❤️ 1
    Localization 我觉得可以用 Microsoft.Extensions.Localization 来做
    tsanie
        25
    tsanie  
       2023-07-21 09:32:26 +08:00
    maui 和 avalonia 走的不是一个路子,avalonia 本质上和 flutter 类似,maui 本质上还是渲染成原生组件。
    nikenidage1
        26
    nikenidage1  
       2023-07-21 09:43:30 +08:00
    支持 OP ,MAUI 还没试过,我前两天刚用 avalonia 并且 aot 写了一个跨平台的 UI ,这两天准备试试他的 ios 和 android 编译

    https://www.v2ex.com/t/952603
    用 .Net 写了一个跨平台的桌面端软件,且原生编译,无需运行时,启动快内存少体积小
    mmdsun
        27
    mmdsun  
       2023-07-21 10:05:10 +08:00
    @Jirajine MAUI 要转化成原生的,Linux 没有原生桌面环境,Linux 就交给社区做了。
    chrawsl
        28
    chrawsl  
       2023-07-21 10:36:58 +08:00
    学习一下,正好这两天也在写 MAUI 的 APP
    Radiation
        29
    Radiation  
       2023-07-21 10:44:58 +08:00
    尝试着用 maui 写 app ,感觉里面的问题还是挺多的,.net7 用的
    roundgis
        30
    roundgis  
       2023-07-21 11:42:36 +08:00
    @rwecho 有一個車聯網的後端用 abp 其他的沒有用。
    roundgis
        31
    roundgis  
       2023-07-21 11:44:48 +08:00
    @rwecho maui 是 xamarin forms 2.0 ,和 flutter 不大一樣. flutter 和 avaloniaui 倒是比較類似
    keymao
        32
    keymao  
       2023-07-21 11:51:45 +08:00
    怎么说呢,现在靠 C#吃饭的,要么做游戏开发,要么就是工业软件开发,工业软件开发现在明显更青睐 Winform 啊,再差也是 WPF 。MAUI 这种东西,跨平台不跨平台,要性能也没性能。。 很尴尬的。 这是入行的方向来说。

    至于实用性... 在有 electron flutter 这种已经非常成熟的客户端软件开发路线的现在... 没太大意义。再不济,Qt 也是可以搞上去的,甚至 Python 都行 抱歉,泼了盆凉水。
    kqz901002
        33
    kqz901002  
       2023-07-21 13:46:57 +08:00
    可以尝试 blazor 跨平台?用 bootstrap 控件+analoniaUI/MAUI 启动
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:58 · PVG 11:58 · LAX 19:58 · JFK 22:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.