.net core和.net framework的比较,.NET Standard

这里是官方针对这两个框架给出大方向的区别:

https://docs.microsoft.com/zh-cn/dotnet/standard/choosing-core-framework-server?toc=%2Faspnet%2Fcore%2Ftoc.json&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json&view=aspnetcore-3.1

目前的时间是2020年3月27,二者的区别总结下来是(后续肯定会有变化)

.Net Core:

  1. 跨平台
  2. 微服务场景。一套微服务系统主要是包含两大部分,服务治理部分和子服务部分。服务治理方案有很多,k8s这种就属于。子服务部分,则属于具体的业务实现,比如我们可以把QQ的群功能服务单独做成一个子服务。开发这个子服务,你可以使用java,也可以使用.net或者其他的语言。开发好之后,只要到服务治理中心注册一下,其他的服务就可以调用这个服务了。当然你可以通过.net framework开发一套子服务运行在Windows平台上,然后注册到服务治理中心。但是当下的微服务基本都是基于Docker的,如果要容器化,就需要使用.net core了。当然你也可以把.net framework放到windows版本的docker上,但这样太笨重了,.net core轻型化得多。而且现在很多微服务治理框架可以直接支持.net core,开发起来容易得多,如果是使用.net framework开发子服务,你要做的工作可能会很复杂。
  3. 容器化。上面说了,.net framework不是不能放到容器里,只是它太笨重了,.net core要轻型的多,轻型化,才符合容器的核心思想。官方的原话是:可在 Windows 容器上使用 .NET Framework,但 .NET Core 的模块化和轻型性质使之成为容器的更佳选择
  4. 高性能和可扩展。性能这块.net core比.net framework好得多。比如针对高性能变成.net core里面有Span<T>这个东西,如果你翻看官方文档,你会发现支持的这个的版本并没有.net framework。一个系统可能正在运行数百个微服务。使用.net core,系统运行的服务器/虚拟机 (VM) 数要低得多。 减少服务器/VM 后可节省基础结构和托管成本。在可扩展性上,.net core由于在设计时就考虑了微服务这些高可扩展的东西,因此表现要比.net framework优秀得多。
  5. 多版本。.NET Core 可在同一计算机上并行安装不同版本的 .NET Core 运行时。不过目前.net framework到4.0时也支持了并行版本。但是这个并行主要还是和.net framework3.5并行,不像core的那种几乎所有版本都可以并行

.Net Framework:

  1. 如果你已有的应用程序只是修改不是扩展,建议不要升级到core。Core和Framework在不少细节上还是有差别的,比如Framework支持Action.BeginInvoke在Core里面就不支持。如果你想扩展一些功能,则可以使用Core。
  2. 有些第三方包不支持.net core的,这个时候如果你的项目要用到,你就没发用.net core。针对这一点,官方引入了.net standard。后面我还会说。
  3. 有些技术.net core不支持,3.1版本开始支持Wpf和Winform,但是Winform不可以可视化编辑界面,如果使用Winform,这个时候还是不建议使用Core。Wcf、ASP.NET Web 窗体应用程序这些目前Core都不支持。另外.NET Core 目前支持 Visual Basic 和 F#,但不是所有项目类型都支持的。
  4. 有些平台不支持.net core。不过这只是过渡,后面都会慢慢支持起来的。

以上是大的方向上的二者的比较,实际上在很多细节上二者也会有不少差别,比如我之前提到的Action.BeginInvoke这种。这些细节,需要在实际开发中去慢慢发现。后续针对这块我应该还会更新这个博客。

 

下面说一下.NET Standard较详细的信息可以参考官方文档:https://docs.microsoft.com/zh-cn/dotnet/standard/net-standard

总结下来就是,.Net Standard是一套官方定义的API 规范,就像有时候我们在开发中为了给各个开发人员定义好规范以方便整合特意定义一组接口规范一样。.Net Core和.Net Framework都是实现了这套规范。这样二者就比较容易兼容起来了。.NET Standard 将取代可移植类库 (PCL)。所谓可移植类库,是可以生成为跨平台的类库,比如可以在IOS、Mac等使用。.NET Standard将会取代它是显而易见的,因为它的出现就是为了跨不同的库。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值