【警惕】net和com有什么区别(net后缀的网站)

在 从零开始用C#做产品系列教程索引(.netcore winform) 此前做了一个基于.net core winform系列教程,今天收到一个提问:既然都不能跨平台,那选择.net core的理由是什么呢?

这个问题字不多,但实际可扩展的内容有很多,不是一两句话能概括清楚的。归根结底在于.net core与.net framework能干的事情都太多了,无法一概而论。我用framework时间不算短,从.net framework 1.1开始做项目有十几年的时间了,但对.net core的使用,我是一个新兵,今年下半年才开始接触,并没有做过真正的项目,可能还有些坑没踩过。以下分别从windows桌面应用和Web应用来谈下我的个人观点,供大家参考。

开发windows桌面应用

功能表现

在windows平台下,framework跟.net core能实现的功能基本是一样的。由于二者无法共享类库,所以第三方类库的使用上是有些差别的。由于历史原因,framework的可能选择更多些,.net core的可能更新快些,但随着时间的推移,天平会向.net core倾斜。

至于性能,有人说.net core比framework快很多。这个我没测试过,不过相比其他语言,framework已经挺快了。

开发环境

实际开发中,感觉目前的VS下,用framework要比.net core更稳定。我在用.net core的时候,vs2019经常会卡死,尤其是做界面UI设计时,framework从来没有这种问题。应该还是某些地方的兼容性做得不够好。

程序发布

虽然都是只能在windows平台运行,但发布方式.net core要有所超越。framework必须依赖framework框架,系统如果没安装framework,那发布的程序就无法运行。而.net core可以选择不同的发布形式,可以独立发布即不依赖框架运行,比如我上面提到的教程,编译后独立运行程序打包完20多M,相比Framework动辄上百M,框架比程序大多了,对用户来说实在不大友好。

兼容性

framework2.0、framework4.0可以运行在老一点的机器上,比如xp,但.net core就没办法了运行了。

跨平台

目前winform方式,.net core和framework都没办法跨平台。但其实.net core是可以跨平台的,只是目前微软还没有推出跨平台的UI框架,计划于11月份要发布的MAUI就是解决这个困境的,可以期待一下。有些人不看好,我是比较乐观的,对微软来说,技术从来都不是最大的问题。

跨平台,.net core大概率是可以实现的,现在做的都可以看成是为了跨平台而做的积累,等到时机成熟了,你可以很容易地实现跨平台,而framework注定是无法跨平台的。

web应用

web开发,现在网上基本上都大谈MVC、VUE等等,很少有人再谈webform了,我其实是有不同看法的。在我看来,framework和.net core完全就是两个不同的体系,分别适应两种不同的 *** 。

开发模式

framework是界面、逻辑、数据一体。有人把这个称为噩梦,因为他们认为这样混在一起过于混乱。事实上这种方式对个人开发者,开发效率是非常高的。页面拖放一个控件,后台代码查询,数据就呈现了,感觉不好看就调下css,有动态交互就用ajax jquery,随便做一个页面的话可能几分钟就能看到雏形了,特别适合对界面要求不高、用户交互不多的独立开发者。

.net core是MVC方式,说白了就是前后端分离,前端负责美和用户体验,后端只负责提供提供数据。这种模式天生就是为团队开发而设计的,多人并行作战,缩短项目时间。但是单人开发,就略显臃肿了,本来一个页面就能完成的事,要好几步才能搞出来。

.net core不再支持webform,我觉得对个人开发者是一个损失。但个人开发者从来都不是主流,适应商业才能更好地活下去,微软也一样。

跨平台

.net core在web开发上是可以跨平台的,据说是可以部署在Linux上,只是我没有亲自测试过,不敢断言。framework则完全没办法,只能依赖于windows server的IIS。

不过话说回来,对独立开发者,网站规模不会很大,现在云服务器都是自带授权的,根本没有版权的问题。想节省费用,还是实实在在的考虑如何优化流量吧,这种意义的跨平台对独立开发者实际作用并不大。

总结

对开发Windows桌面应用:

基于原framework框架下已经开发好的项目或产品,没有必要转到.net core再做一遍,因为不会带来实质性的进步;

新的项目建议直接上.net core,做好业务与UI的分离设计,毕竟未来有跨平台可期;

对开发Web应用:

技术比较全面的个人开发者,我还是建议Framework,毕竟开发效率高。

在公司做项目的,那还是老老实实的.net core吧,公司讲究的是团队配合。