从2000年微软启动.NET战略时,我还是一位大学生,当年著名的黑客Miguel de Icaza , Miguel 为了寻找GNOME项目开发框架经过充分的调研启动了一个志存高远的项目:Mono,一个Microsoft .NET Framework的自由GNU/Linux实现,我在国外的Linux论坛上 循着Miguel的指引踏上了.net开发之路, 我开始接触.NET Framework的时候还是beta阶段,2002年2月13日微软发布了.NET 1.0 , 我也毕业工作半年时间,开始使用ASP.NET 1.0开发项目, 今天我已经伴随.NET 发展20年,在此.NET 20年之际有感而发写下这些感想。

在这20年间发生了巨大的变化,微软一直能够与时俱进,2000年的市值第二,2022年照样排名第二,这期间微软也是经历了起起伏伏,作为微软最重要的一个开发者平台产品一样经历了起伏,就像微软的股票一样:

这种图也反应了.NET的命运,从2000年到2014年微软让.NET Framework作为Windows的一部分,微软也站在开源的对立面,最经典的就是Steve Ballmer ,他当初曾将“开源”称作微软知识产权毒瘤。2014年之后微软换了CEO,全面拥抱Linux,.NET Core开源,收购Xamarin,构建起了全新的生态,微软的重心转移到了云,微软算是抓住了云计算时代,2017年微软市值已经增长到了5000亿美金,2022年已经是2.3万亿美金。从2014年开始的演变,支持多平台,并提供给各种操作系统,如Linux,Mac,iOS和Android等。 它涵盖广泛的应用程序,从桌面、Web 应用程序、云、移动、游戏、IoT 到 AI。

Windows 这个操作系统, 主要是以桌面为中心的用途, 从某种意义上说, 是为了提高特定环境下的开发效率而开始的,在.NET第 20 年终于达到了"所有应用的统一平台"的高度。  虽然MAUI(不是GA)存在一些滞后,今年第二季度也会GA,随着.NET 6的发布,One.NET 愿景已经实现。

其实在 NET Framework发布之前,微软从 COM 时代起就一直梦想着多平台。 微软可以算是一家坚韧不拔的公司, 经过20年的不懈努力,反复试验和试错,这其中也有不少是错误的,甚至现在可以感受到社会上的很多的软黑曾经是软粉,也许包容不下微软的坚韧不拔。 经过各种反思和20年的时光, 现在最重要的是开发者, 以开放为目标, 经过深思熟虑,回归服务好开发者。

.NET Framework、. NET Core 和 Xamarin 的统一,.NET 6完成了统一 .NET愿景,统一了 SDK、类库和工具链,这些工具链以前是不同的,支持跨平台本机和 Web UI。 愿景还包括云原生,Microsoft 计划为所有现代工作负载提供最佳解决方案。.NET 为所有开发人员提供了更多的选择。开发者使用.NET 上的工具和平台,无论他们选择什么,都很容易实现他们想要的。.NET 6 统一了类库和 SDK。 除了发布新的 C# 10 和 F#6 外,它还支持 Apple M1 处理器。 此外, 与 NET 5 不同,它还提供长期支持 (LTS),提供三年支持。

NET在每次升级时,性能都会成为焦点。比如 NET 6的 ASP.NET Core 网络应用程序比Node.js快10倍, gRpc 的.NET实现是性能最好的,超过了C++的实现。在 .NET 6 中,还专注于加快 Web 应用程序性能,降低资源的占用,换句话说就是对云原生的投资。

现在.NET 也是 OSS,并且更新像任何其他 OSS 一样频繁发布。 然而,在实际操作中,了解版本升级周期更容易使用,因此时间表变得清晰, 作为一家企业公司,如果.NET 的未来计划被披露,那么就可以放心地投资.NET技术。从使用长期支持版本的同一版本的想法出发,很容易转向敏捷流程和思维方式,这些流程和思维将尽可能短的周期更新到新版本,而从安全应用程序开发的角度来看,现在最需要考虑的就是解决漏洞。

开源社区也有很多缺陷是因为工程运作上的问题,微软具有商业公司血统的管理科学更多融合到.NET 开源项目中去, 将来 开源、商业、学术将结合得更加完美。

.NET 程序员的现状是:"在被迫开发各种应用的情况下,我们必须选择针对性工具和框架,当前系统正在向云转移,基础设施和服务也在发生变化,开发现场变得越来越复杂。. NET 开发人员 可以使用称为宇宙第一的 Visual Studio 集成开发环境,可在各种目标上部署您喜爱的应用,从而保持高工作效率。

NET 6 还改进了对 "ASP.NET Core Blazor"的支持,以方便 C# 开发人员进行 Web 前端开发。Web 应用程序开发在服务器端和前端使用不同的语言和框架。 前端 Web UI 基于基本的 JavaScript,通常使用框架(如Angular、React 和 Vue)进行开发。 ASP.NET Core Blazor 的职责是使能够以 C# 等语言开发前端,而无需了解 JavaScript 框架 。

ASP.NET Core Blazor以大多数现代网络浏览器支持的WebAssembly 为技术基础。 因此,在 C# 中编写的代码以本机性能作为 WebAssembly 运行。 根据创建方法,您可以使其脱机运行,也可以将其作为 PWA(主动 Web 应用)安装在计算机上,并像本机应用程序一样运行。 这非常像以前的 Silverlight 或 Flash 那样在插件上运行,不一样的地方是Blazor Wasm使用 Web 标准 WebAssembly。

