这里是官方针对这两个框架给出大方向的区别:
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:
-
跨平台
-
微服务场景。一套微服务系统主要是包含两大部分,服务治理部分和子服务部分。服务治理方案有很多,k8s这种就属于。子服务部分,则属于具体的业务实现,比如我们可以把QQ的群功能服务单独做成一个子服务。开发这个子服务,你可以使用java,也可以使用.net或者其他的语言。开发好之后,只要到服务治理中心注册一下,其他的服务就可以调用这个服务了。当然你可以通过.net framework开发一套子服务运行在Windows平台上,然后注册到服务治理中心。但是当下的微服务基本都是基于Docker的,如果要容器化,就需要使用.net core了。当然你也可以把.net framework放到windows版本的docker上,但这样太笨重了,.net core轻型化得多。而且现在很多微服务治理框架可以直接支持.net core,开发起来容易得多,如果是使用.net framework开发子服务,你要做的工作可能会很复杂。
-
容器化。上面说了,.net framework不是不能放到容器里,只是它太笨重了,.net core要轻型的多,轻型化,才符合容器的核心思想。官方的原话是:可在 Windows 容器上使用 .NET Framework,但 .NET Core 的模块化和轻型性质使之成为容器的更佳选择
-
高性能和可扩展。性能这块.net core比.net framework好得多。比如针对高性能变成.net core里面有Span<T>这个东西,如果你翻看官方文档,你会发现支持的这个的版本并没有.net framework。一个系统可能正在运行数百个微服务。使用.net core,系统运行的服务器/虚拟机 (VM) 数要低得多。 减少服务器/VM 后可节省基础结构和托管成本。在可扩展性上,.net core由于在设计时就考虑了微服务这些高可扩展的东西,因此表现要比.net framework优秀得多。
-
多版本。.NET Core 可在同一计算机上并行安装不同版本的 .NET Core 运行时。不过目前.net framework到4.0时也支持了并行版本。但是这个并行主要还是和.net framework3.5并行,不像core的那种几乎所有版本都可以并行
.Net Framework:
-
如果你已有的应用程序只是修改不是扩展,建议不要升级到core。Core和Framework在不少细节上还是有差别的,比如Framework支持Action.BeginInvoke在Core里面就不支持。如果你想扩展一些功能,则可以使用Core。
-
有些第三方包不支持.net core的,这个时候如果你的项目要用到,你就没发用.net core。针对这一点,官方引入了.net standard。后面我还会说。
-
有些技术.net core不支持,3.1版本开始支持Wpf和Winform,但是Winform不可以可视化编辑界面,如果使用Winform,这个时候还是不建议使用Core。Wcf、ASP.NET Web 窗体应用程序这些目前Core都不支持。另外.NET Core 目前支持 Visual Basic 和 F#,但不是所有项目类型都支持的。
-
有些平台不支持.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将会取代它是显而易见的,因为它的出现就是为了跨不同的库。
这里是官方针对这两个框架给出大方向的区别:https://docs.microsoft.com/zh-cn/dotnet/standard/choosing-core-framework-server?toc=%2Faspnet%2Fcore%2Ftoc.json&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json&view=aspnetco...
.NET
Core
已经发布好几年了,很多
.NET
程序员也一定跟我一样心中一直有以下疑问,
.NET
Core
到底是不是
.NET
的下一个版本?还是说只是
.NET
支持跨平台的一个版本?
作为传统的
.NET
开发者或者说开发的程序都是在WIndows环境下面工作的,有没有必要学习
.NET
Core
?
.NET
Core
和
.NET
Framework
有什么不同...
1. 程序集和CIL:
程序集是由
.NET
语言的编译器接受源代码文件产生的输出文件,通常分为 exe和dll两类,其中exe包含Main入口方法可以双击执行,dll则需要被其他程序集调用执行。
CIL(Common Intermediate Language): 公共中间语言①,需要被编译成二进制机器码之后才会被计算机执行。
.NET
Standard
Library是
.NET
Framework
的基础,也就是说
.NET
Framework
包含了
.NET
Standard
Library中的所有目录。
所以将一个
.NET
Standard
Library项目改成
.NET
Framework
项目是可以的。
但将一个
.NET
Framework
项目改成
.NET
Standard
Library项目那是有...
一、
.Net
平台的背景
1、2010之前 的PC时代的时候,互联网规模还不是特别庞大,以静态编译式语言为代表的JAVA和
.Net
没什么太大区别,
.net
以windows自居。
2、2010年以JAVA为代表的Hadoop大数据兴起后,
.net
无法对接,因为hadoop是工作平台,需要将jar上传到hdfs上由mapreduce执行,(yarn)而不是像(redis,mongodb)直连式开发。...
目前
.NET
Core
3.0 拥有的 API 总数约为
.NET
Framework
API 的 80%,剩下尚未从
.NET
Framework
移植到
.NET
Core
的 API,微软考虑以开源的形式发布。
微软方面表示,通过
.NET
Core
3.0,他们现在已具备轻松移植现代 workload 所需的所有技术,无论是桌面应用、移动应用、控制台应用,网站还是云服务。为此,他们...
https://zhuanlan.zhihu.com/p/60352219
https://blog.csdn
.net
/weixin_39730950/article/details/90767418
https://blog.csdn
.net
/jane007123/article/details/85046915
定义:一套正式的
.NET
API (
.NET
的应用程序编程接口)规范,
.NET
Standard
.NET
Core
和
.NET
Framework
是
.net
standard
在不同平台下的具体实现。
.NET
Framework
:
类库 + 运行时(CLR)
Framework
的体系结构