NET Core迁移前工作

前段时间迁移.NET Core做了大量的试水和评估,今天整理一下分享给大家。大致有以下几个部分:

1. .NET Core的由来

2. 为什么要迁移.NET Core

3. .NET Core3.X主要特性

4. .NET Standard和.NET Core

5. .NET Core Roadmap&版本选择

接下来,我们详细展开说吧。

一、.NET Core的由来

   这个更像是科普的资料,因为团队的小伙伴有半路出家的,对.NET 的光辉历史不是非常了解,所以有必要带着大家看一遍.NETCore的由来:

   说.NET Core,需要先说一下.NET. 当年Java刚刚兴起,如火如荼,微软也非常推崇Java,当时Windows平台的Java虚拟机就是微软按照JVM标准实现的,据说也是当时性能最好的Java虚拟机。但是微软也是有私心的,微软总想搞点Windows平台上的特性,有点想把Java绑定到Windows平台上的味道,另外Sun公司确实有点小心眼,于是Sun公司就跟微软闹掰了,然后微软就推出了 .NET,.NET从出生开始其实就借鉴了Java,然后又一步步在语言特性、窗体开发等方面实现了超越。Java在1.6版本以后发展缓慢,后面Java也在语言特性上借鉴了 .NET。

   .NET虽然一直发展的不错,也有WPF、Unity3D这样具有竞争力框架的出现。但是.NET平台在一些较大的项目,不太受互联网公司的喜爱(虽然京东、当当、携程当年也是.NET技术路线)。但是因为.NET不是开源的框架,也不是可跨平台的框架,那就会带来以下问题:

     成本:选择.NET就要选择Visual Studio,Windows Server,license是不可忽视的成本;

     生态:没有来自于社区的贡献,那.NET没有诞生优秀框架的土壤,技术社区虽然有微软的特殊扶持,但是整体不太理想

     人才:无法吸引一线公司优秀互联网工程师加入,因为他们用Java、Go等,但是.NET Core诞生之后会大为改观,腾讯、网易都有在使用。

    纵使有Mono这么强大的框架,可以让 .NET 跑在Linux上,但是这还不够。毕竟Mono只能发挥.NET部分有限的能力。

    同时,云计算的普及,跨平台需求势不可挡,Linux 作为Server的不二OS,.NET不支持Linux,比较尴尬!

    另外,容器时代已经不可逆转,跟Windows的强依赖,如何上Docker?

    总之,形式所迫,拥抱变化和未来,.NET Core应运而生。

二、为什么要迁移.NET Core

   总结了以下几点,大家可以补充:

  • .NET Core代表着未来.Net的发展方向
  • 产品新特性、重点技术支持微软优先考虑在最新.NET Core版本上支持
  • 更优的代码、更好的性能,社区大家都在贡献、优化代码
  • 跨平台支持,支持部署在Linux,可以降低VM的成本
  • Docker部署支持,更低的成本,更高的资源利用率,未来云原生的核心组成
  • 面向现代互联网应用、微服务架构、和DevOps更好地集成
  • 开源:https://github.com/dotnet/core
  • 更好的生态和社区

三、 .NET Core3.X主要特性

   同时支持Windows和Linux、MacOS,满足不同开发者的需求,对于Web开发提供了ASP.NET Core, 对于常用数据库访问,提供了EF Core,对于机器学习,提供了ML.NET。大家可以根据自己业务的需要,选择合适的技术。

四、 .NET Standard和.NET Core

 先说下事情的起源:

 .NET Framework从2002年起,一直在Release新版本,不支持跨平台

 .NET Core是为了支持跨平台产生的,类似的有Mono、Xamarin

  这样,出现了两套代码、两套类库,对于开发者来说,要同时掌握两套SDK,会产生社区和技术的分裂。

  因此,.NET 要统一类库标准,统一所有的API定义,这就是.NET Standard. 如下图:

  

 .NET Standard的统一:

  .NET Standard定义了.NET平台,统一实现的一组API。实现.Net Standard API的平台都与目标.Net Standard库兼容;

  .NET Framework和.NET Core都是.NET Standard的标准实现。 .NET Standard是二者的交集。

   但是.NET Framework和.NET Core存在其个性化、扩展的类库,需要牺牲兼容性,即:

   假如用.NET Framework的个性化SDK。例如注册表、Windows Service、Winform,这样只能部署在Windows中。

   假如用.NET Core的个性化SDK,部署运行时,与Windows环境下.NET Framework不兼容。

   所以,如果应用程序采用.NET Standard,同时支持.NET Framework和.NET Core,则可以实现两者的兼容。一套代码既支持运行在.NET Framework运行时下,又支持运行在.NET Core运行时下。

   同时.NET Standard的版本对应.NET Core、.NET Framework、Mono、Xamarin等的版本,有个对照表:

   

   这张表非常重要。体现了一个规则:

   假如程序的目标框架Targetframework 使用.NET Standard2.0, 则支持:

   .NET Core 2.0版本的工程可以引用

   .NET 4.6 版本的工程可以引用

    但是低版本的.NET Core和.NET Framework则无法引用。

五 .NET Core Roadmap&版本选择

 先看一下.NET Core最新的Roadmap:

  

 最新的.NET Core 3.1 将2019年11月发布,同时是LTS版本。如果大家现在开始迁移.NET Core,建议选择一个大版本、LTS版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux4.8、环境变量续

