.NET 的过去、现在和未来

作为一名使用了十多年.NET 开发平台的开发者来说,多年来笔者鲜少在各类博客媒体推广布道 .NET平台,但也默默地关注着 .NET 平台的发展变化,为每一次新技术的出现欢呼,为近年来 .NET 的沉默感到惋惜,也为开放开源的 .NET Core 的到来感到欣慰。

从 .NET Framework 1.0 发布起到2010年左右,是 .NET 的发展期,大量的企业使用 .NET构建系统,WindowsForm, WebForm成为当时软件的主要表现形式。随着移动互联网的兴起,近年来,.NET 因为不够开放并绑定在Windows平台上(虽然有Mono,但应该没有多少人把它应用于生产环境),导致其不被移动互联网互联网新兴企业所重视。在这样的大环境下,大中专院校和培训机构也鲜少推出.NET 相关课程,广大初级开发者也基本上都是从Java、Python等被大厂看重的语言进入职业生涯。在2012-2018这几年间,.NET 的职场占有率在逐年下降,各个公司的技术栈慢慢地从 .NET 平台转向到Java 平台。使用 .NET 技术栈的公司开始发现招人不好招了,特别是初级程序员更是难招,因为学习.NET 的新人越来越少了,形势倒逼公司需要采取措施,那就是转换开发平台,结果就是 .NET 生态进入了恶性循环。

随着2016年第一个开源开放的 .NET Core 1.0 版本的发布,.NET 也迎来了新的发展机遇。微软不再靠自己一家企业来控制这种优秀的技术,而是成立了一个 .NET基金会,旨在加强和扩大以.NET技术为核心的技术生态系统。随着.NET技术交给了社区由基金会来管理,基于.NET的开源生态已经如星火燎原之势蓬勃开展起来。到目前为止该基金会的参与者已经包括谷歌,红帽等知名互联网公司,众人拾柴火焰高,有了这么多企业的积极参与,.NET技术生态已经迎来了前所未有的战略机遇期。在这三四年来,特别是 v2.1版本发布后,.NET Core 平台已经包含了90%以上原来 .NET Framework 的API,从 .NET Framework 迁移到 .NET Core 已经不再有很大的难度,而且跨平台云原生的.NET Core 的性能和稳定性已经可以完全胜任生产环境使用,同时由于跨平台特性,不再绑定在Windows平台,降低了企业的部署成本。最新的v3.1发布后, .NET Core 更上一层楼,基本覆盖了全部的开发场景,云端、机器学习、移动端、PC客户端等。.NET Core 3成为有史以来最快采用的.NET版本,而仅仅在2019年,Core又获得了100万用户。

展望未来,.NET 5.0 作为下一个版本,将是一个大一统的版本。通过将.NET移动设备应用程序模型(Xamarin)包含在.NET 5中,继续将.NET统一到一个平台中。.NET5将包含ASP.NET Core,Entity Framework Core,WinForms,WPF,Xamarin和ML.NET。整个平台将首次为所有应用程序模型使用统一的BCL(基类库)。拥有比.NET Core和.NET Framework都更高的版本5,这也清楚表明.NET 5是.NET的未来,它是用于构建任何类型的应用程序的单个统一平台。

2019年对于广大 .NET 开发者是不平凡的一年,在微软云技术社区的支持下、在张善友张队等行业翘楚的摇旗呐喊之下,各地的.NET 技术社区如雨后春笋般蓬勃开展起来。笔者作为一名资深的 .NET 开发人员,也必须为.NET 的发展壮大贡献自己的一份力量,于是开通了这个公众号。目的在于将自己多年在 .NET平台的研发、架构设计经验和教训分享给广大 .NET 开发者,互相学习,共同进步,以促进国内.NET 生态环境更进一步。

2020年,让我们共同期待 .NET 生态环境明天会更好!

欢迎关注公众号 "dotnet 新征程"

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

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

相关文章

AVL树(平衡二叉树)讲解,入门篇,适合新手观看

1.1 概念 平衡二叉树就是为了让二叉搜索树的平均查找长度更短,时间复杂度更靠近logN,如果一个二叉搜索树不平衡了就会出现图1情况,完全变成一个数组,时间复杂度也变为了O(N)。 平衡因子:平衡因子就是针对于树中某一结点&#xff…

读源码,对开发者重要吗?

.NET 5.0 Peview 2发布4月2日,微软发布了.NET 5.0 Preview 2,带来功能和性能方面的改进。这一版本包括.NET 5.0.0 Preview 2与.NET SDK 5.0.100 Preview 2。.NET 5是.NET Framework和.NET Core的未来,最终将成为一个统一平台,.NET…

Redis和DB数据一致性解决方案

问题出现原因 并发时候无法保证读写的先后顺序,如果删掉了缓存还没来得及写库,另外一个县城就多来读取,发现缓存为空就去读取数据库并且写入缓存,这时候缓存中就是脏数据如果先写库,在删除缓存前,写库的线…

数据结构堆的时间复杂度(最大堆,最小堆)

创建堆的方式有两种,一种是一边插入结点,一边调用堆的插入方法调整堆,这样的时间复杂度就是 O(NlogN),而第二种方式就把时间复杂度缩减到了O(N),它是采用先把结点插入好了,然后再来调整堆,并不是…

中国速度之二神山建设(3):有力的技术保障,基建世界里的云原生缩影 | IDCF DevOps案例研究...

内容来源:DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队(本文只展示部分PPT及研究成果,全程视频请移步文末)本案例内容贡献者:赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩丰…

