golang gin 与 asp.net 对比

更新日期: 2023-06-10 阅读次数: 2958 字数: 750 分类: Windows

尝试 asp.net 的原因

有三个原因让我想尝试一下 asp.net

  • 听说 Ubuntu 22.04 已经内置 .net 6 运行时
  • asp.net 可以像 golang 一样编译成一个二进制文件直接部署并运行在 linux 系统环境中,即 AOT
  • 技术栈向原生客户端开发靠拢,毕竟要做个人开发者,能直接向应用商店发布产品是最重要的。而 Windows 平台最靠谱的技术栈必然是 .net。再就是做物联网相关的开发,还是绕不过 windows。

asp.net 初体验

没有使用 visual studio 的安装方式,我直接下载了.net6 sdk,并通过命令行新建了 wpf 和 asp.net 项目进行了测试。没想到确实可以在命令行下完成所有操作,第一印象很好。

对比 golang gin 与 asp.net

  • asp.net 内置功能强大,文档详细,省去了自己去找三方包的踩坑时间,对初学者友好。例如内置了 swagger,jwt,orm,i18n 支持。
  • 内置功能强大必然会影响灵活性。我担心现有的 gin 项目如果想切换到 asp.net,得同时创建 razor,web api 不知道是否方便配置,而这些在 gin 中非常灵活;再如,swagger 服务是否能够独立出来,作为一个独立的服务,而不是打包到 api 服务中,影响发布文件的大小。
  • 微软的文档太详细了,连 docker 的使用都包含了。相比之下,gin 的文档就简陋很多,可能默认使用者就是有一定经验的开发者。
  • gin 对后端模板的支持太有限,可能是自身定位就是做后台接口的,模板用起来非常不舒服。远不如 laravel 方便,而 asp.net 的 razor 看起来要强大很多。
  • 对 asp.net 版本升级的担忧。我看 asp 内置了 bootstrap 和远古的 jquery,我担心这些都是未来升级的巨大隐患。当然 laravel 也内置了这些玩意,要想快速上手,内置这些糙快猛的组件是必然。而 gin 的简洁则在升级上毫无困扰。

需要实际项目验证的

  • asp.net 在 Ubuntu server 上的性能,及内存占用如何
  • 三方库是否健全
  • 升级是否麻烦
  • 是否能完全脱离 VS IDE

人间清醒

  • 既然是做服务端,就应该选择性能足够强,且稳定的方案。而这些 golang 是非常有优势的,微软的技术栈是否靠谱,我不是很确定。就像 golang 能实现的功能,php 同样能实现,但是性能差距巨大
  • gin 的灵活性非常好,没有强绑定的功能,扩展起来无拘无束,而大而全的框架不一定合适

.NET 8 AOT

最近又调研了 ASP.NET 8 的 AOT,发现支持还是有限,比如明确说明了暂时并不支持 MVC 和 Blazor,而 Razor 是否支持并没有提及,估计也悬。也就是说如果使用 AOT,那么大部分功能还是无法使用。还是再等一等吧。

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/native-aot?view=aspnetcore-8.0#aspnet-core-and-native-aot-compatibility

tags: dotnet

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式