个人主页:Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解,那么建议先看完这篇文章:环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…

自动化测试的成本高效果差,那么自动化测试的意义在哪呢?

有人问:自动化测试的成本高效果差,那么自动化测试的意义在哪呢? 我觉得这个问题带有很强的误导性,是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗?当然不是。而且我始终相信,回答问题的最…

COMP4121Advanced Algorithms

COMP4121Advanced Algorithms WeChat:yj4399_ Sina Visitor System

【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

数据结构之二叉树及面试题讲解

💕"从前种种譬如昨日死;从后种种譬如今日生"💕 作者:Mylvzi 文章主要内容:数据结构之二叉树及面试题讲解 一.概念 1.树的定义 树是一种非线性的数据结构,是由n个结点组成的一种非线性集合&…

Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?

面试官:Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同? 开始之前 Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开发的项目&…

交流插座电器漏电断路器的低功耗控制芯片D4140,内置桥式整流器漏电灵敏度可调,采用SOP8和DIP8 的封装形式

D4140 是一种用于交流插座电器漏电断路器的低功耗控制器。这些设备可以检测到接地的危险电流路径,例如设备掉进水中。在发生有害或致命的电击之前,断路器会断开线路。内置有整流桥,齐纳管稳压器,运算放大器,电流基准&a…

论文阅读——Loss odyssey in medical image segmentation

Loss odyssey in medical image segmentation github:https://github.com/JunMa11/SegLossOdyssey 这篇文章回顾了医学图像分割中的20种不同的损失函数,旨在回答:对于医学图像分割任务,我们应该选择哪种损失函数? 首…

倾斜摄影三维模型的根节点合并的优势分析

倾斜摄影三维模型的根节点合并的优势分析 根节点合并是倾斜摄影三维模型处理中的一项重要技术,它具有许多优势,可以显著提升模型数据的处理效率和渲染性能。在本文中,我们将对倾斜摄影三维模型的根节点合并的优势进行详细分析。 1、数据大小…

计算机毕业设计|基于SpringBoot+SSM+MyBatis框架的迷你仿天猫商城购物系统设计与实现

计算机毕业设计|基于SpringBootMyBatis框架的仿天猫商城购物系统设计与实现 迷你仿天猫商城是一个基于SpringBootSSMMyBatis框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品&am…

家用小型洗衣机哪款性价比高?内衣洗衣机品牌推荐

近日,国内著名的电子商务平台公布了“内衣洗衣机产业趋势”的研究报告。该报告指出,由于消费者对生活质量的要求越来越高,内衣洗衣机的行业也有了长足的发展,特别是在今年以来,内衣洗衣机的销售额同比上涨了830%&#…

汽车音响静音检测电路芯片D3703F,6V~16V SOP8封装

D3703F 是一块汽车音响静 音检测电路。用于音 响系统检测在放音或快进/退时进行静音检测,电压范围: 6V~16V,信号检测和静音时间可通过外围电阻 、电容来改变。D3703F采用SOP8的封装形式封装 主要特点: 快进/退时也可进行静音 检测 信号检测…

小黄鸟(HTTPCanary)安装及Android高版本CA证书配置

小黄鸟(HTTPCanary)安装及Android高版本CA证书配置 HTTPCanary及CA证书安装 1.HTTPCanary下载2.导出CA证书3.安装CA证书 1.HTTPCanary下载 从下面链接下载安装HTTPCanary 链接: https://xiao6ming6.lanzouq.com/iQcB902w15pg 密码:4wby 2.导出CA证书 1.…

关于this和构造器的理解

1.类中的this关键字表示当前对象的引用。它可以被用于解决变量名冲突问题,或者在一个方法中调用类的另一个方法。如果在方法中没有明确指定要使用哪个变量,那么编译器就会默认使用this关键字来表示当前对象。 下面是一个输出this关键字的示例代码&#…

信息泄露威胁:日本科技巨头遭网络攻击,超40万条数据悬崖边缘!

11月27日下午,日本最主要通讯应用程序Line的运营商、日本LY公司发布公告称,有攻击者通过附属公司的NAVER Cloud系统访问了其内部服务器,可能泄露了数十万条包含用户、员工和业务合作伙伴在内的数据。 这一数据泄露事件发生在10月9日&#xff…

关于你对 Zookeeper 的理解

看看普通人和高手是如何回答这个问题的? 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

并发编程笔记

1、前言 这篇笔记是我花的20多天跟着⿊⻢的并发编程学习做的笔记,地址是b站 ⿊⻢ 并发编程 ,也是我第⼀次 学习并发 编程,所以如果有很多原理讲不清楚的,知识点不全的,也请多多包涵 中间多数图都是直接截⽼师的笔记…

基于Java SSM框架+Vue实现疫情期间医院门诊网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现疫情期间医院门诊网站演示 摘要 21世纪的到来,国家的方方面面、各行各业都在努力与现代的先进技术接轨,智能科技时代崛起的优势,医院门诊管理系统当然也不能排除在外。疫情期间医院门诊管理系统是以实际运用为开发背…

【JVM系列】Class文件分析

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

终端安全管理软件是监控软件吗

有些人在后台问,终端安全管理软件是监控软件吗? 先回答,是监控软件。 因为它具有监控的功能,在很大程度上,是可以用来当做监控软件来用的。 终端安全管理软件是一种集中管理终端设备的软件工具,可以在企业…