Rx2.0后台开发分享

Rxjava2.x 微软的一个函数库,Rx是一个编程模型,模板是提供一致的编程接口,帮助开发者更方便的处理异步数据流,现在Rx已经支持几乎全部的流行编程语言。比较流行的有Rxjava,RxJs,Rx.NET,社区网站…

中国速度之二神山建设(4):全能运维,召之即来,来之即战 | IDCF DevOps案例研究...

内容来源:DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队(本文只展示部分PPT及研究成果,全程视频请移步文末)本案例内容贡献者:赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩丰…

Spring Cloud部分源码分析Eureka,Ribbon,Feign,Zuul

Eureka SpringCloud Eureka使用NetFlix Eureka来实现的,它包括了服务端组件和客户端组件,并且都是用java 编写的。 Eureka服务端就是服务注册中心,Eureka客户端主要处理服务的注册发现,通过注解和参数配置的方式,客户…

C++ class实现邻接表存储的图(完整代码)

代码如下: #include <iostream> #include <queue>using namespace std; const int MaxVertexNum 30; typedef int InfoType; typedef int VertexType;class Node {friend class VNode;friend class ALGraph; private:int adjvertex;InfoType info;Node *next; };…

世界上首个被数学证明安全的OS微内核seL4成立基金会

Linux 基金会正在与澳大利亚国家科学机构 CSIRO 合作&#xff0c;打造 seL4 操作系统微内核生态。近日 Linux 基金会宣布托管 seL4 基金会&#xff0c;该基金会以澳大利亚国家科学机构 CSIRO 的数字机构 Data61 创建的 seL4 操作系统微内核为基础项目。seL4 是一个安全操作系统…

数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现

什么是哈夫曼树 哈夫曼树就是一种最优判定树&#xff0c;举个例子&#xff0c;如下一个判断逻辑 if(s<60) g1; else if(s<70) g2 else if(s<80) g3 else if(s<90) g4 else g5; 分数概率图如下 如果按照代码从上到下顺序构造判定树&#xff0c;那么如下图所示&am…

C++ class实现十字链表存储的图(完整代码)

代码如下: #include <iostream> #include <queue> using namespace std; typedef int InfoType; typedef int VertexType; const int MaxVertexNum 30;class ArcNode {friend class OLGraph;friend class VertexNode; private:int tailvertex, headvertex;ArcNod…

hystrix隔离策略对比

hystrix隔离策略 zuul的隔离实现是基于hystrix实现的&#xff0c;hystrix支持线程池隔离和信号量的隔离 # 信号量隔离&#xff1a; it executes on the calling thread and concurrent requests are limited by the semaphore count --引自官网单每次调用线程&#xff0c;当…

中国速度之二神山建设(1):坚强的领导核心,“小团队大后台”组织结构 | IDCF DevOps案例研究...

内容来源&#xff1a;DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队&#xff08;本文只展示部分PPT及研究成果&#xff0c;全程视频请移步文末&#xff09;本案例内容贡献者&#xff1a;赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩丰…

通过Java编写一个服务器理解动态Web,静态Web

静态Web 说到Servlet自然就要说到Web,Web分为静态Web和动态Web&#xff0c;之前我一直都傻傻分不清两者的区别&#xff0c;直到用JAVA编写了一个服务器后才明白二者的区别&#xff0c;所谓静态Web&#xff0c;实际上就是指&#xff0c;客户端要请求的资源文件&#xff0c;服务器…

Hystrix在网关Zuul使用中遇到问题

Hystrix在网关Zuul使用中遇到问题 Zuul默认隔离策略级别是信号量隔离&#xff0c;默认最大隔离信号量是100 信号量隔离和线程隔离的区别&#xff1a;https://blog.csdn.net/liaojiamin0102/article/details/94394956默认的设置如源码&#xff1a; //在ZuulProperties 类下游…

C++ 实现无向图的最小生成树Prim算法(附完整代码)

实现Prim算法&#xff0c;需设置两个辅助一维数组lowcost和closevertex。 其中lowcost用来保存集合V-U中各顶点与集合U中各顶点构成的边中具有最小权值的边的权值&#xff1b;数组closevertex用来保存依附于该边的在集合U中的顶点。 过程: 假设初始状态时&#xff0c;U{u0}&a…

中国速度之二神山建设(2):完善的项目计划,高效能价值流 | IDCF DevOps案例研究...

内容来源&#xff1a;DevOps案例深度研究第4期 – 火神山雷神山 DevOps实践研究战队&#xff08;本文只展示部分PPT及研究成果&#xff0c;全程视频请移步文末。&#xff09;本案例内容贡献者&#xff1a;赖泽薇、张扬、邓茜芸、韦一、刘德权、候利涛、冯利娟、常相宇、张力、韩…

C++ 实现无向图的最小生成树Kruskal算法(完整代码)

按照Kruskal思想&#xff0c;n个结点的生成树有n-1条边&#xff0c;故反复上述过程&#xff0c;直到选取了n-1条边为止&#xff0c;就构成了一棵最小生成树。 实现Kruskal算法的关键问题是&#xff1a; 当一条边加入T的边集中后&#xff0c;如何判断是否构成回路。 一种解决方…

MySql 内连接,外连接查询方式区别

MySql 内连接&#xff0c;外连接查询方式 CREATE TABLE question_test (q_id int(11) DEFAULT NULL,q_name varchar(10) DEFAULT NULL,q_part varchar(10) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8CREATE TABLE answer_test (a_id int(11) DEFAULT NULL,a_name varch…