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

有 .NET 的大佬来科普一下吗

  •  
  •   MakHoCheung · 2021-11-09 20:20:04 +08:00 · 7902 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚好 .NET 6 发布大概看了下发布的东西,有大佬可以指教下吗

    1. 现在写 Windows desktop 应用最佳方式是什么呢,WinUI3 、MAUI 和 UWP ?
    2. 写后端最新用的是啥?我之前了解了下 ASP ?
    50 条回复    2022-05-15 19:08:21 +08:00
    learnshare
        1
    learnshare  
       2021-11-09 20:36:38 +08:00
    桌面端 WinUI 是最新最好的吧,但一般都是 Electron 了,开发快
    jlkm2010
        2
    jlkm2010  
       2021-11-09 20:59:04 +08:00
    compose for desktop 看起来也挺有意思
    h82258652
        3
    h82258652  
       2021-11-09 21:14:51 +08:00   ❤️ 1
    1 、没有最佳,看你业务需求和团队,Electron 、Qt 都行。你说的这三个,UWP 已死,官方都推荐迁移到 WinUI 。MAUI 是 Xamarin 的进化版,没有跨平台需求用不上。
    2 、asp.net core 。不用了解 ASP ,就像 Java 和 JavaScript 一样。
    ysc3839
        4
    ysc3839  
       2021-11-09 21:20:35 +08:00 via Android
    1. 看应用内容、需求选 GUI 框架,没有最好的选择。另外就算是用 WinUI 我个人也会选 C++。
    2. 我会选择 Node.js 。
    makelove
        5
    makelove  
       2021-11-09 21:47:09 +08:00
    JavaScript 一把梭,前端 Electron + 后端 NodeJS

    只有一个缺点是 electron 稍肥,但可以换系统 WebView 就瘦

    不建议用 .net ,社区太小了没人用什么都要自己搞
    INCerry
        6
    INCerry  
       2021-11-09 22:10:50 +08:00   ❤️ 5
    1. 现在写桌面端主要看你有没有跨平台的需求,如果没有,那么就用 WinUI ,在 windows 平台上最好的选择。如果需要跨平台那么 MAUI 、Avalonia 、Uno platform 都可以选择,比其它语言某些框架内存占用更低,性能也更好。但是讲真,现在工厂里面还是会用 winfrom 或者 wpf ,毕竟方便快捷。

    2.后端使用 aspnetcore ,性能吊打其它语言一票的框架,另外那些黑.NET 和 C#的人,大可不必

    https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=plaintext
    https://benchmarksgame-team.pages.debian.net/benchmarksgame/
    longkas239
        7
    longkas239  
       2021-11-10 01:45:01 +08:00
    1 ) 用.net 写桌面就别看别人推荐的什么 electron ,用微软的 webview2 ,嵌套在 wpf 或者 winforms 里面,webview2 现在系统都是自带的,根本不需要像 electron 一样带一个几十 m 的包。
    但是有缺点,.net 本身系统可不是自带的(系统自带的是.net framework 4.x ),.net 运行时安装方式可以选择共享方式,也就是应用程序不带运行时,也可以选择自包含运行时打包在一起。 两种方式都有缺点,不管你写桌面多么顺手,如果想做到用户安装体验好,安装包容量小,到打包发布这一环节绝对头疼。

    2 )后端就根本不会考虑.net 了,用 java ,库是最多的,写什么都是有需求就立马调库写实现。

    所以我才说为什么.net 6 是巧克力味的屎
    Chad0000
        8
    Chad0000  
       2021-11-10 02:37:01 +08:00 via iPhone
    @longkas239 Java 什么都有?有 entity framework 或者能匹敌的嘛?
    hingbong
        9
    hingbong  
       2021-11-10 07:36:40 +08:00 via Android
    @Chad0000 能不能匹敌不知道,反正 jooq 用得挺爽的
    Chad0000
        10
    Chad0000  
       2021-11-10 07:47:50 +08:00
    @hingbong #9 可参照这个帖子 /t/727939 ,了解一下 EF 和 Linq 的强大
    hingbong
        11
    hingbong  
       2021-11-10 07:57:18 +08:00 via Android
    @Chad0000 我看了一下,好像框架上没什么,主要是语法限制了?其实我主要是 kotlin 后端,不过在后端领域上,我默认把 kotlin 算进 Java 里面了,Java 的语法是真的难受
    Chad0000
        12
    Chad0000  
       2021-11-10 08:13:53 +08:00
    @hingbong #11 Entity Framework 的产生依赖于 C#语言不断添加的特性:委托、泛型、扩展方法、Lambda 表达式、Linq 等等。我也只是使用而已,更深入地了解需要看其他人写的文章。
    zjsxwc
        13
    zjsxwc  
       2021-11-10 08:30:24 +08:00 via Android
    @Chad0000
    java 一般都是套 mybatis 一把梭,
    c#的 linq 类似于前端的 react ,而 mybatis 类似于前端的 vue ,也没见 react 压倒性的侵占 vue 的市场。
    ragnaroks
        14
    ragnaroks  
       2021-11-10 08:46:25 +08:00
    只说当前

    1:还是 WPF 占据绝对统治地位
    2:传统 aspnet core ,服务端渲染 blazor ,不需要
    yolee599
        15
    yolee599  
       2021-11-10 08:50:01 +08:00 via Android
    推荐 Electron 的都是主业是前端开发吧?用 Electron 开发的桌面软件非常吃配置,而且界面时不时卡顿一下,卡顿的时候整个界面感觉要崩了一样,错位了,过了一会又恢复正常了,用起来总是让人焦虑
    rioshikelong121
        16
    rioshikelong121  
       2021-11-10 08:52:46 +08:00
    @zjsxwc linq 为什么像前端的 react 呢。。真诚发问,
    zjsxwc
        17
    zjsxwc  
       2021-11-10 08:55:27 +08:00
    @rioshikelong121
    你对比下
    jsx 与 linq
    vue template 与 xml
    wangxn
        18
    wangxn  
       2021-11-10 09:00:25 +08:00 via Android
    节能减排,助力碳中和,慎用 Electron
    ly841000
        19
    ly841000  
       2021-11-10 09:01:12 +08:00
    @yolee599 一群 web 把安卓祸害得配置要求比 pc 还高,现在又要来祸害了
    ly841000
        20
    ly841000  
       2021-11-10 09:02:53 +08:00
    WinUI 和 UWP 区别不大,只是运行时一个系统自带,一个要求自带
    alexkkaa
        21
    alexkkaa  
       2021-11-10 09:05:47 +08:00 via Android   ❤️ 3
    说实话 现在些桌面要性能 qt 要开放速度用 electron wpf 及其衍生品 没有任何优势

    后台的 asp.net core 就行 说生态差的 你是认真的吗 我只遇到过有的库 java 没有 dotnet 有
    darknoll
        22
    darknoll  
       2021-11-10 09:16:41 +08:00
    不要用微软的东西
    quan01994
        23
    quan01994  
       2021-11-10 09:44:33 +08:00
    可以用 WebView2 ,只要你装了 eDGE WEBVIEW2 RUNTIME .还是很好用的。
    ligiggy
        24
    ligiggy  
       2021-11-10 10:30:28 +08:00   ❤️ 1
    咱评论的时候,能不能陈述“事实”啊,上来就一顿结论的,看起来很懂似的,实际上都是瞎扯淡。
    MakHoCheung
        25
    MakHoCheung  
    OP
       2021-11-10 10:33:58 +08:00
    @longkas239 系统不带 .NET? 应用要跟 Java 一样要自带 JRE ?为什么微软不把运行时绑定到系统呀。
    yanjinhua
        26
    yanjinhua  
       2021-11-10 10:36:00 +08:00
    ysc3839
        27
    ysc3839  
       2021-11-10 10:38:52 +08:00
    @MakHoCheung Windows 带 .NET Framework ,不过不同系统带的版本不一样。Win7 好像是 3.5 ,Win8-Win10 是 4.x 。
    .NET Core 不自带,需要额外安装,或者打包成一个可执行文件。
    MakHoCheung
        28
    MakHoCheung  
    OP
       2021-11-10 10:51:55 +08:00
    @ysc3839 这 .NET Core 不就跟 JVM 一样了吗。Swing 或者 JavaFX 应用都要自包含运行时感觉很大(虽然有了 JPMS 小了很多),我一直以为这方面 .NET 是优势,万万没想到 .NET 也要自带运行时,这样优势全没了呀(语法方面有 Kotlin )
    qaz168000
        29
    qaz168000  
       2021-11-10 11:15:26 +08:00
    1. WinUI 或者 winform,wpf 都行
    2. .net6 就行了,asp 不用了解

    如果不局限.net
    1. qt
    2. php
    Rwing
        30
    Rwing  
       2021-11-10 12:18:20 +08:00   ❤️ 1
    说.net 生态差的都是人云亦云没有自己体验过的。
    生态差的语言能活到现在吗?写啥啥没有?那能活吗?
    肯定都是有需求就立马调库实现啊……
    0o0o0o0
        31
    0o0o0o0  
       2021-11-10 12:37:01 +08:00
    1.原始开发使用 WinUI 或者 WPF ,UWP 已经凉了,MAUI 刚发布一堆 bug ,只建议尝鲜,qt 也还行看需求,electron 、webview2 也不错就是没有原生的流畅,其实还有 flutter 现在也支持 win 桌面端了。
    2.后端使用 asp.net core ,但是根据模型可以分为很多,比如 webfrom mvc webapi ,还有新的 blazor(包括 wasm 和 server)。

    @MakHoCheung
    不是必须,.net core (包括 .net5 6 )之后发布应用有两种方法,一种是打包运行时,直接使用即可,一种是在系统中安装运行时,那么打包时不需要打包运行时。不过 windows 发布版本(包括 windows11 )只会包含 .net framework ,而 .net core 之后的版本将会以系统更新的方式发布,或者用户自行安装。

    至于为什么随系统发布,因为 .net core 之后好多版本不是向后兼容的,也就是说比如.netcore3 无法使用.net5 运行时,那么就需要安装所有的运行时,为什么不兼容呢,官方说是如果兼容就会回到.net framework 时代为了兼容牺牲而无法进步。
    shuimugan
        32
    shuimugan  
       2021-11-10 12:45:05 +08:00
    @MakHoCheung .net 跑官方 web api 模板项目,编译成单文件,压缩后也就 17MB ,应该不算大了。
    0o0o0o0
        33
    0o0o0o0  
       2021-11-10 13:18:54 +08:00
    @0o0o0o0 更正最后一段开头 “至于为什么不随系统发布”
    sigl0p
        34
    sigl0p  
       2021-11-10 14:48:17 +08:00
    WinUI3 之前好像不支持编译出 exe ,只能以 msix 打包发布,想做 portable 版就不行,不知道现在怎么样了。
    chinvo
        35
    chinvo  
       2021-11-10 15:02:11 +08:00 via iPhone
    @MakHoCheung #28 不一样. 应用可以选自己打包所需组件进去. 也可以不打包, 用户运行时 Windows 会自动检查系统是否有, 没有会自动安装.
    ian19znj
        36
    ian19znj  
       2021-11-10 15:05:47 +08:00
    WinUI 只能跑在 Win10/11 上, 但很多 windows 用户还停留在 Win7, 所以 WPF 是更好的选择.
    dawnh
        37
    dawnh  
       2021-11-10 15:29:15 +08:00
    WinUI3 不是.net 的组件,也就是说这玩意 C#是写不了的。MAUI 中的 Windows 原生 App 其实就是 WinUI3 的一个包装。按道理来说现在应该开始鼓吹用 MAUI 。但尴尬的是 MAUI 现在在.net 6 里面的成熟度不够,这次干脆就留在 Preivew 状态没有 GA 。要等明年第二季度才正式发布。UWP 更是要坑。按我个人观点,现在非要 Desktop UI 的话,干脆就还 WinForm 或者 WPF ,新的这几个贼船暂时不要上。
    后端用 ASP.net Core 6 即可。这次 minimal API 的更新让新人上手无比舒服。
    ysc3839
        38
    ysc3839  
       2021-11-10 16:54:09 +08:00
    @sigl0p 只是之前没有实现,在 roadmap 里面有写 unpackaged 是确定会在 1.0 中支持的。
    liuser666
        39
    liuser666  
       2021-11-10 17:02:28 +08:00
    实话实话,微软每次都会给人希望,然后破灭。希望这次能统一一下。
    sunhelter
        40
    sunhelter  
       2021-11-10 18:05:37 +08:00
    桌面不了解,我网页做的比较多,之前是 WebForm ,现在都前后分离了,后端写 asp.net api

    很多人说.net 已死啦 java 啥都有什么的,主要还是看人,我们小公司.net 和 java 都有,老板还是愿意用.net ,因为我们更稳定

    如果想入坑的话,不要再去看 framework 了,目前.net 6 是最新的 LTS ,上一个 LTS 是.net core 3.1 ,中间的.net 5 可以忽略,差别都不是很大
    TigerGod
        41
    TigerGod  
       2021-11-10 18:09:41 +08:00
    GTim
        42
    GTim  
       2021-11-10 21:12:12 +08:00
    @sunhelter 对,我碰到的 一个公司,前后台都是 webapi, 后台 element UI 前台 VUE
    encro
        43
    encro  
       2021-11-10 22:01:00 +08:00
    看你需要兼容的的目标机器:

    win7 以下:winform
    win7 - win10 sdk 2019:wpf
    win10 sdk 2019+:winui 3


    目前最佳应该还是 wpf
    MonoLogueChi
        44
    MonoLogueChi  
       2021-11-11 01:56:32 +08:00 via Android
    1. 提到的这仨玩意都是半残状态,要么是没开发完成,要么是已经快要被放弃的东西,现在只在 Windows 上用,wpf 挺好的
    2. 后端技术栈主要是看服务类型,.net 下的框架不少,适合 api 服务器的 web api ,适合网页开发的 razor ,还有实时应用 blazor ,还有其他框架,能搞的很多。数据方面的话,我基本都用 efcore 搭配 postgresql ,轻量数据库就直接用 litedb ,顺便吹一下,linq 搭配兰姆达表达式真的爽
    zachlhb
        45
    zachlhb  
       2021-11-11 08:22:36 +08:00 via iPhone
    furion 框架了解下
    forgottencoast
        46
    forgottencoast  
       2021-11-11 09:50:13 +08:00
    @dawnh
    WinUI 3 supports C# (.NET 5) and C++ for desktop apps.
    WinUI 2 supports C# and Visual Basic (.NET Native), and C++ apps.

    https://docs.microsoft.com/en-us/windows/apps/winui/
    dawnh
        47
    dawnh  
       2021-11-12 15:03:55 +08:00
    @forgottencoast 我认为这里的信息很误导,support 是说能用,但没说怎么用。你如果真写过的话就会发现所谓的 support 也不过是 PInvoke 调用 COM 的用法。官方的例子都这么写的: https://docs.microsoft.com/en-us/windows/apps/winui/winui3/desktop-winui3-app-with-basic-interop
    所以还是等 MAUI 来包装吧。
    royorange
        48
    royorange  
       2022-02-16 14:36:04 +08:00
    .net 的话个人偏向跟着 winui3 走 毕竟微软花了大功夫主推
    或者可以考虑谷歌的 flutter ,目前也正式发布了对 windows 的支持。主要 flutter 的社区生态也还不错
    ration
        49
    ration  
       2022-03-27 22:56:21 +08:00
    目前大多数用 wpf
    Aloento
        50
    Aloento  
       2022-05-15 19:08:21 +08:00
    WPF + WinUI3
    .NET ASP Razor
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1038 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:36 · PVG 06:36 · LAX 15:36 · JFK 18:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.