ASP.NET Core Blazor可以将 DLL 下载到 Web 浏览器,并在 WebAssembly上运行。 由于它完全在客户端运行,因此无需服务器组件即可脱机运行,但下载大小较大。 相反,它提供了一种在 Blazor 服务器上运行程序并使用称为 SignalR 的技术进行渲染的方法。 这需要持久连接,UI 延迟高,但启动速度快,并且具有在较旧的 Web 浏览器和瘦客户端上可用的优点。

最后号召大家一起来参与.NET 20周年庆活动,可以使用下列模板制作一个微信视频,发到自己的视频号里,加入活动“ dotnet20周年”:

你好,我是xxx , 我是 xxxx年开始接触.NET的,我的第一个项目是xxxx , 因为xxxx 原因我选择了.NET ,新一代的.NET 我最喜欢它的XXX功能,希望.NET 在中国有Xxx的发展!.NET 20周年生日快乐 。

相关参考:

.NET 20周年软件趋势随想的更多相关文章

  1. Visual Studio 20周年软件趋势随想

    从2002年开始,.net让开发人员能快速构建和部署应用程序,便捷的开发windows和web服务器应用,同时著名的hacker Miguel de Icaza ,Miguel 为了GNOME项目启动 ...

  2. Visual Studio 20周年,我和VS不得不说的故事(内含福利)

    Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...

  3. Visual Studio 20周年,我和VS不得不说的故事

    Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...

  4. 开源编解码项目FFmpeg迎来20周年生日 凭一己之力养活全球无数播放器!

    近日,开源编解码库项目FFmpeg迎来20周年生日. 2000.12.20-2020.12.20 可能很多人对于FFmpeg不是特别了解,那么以下几个名字是否大家或多或少都用过呢? 暴风影音.PotP ...

  5. Jetty 9.3庆祝20周年生日快乐,并添加HTTP/2支持

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/Building-Distributed-Systems 今年6月12日 ...

  6. XML 标准诞生 20 周年:这个世界,它无处不在

    可扩展标记语言(XML)于 1998 年 2 月 10 日成为 W3C 的推荐标准.昨天,2018 年 2 月 10 日恰好是 W3C 推出的 XML 标准发布 20 周年纪念日.可点此查看原始的新闻 ...

  7. .NET 诞生已20周年,您的 .NET 技能是否还停留在2010 年?

    20年来,我们见证了超过上千万.NET 开发员,当前有600万.NET 开发者正在使用.NET技术构建各类解决方案.今天,IT市场对.NET 开发人员的需求达到了前所未有的程度,特别是在中国,各大公司 ...

  8. 从Visual Studio看微软20年技术变迁

    前言 这个世界从来都不缺变革,从工业革命到晶体管和集成电路,从生活电器到物联网,从简陋人机到精致体验,我们在享受技术带来的便捷的同时,也在为复杂设计而带来的挑战和生产力下降而痛并快乐着.而迫切期盼的, ...

  9. 软件产品案例分析--K米

    软件产品案例分析--K米 第一部分 调研,评测 评测 个人第一次上手体验 使用的第一款点歌软件,以为就是个遥控而已,使用后发现功能还挺多,能点挺久.觉得很方便,不用挤成一堆点歌了.K米的脸蛋(UI)好 ...

随机推荐

  1. 【剑指Offer】滑动窗口的最大值 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 暴力求解 单调递减队列 日期 题目地址:https://www ...

  2. KMM

    目录 概 主要内容 Huang J., Smola A., Gretton A., Borgwardt K. & Scholkopf B. Correcting Sample Selectio ...

  3. What Makes for Good Views for Contrastive Learning

    目录 概 前 InfoMin Sweet Spot 空间距离 Color Spaces Frequency Separation 构建 novel views 无监督 半监督 Tian Y., Sun ...

  4. Entropy Search for Information-Efficient Global Optimization

    目录 概 主要内容 的估计 的估计 Hennig P, Schuler C J. Entropy search for information-efficient global optimizatio ...

  5. 市场上十块钱买一个随身WiFi使用技术手段,插卡流量不限速不限量?

    全部章节 >>>> 文章目录 一.前言 二.进入安卓界面 1.进入网页控制台 2.先开启adb 3.CMD连接设备 4.对界面进行控制 三.刷入clnc脚本实现免流 1.ADB ...

  6. SpringCloud使用汇总Config

    1.Config Server对外提供的资源格式 配置中心的HTTP服务有5种资源格式: /{application}/{profile}[/{label}] /{application}-{prof ...

  7. Ranger-Kylin插件安装

    Ranger-Kylin插件安装, 从Ranger1.1.0版本开始支持Ranger Kylin插件, 从Kylin2.3.0版本开始支持Ranger Kylin插件的权限控制. 1.获取安装包 sc ...

  8. C# .net 环境下使用rabbitmq消息队列

    消息队列的地位越来越重要,几乎是面试的必问问题了,不会使用几种消息队列都显得尴尬,正好本文使用C#来带你认识rabbitmq消息队列 首先,我们要安装rabbitmq,当然,如果有现成的,也可以使用, ...

  9. 『无为则无心』Python函数 — 31、命名空间(namespace)

    目录 1.什么是命名空间 2.三种命名空间 3.命名空间查找顺序 4.命名空间的生命周期 5.如何获取当前的命名空间 1.什么是命名空间 命名空间指的是变量存储的位置,每一个变量都需要存储到指定的命名 ...

  10. Java的jar包构建成docker镜像并运行

    结构如下 把jar和Dockerfile放到一个文件,不在一个文件下会报错文件找不到 创建一个构建文件 buildimage.sh vi /home/hanby/buildimage.sh echo ...