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

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

  •  
  •   MakHoCheung · 275 天前 · 6067 次点击
    这是一个创建于 275 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    不建议用 .net ,社区太小了没人用什么都要自己搞
    INCerry
        6
    INCerry  
       275 天前   ❤️ 4
    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  
       274 天前
    1 ) 用.net 写桌面就别看别人推荐的什么 electron ,用微软的 webview2 ,嵌套在 wpf 或者 winforms 里面,webview2 现在系统都是自带的,根本不需要像 electron 一样带一个几十 m 的包。
    但是有缺点,.net 本身系统可不是自带的(系统自带的是.net framework 4.x ),.net 运行时安装方式可以选择共享方式,也就是应用程序不带运行时,也可以选择自包含运行时打包在一起。 两种方式都有缺点,不管你写桌面多么顺手,如果想做到用户安装体验好,安装包容量小,到打包发布这一环节绝对头疼。

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

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

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

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

    如果不局限.net
    1. qt
    2. php
    Rwing
        30
    Rwing  
       274 天前   ❤️ 1
    说.net 生态差的都是人云亦云没有自己体验过的。
    生态差的语言能活到现在吗?写啥啥没有?那能活吗?
    肯定都是有需求就立马调库实现啊……
    0o0o0o0
        31
    0o0o0o0  
       274 天前
    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  
       274 天前
    @MakHoCheung .net 跑官方 web api 模板项目,编译成单文件,压缩后也就 17MB ,应该不算大了。
    0o0o0o0
        33
    0o0o0o0  
       274 天前
    @0o0o0o0 更正最后一段开头 “至于为什么不随系统发布”
    sigl0p
        34
    sigl0p  
       274 天前
    WinUI3 之前好像不支持编译出 exe ,只能以 msix 打包发布,想做 portable 版就不行,不知道现在怎么样了。
    chinvo
        35
    chinvo  
       274 天前 via iPhone
    @MakHoCheung #28 不一样. 应用可以选自己打包所需组件进去. 也可以不打包, 用户运行时 Windows 会自动检查系统是否有, 没有会自动安装.
    ian19znj
        36
    ian19znj  
       274 天前
    WinUI 只能跑在 Win10/11 上, 但很多 windows 用户还停留在 Win7, 所以 WPF 是更好的选择.
    dawnh
        37
    dawnh  
       274 天前
    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  
       274 天前
    @sigl0p 只是之前没有实现,在 roadmap 里面有写 unpackaged 是确定会在 1.0 中支持的。
    liuser666
        39
    liuser666  
       274 天前
    实话实话,微软每次都会给人希望,然后破灭。希望这次能统一一下。
    sunhelter
        40
    sunhelter  
       274 天前
    桌面不了解,我网页做的比较多,之前是 WebForm ,现在都前后分离了,后端写 asp.net api

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

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

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


    目前最佳应该还是 wpf
    MonoLogueChi
        44
    MonoLogueChi  
       273 天前 via Android
    1. 提到的这仨玩意都是半残状态,要么是没开发完成,要么是已经快要被放弃的东西,现在只在 Windows 上用,wpf 挺好的
    2. 后端技术栈主要是看服务类型,.net 下的框架不少,适合 api 服务器的 web api ,适合网页开发的 razor ,还有实时应用 blazor ,还有其他框架,能搞的很多。数据方面的话,我基本都用 efcore 搭配 postgresql ,轻量数据库就直接用 litedb ,顺便吹一下,linq 搭配兰姆达表达式真的爽
    zachlhb
        45
    zachlhb  
       273 天前 via iPhone
    furion 框架了解下
    forgottencoast
        46
    forgottencoast  
       273 天前
    @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  
       272 天前
    @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  
       176 天前
    .net 的话个人偏向跟着 winui3 走 毕竟微软花了大功夫主推
    或者可以考虑谷歌的 flutter ,目前也正式发布了对 windows 的支持。主要 flutter 的社区生态也还不错
    ration
        49
    ration  
       136 天前
    目前大多数用 wpf
    Aloento
        50
    Aloento  
       88 天前
    WPF + WinUI3
    .NET ASP Razor
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2768 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 14:36 · PVG 22:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.