本文对应的原文来至 c-sharpcorner 的一篇文章,文末有链接。如有错误,还请指正。

前言

你会为你的下一个应用程序选择哪一种开发平台 - .NET Framework 或者 .NET Core?在这篇文章中,让我们比较一下这两个开发平台的特点,看能否得出一个结论。

.NET Framework 的优点

  • 如果你是一位传统的 .NET 开发者,希望快速构建和发布应用,没有时间学习.NET Core,那么 .NET Framework 对你来说是一个不错的选择,.NET Core 可能会有一些学习曲线。

  • 如果你目前主要是维护和更新现有 .NET 应用程序,那么 .NET Framework 是你一个不错的选择。将现有 .NET 程序移植到 .NET Core 上可能还是需要一些工作。

  • 找工作? 您现在可能在.NET Core 中找不到太多工作。

这就是 .NET Framework 的现状。当前版本的.NET Framework 4.8 应该是.NET Framework的最新版本。 将来不会再计划新版本的.NET Framework。

.NET Core 的优点

  • 如果你尝试通过 .NET Core 和 .NET Framework 来构建新的应用程序,那么 .NET Core 是一条应该要走的路。

  • 微软已经宣布了 .NET Core v 3.0 ,这是一个有非常多改进的 .NET Core 版本,如果你想学习和使用里面的新特性,那么.NET Core 是值得尝试的。

  • .NET Core 3.0 目前支持 WPF 和 Windows Forms,.NET Core 3.0 同样也支持在 UWP, WPF 和 Windows Forms 之间进行混合开发。这将使得开发者能够更灵活地将 UWP 中一些更现代化的接口引入到 WPF 和 Windows Forms 中。

  • 如果你正在构建新的应用程序,并且你的公司支持使用 .NET Core,那么 .NET Core 是一个不错的选择,总之 .NET Core 会越来越好的。

  • NET Core 更适合跨平台的需求, .NET Core 的应用程序支持在 Windows, Linux, and macOS 运行。微软广受好评的开源代码编辑器 Visual Studio Code 支持 Linux 和 macOS,同时它也支持更加现代化的编辑需求,如 智能感知[IntelliSense] 和 调试[debugging],大多数其它第三方的编辑器,如 Sublime, Emacs, 和 VI 同样支持 .NET Core。

  • 微服务架构同样在 .NET Core 中适用,它可以和不同平台的服务共同工作。包括通过 .NET Framework, Java, Ruby 等语言开发的。

在容器化大行其道的今天,.NET Core 的模块化、轻量级以及它的灵活性使得它能很容易地部署到容器中,容器可以部署到任何平台,如 云上、Linux 和 Windows 上。 .NET Core 适用于 Docker 和 Azure Kubernetes 服务。

高性能、可缩放的系统

对于 .NET Core 开发而言,性能和可缩放性是两个主要的关注点,根据一些基准测试,.NET Core和ASP.NET Core是性能最佳的Web框架。

.NET Core 的多个版本可以共存, 您可以在同一台计算机上同时部署运行多个版本的应用程序。

.NET 生态

时至今日,让我们再回顾一下 .NET 生态架构图。

正如你看到的那样,.NET 生态有三个主要的高级别组件 - .NET Framework, .NET Core, 和 Xamarin。

  • Xamarin

毋庸置疑,当你想通过 C# 来构建移动应用(IOS,Android 和 Windows Mobile),Xamarin 是你唯一的选择。

  • .NET Framework

支持 Windows 和 Web 应用。现如今,你可以使用 Windows Forms, WPF, 和 UWP 来构建基于 .NET Framework 的 Windows 应用程序,ASP.NET MVC 用于构建基于 .NET Framework 的 Web 应用。

  • .NET Core

是最新的开源跨平台框架,用于构建包括 Windows, Mac 和 Linux 操作系统在内的应用程序。.NET Core 仅支持 UWP和 ASP.NET Core。 UWP用于构建 Windows10 目标Windows和移动应用程序。 ASP.NET Core用于构建基于浏览器的 Web 应用程序。

我该如何选择

如果你今天必须要在 .NET Framework 和 .NET Core 之间做出选择,这有一个原则,请记住,在未来一年左右的时间里,您可能根本不想选择.NET Framework。

到目前为止:

如果你:

  • 没有时间学习新技术;
  • 需要一个稳定舒适的工作环境;
  • 有更近的发布日程表;
  • 已经在为现有应用程序扩展功能;
  • 已经拥有一支具有 .NET 专业知识和为构建生产软件准备就绪的现有团队;
  • 不想处理持续的升级和更改;
  • 使用了 Windows Forms 或 WPF 构建了 Windows 客户端程序;

那么,.NET Framework 会是一个好的选择。

如果你:

  • 希望你的应用程序运行在 Windows, Linux, 和 Mac 操作系统上;
  • 不害怕学习新东西;
  • 不害怕在 DotNetCore 还不成熟的情况下遇到和解决问题;
  • 是一名刚开始学习 .NET 的学生;
  • 喜欢开源;

那么,.NET Core 会是更好的选择。

如下有一张表,希望帮到你:

High-performance and scalable system without UI .NET Core is much faster.
Docker containers support Both, but .NET Core is born to live in a container.
Heavily reply on command line .NET Core has better support.
Cross-platform needs .NET Core
Using Microservices Both, but .NET Core is designed to keep today's needs in mind.
User interface centric Web applications .NET Framework is better now until .NET Core catches up.
Windows client applications using Windows Forms and WPF .NET Framework
Already have a pre-configured environment and systems .NET Framework is better.
Stable version for immediate need to build and deploy .NET Framework has a been around since 2001. .NET Core is just a baby.
Have existing experienced .NET team .NET Core has a learning curve.
Time is not a problem. Experiments are acceptable. No rush to deployment. .NET Core is the future of .NET.

相关参考

.NET Framework VS .NET Core的更多相关文章

  1. .NET Framework和 .Net Core实现不一致的API之 `EmailAddressAttribute`

    .NET Framework和 .Net Core实现不一致的API之 EmailAddressAttribute Intro 现在我们的类库项目大多是 NETStandard2.0 项目,但是 ne ...

  2. 开源且功能强大的C# 扩展方法类库Pure.Ext,包含1000+个拓展方法 (支持.Net Framework和.Net Core)

    先上地址 Github: https://github.com/purestackorg/pure.ext Gitee: https://gitee.com/purestack/pure.ext 扩展 ...

  3. .net core系列之《.net平台历程介绍以及.net framework和.net core对比》

    一..Net平台的背景 1.2010之前 的PC时代的时候,互联网规模还不是特别庞大,以静态编译式语言为代表的JAVA和.Net没什么太大区别,.net以windows自居. 2.2010年以JAVA ...

  4. [转]浅谈 .NET Framework 与 .NET Core 的区别与联系

    本文转自:http://www.cnblogs.com/huchaoheng/p/6295688.html 2017到了,咱们学点啥啊,要想知道学点啥,先弄清.NET Framework 与 .NET ...

  5. 浅谈 .NET Framework 与 .NET Core 的区别与联系

    2017到了,咱们学点啥啊,要想知道学点啥,先弄清.NET Framework 与 .NET Core  这两个概念 .当今 net 生态系统如下: 从上面图中我们可以看到.net  主要分为三个部分 ...

  6. 分别在.NET Framework 与 .NET Core 框架下 编写Windows Service(windows服务程序)

    前言,为什么会分别在两个框架下编写Windows Service,是因为最近在做区块链这块,使用的是NEO(小蚁区块链)的相关技术,NEO使用的是.net core 2.1,业务上需要写两个程序,一个 ...

  7. NET?.NET Framework?.NET Core?

    什么是.NET?什么是.NET Framework?什么是.NET Core? https://www.cnblogs.com/1996V/p/9037603.html 什么是.NET?什么是.NET ...

  8. NET Framework、.NET Core、Xamarin

    认识.NET Core 上篇介绍了.NET 新的生态环境:包括.NET Framework..NET Core.Xamarin三驾马车 其中.NET Framework是基于Windows平台专属的开 ...

  9. .NetCore技术研究-一套代码同时支持.NET Framework和.NET Core

    在.NET Core的迁移过程中,我们将原有的.NET Framework代码迁移到.NET Core.如果线上只有一个小型的应用还好,迁移升级完成后,只需要维护.NET Core这个版本的代码. 但 ...

随机推荐

  1. c#Socket服务器与客户端的开发(2)

    上一篇文章我们使用原生的socket分别实现了服务器和客户端, 本篇文章使用SuperSocket来开发实现服务器, 之前也介绍了SuperSocket是一个轻量级, 跨平台而且可扩展的 .Net/M ...

  2. socketserver实现并发

    socketserver实现并发原理:给每一个前来链接的客户端开启一个线程执行通信.也就是给每一个连接“配备”了一个管家. 下面用一个简单的示例来演示socketserver实现并发(一个服务端,两个 ...

  3. JS 各种宽高

    1.window的各种宽高   outerWidth.innerWidth.outerHeight.innerHeight outerHeight 获取浏览器窗口外部的高度(单位:像素).表示整个浏览 ...

  4. Java异常处理最佳实践及陷阱防范

    前言 不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”.无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时,往往还会导致其他新的问题出现.所以我们 ...

  5. Java-每日编程练习题②(数组练习)

    1.有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 分析思路: 先通过Random类随机创建一个数组,再调用Arrays类中的排序方法sort排好序,然后再开始实现功能. 按原 ...

  6. JS 实现的年月日三级联动

    js文件 SYT="-请选择年份-"; SMT="-请选择月份-"; SDT="-请选择日期-"; BYN=50;//年份范围往前50年 A ...

  7. AI2(App Inventor 2)离线版服务器单机版

    注意:每次退出前导出自己的项目到本地做备份. 单机版特点: 1.同步官方最新版本,没有对java源代码进行修改,仅修改war\login.jsp及\war\WEB-INF\appengine-web. ...

  8. The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "SDSSDFCC" was unable to begin a distributed transaction.

    Question: SQL SERVER 通过Linkserver连接A和B 2台,A对B执行单条的增删改查没有异常(没有配置DTC) 但是开启事务后就会出现报错 Solution: 在A和B上配置D ...

  9. 【IIS】解决IIS无响应假死状态,asp突然无法访问重启后可以使用是什么原因

    在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢. 可以做以下配置:1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响.2.设置应用程序池的回收时间,默 ...

  10. Netty3:分隔符和定长解码器

    回顾TCP粘包/拆包问题解决方案 上文详细说了TCP粘包/拆包问题产生的原因及解决方式,并以LineBasedFrameDecoder为例演示了粘包/拆包问题的实际解决方案,本文再介绍两种粘包/拆包问 ...