.Net Framework 和 .Net Core的区别

.Net Framework 和 .Net Core的区别

1. .net 平台简介

.net 平台主要分为三个部分(.net 5 中据说会大一统,这我抛开.net 5了):.net Framework.net Corexamarin

  • .net Framework : 2002年发布,现在很多公司都在使用,可以开发:

    • window桌面程序:winform、UWP、wpf等

    • web应用程序:Asp.Net webform、Asp.Net MVC

  • .net Core : 2016年6月27号发布,是微软最新退出开源的、跨平台的平台,可以用来创建运行在mac、Linux上的应用程序

  • xamarin : 主要用来构建手机APP,主要使用的语言是C#语言(但是因为使用人数不多,所以可参考的案例较少)

1.1 在.net core 和 .net framework 之间如何选择

.net core.net framework 都可以写web程序,两者有很多共享的组件(ef 库以及其他库都可以在.net framework或.net core上运行),两者之间是可以共享代码的,但两者是存在根本的差异,这需要根据实现的目标进行选择

选择.net core

  • 有跨平台需求

  • 正在面向微服务

  • 正在使用Docker容器

  • 需要高性能和可扩展性的系统

选择.net framework

  • 当前项目使用的是.net framework(建议扩展而不是迁移)

  • 开发的程序中使用到在.net Core中暂不支持的第三方.net 库或者NuGet包

  • 使用到.net Core中暂不支持的技术(例如在.net core 2.x的时候是不支持winfrom的,.net core 3.x已经支持了)

    • WCF服务的实现目前在.net core 无法使用

    • Asp.Net Web窗体应用程序目前也是只可以在.net framework中使用

1.2 在.net core和.net framework中共享库

因为 .net core 是一个新兴的系统生态系统,所以有些之前在 .net framework 中使用的库在 .net core 中是无法使用的,为了尽快弥补这一空缺,Microsoft 引入了.net standard 以提供在微软生态下的公共标准,意思就是你可以创建直接用于 .net core 或 .net framework 的库(甚至包括 xamarin )。只要确保 .net standard 库的 NuGet 包添加到.net 应用中,就可以使用了。

.net standard 可以看作是可移植类库 PCL 的后继者,简化了针对不同平台的业务。在 PCL 基于平台能力的配置中,.net Standard 提供了精心选择的 API 集。

但是 .net Standard 不同的版本适配 .net core 或 .net framework 版本也是不同的,这感觉就像走了DLL地狱,来了 .net Standard 地狱

img

asp.net core 2.x 由 .net Standard 库组成,所以同时支持 .net core 运行和 .net framework 运行

 

文中使用到了其他博客提到的一些内容:

https://www.jianshu.com/p/78c7590674d4

https://www.cnblogs.com/itzhangxp/p/8322364.html

https://blog.csdn.net/weixin_30312557/article/details/95216051

微软官方文档: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-2.2

https://www.cnblogs.com/haogj/p/9220653.html

 

 

posted @ 2020-04-12 14:37  Simian_2018_12_22  阅读(4218)  评论(0编辑  收藏  举报