为什么选择ASP.NET Core

什么是.NET

  有一次小飞去面试,面试官上来就问了一个宏观的问题:“你觉得什么是.NET”?小飞的脑子嗡嗡的,支吾了半天,才吐了一些碎片化的词语:“跨平台、开源、微软…”

虽然作为一个.NET人,但是小飞更喜欢编码细节,对理论这一类不是很感兴趣,比如.NET历史枷锁、什么是.NET等。一个源于技术更新发展太快,另外一个原因是小飞觉得技术以实用为主,聊这些虚头巴脑的理论没有什么用。

考官点评了:“你对.NET缺乏基本的了解,作为.NET技术的运用者,对问题缺少刨根问底的思考,我们要招聘的是面向未来,有系统性思维的人。”

面试让小飞很受挫,于是他去找小黑,一个.NET方面的老司机。

“小黑,你在.NET这方面比较资深,到底什么是.NET呢?”

小黑知道小飞比较好学:“小飞,你先不用难过,这次面试反过来也是对自己知识的查缺补漏。”小黑一边安慰,一边回答道:“你可以这么思考,假如你是微软的产品经理,你会如何规划.NET呢?”

小飞摇摇头:“我只是一个菜鸟,初出江湖,哪里有这个高度。”

小黑道:“嗯,没关系,就是一个思考角度罢了。你可以这么思考,微软就像一个主厨,做了一桌满汉全席,上面有八大菜系:有网页,移动,桌面,微服务,游戏,机器学习,云原生,物联网。”

 

“微软不但提供桌子这个平台,而且上面的每道菜系怎么做,用什么材料做,如何打样都提供了周到的说明。更贴心的是,微软对开源社区说:我的满汉全席大家随便吃,随便拿,不要钱,因为我采用的是最宽松的MIT协议。”

 

小飞:“我知道以前很多人对微软帝国有很多偏见,都说微软不开源。”

小黑:“这次微软是真的放下架子,彻底拥抱开源了。”

小飞对大厨的比喻很深刻,不禁念叨:“.NET、满汉全席,八大菜系,各具特色,不要钱。”

小黑看到小飞碎碎念,就帮他做了一个概括:“是的,.NET是一个可构建各种应用(八大菜系)的跨平台的开源的开发平台。”

小黑继续展开解释道:“构建各种应用,说明.NET具有多面手的能力,好比班上的三好生,虽然在某个科目上无法做到最优秀,但是每一门功课几乎都没有短板。也就是说学好了.NET一种技术平台就可以应对各种商业场景的开发,这对中小团队是非常友好的。”

 

小飞不解的问:“为什么说对小团队非常友好?”

小黑:“你想,如果你用Java做Web开发,后续做桌面开发怎么办?Java在桌面端开发是没有优势的,如果你用Dart开发移动端,后续想做物联网开发怎么办?这对中小企业是很不友好的,因为他们不可能像大企业那样,为了极致的选型,可以养一批不同技术栈的人员。”

小飞琢磨了一下,好像是这么回事。

.NET发展和规划

小飞对.NET的发展不是很感兴趣,但是从事.NET技术开发又撇不开它,所以索性就去请教了前辈小黑。

小黑给了他一张版本演化图:

 “你看到什么规律了没?”

小黑认真的回复到:“从以下.NET Core发展历史,我们可以看到它的发展的进度非常快,微软会每隔一年发布一个版本,有时候还不止一个,注意看,版本号为奇数的是普通版本,版本号为偶数的为长期支持版本(LTS),我们要关注LTS版本,一般长期支持时间为三年,所以我们选型版本的时候尽量以LTS版本为准”。

“原来如此,还是有一点讲究在里面啊。”

在小飞感叹的时候,小黑继续叨叨:“在未来.NET只有一个平台,就是现在.NET Core演化过去的.NET,而不会有.NET Framework的版本,.NET Core会在.NET 5.0这个版本上对新旧版本进行统一,所以未来从.NET 5.0到7.0都会叫.NET而不是叫.NET Core,而且统一名称后,微软会定义在每年的11月份进行新版本发布。”

“不知道你留意没有,这里为什么没有4.0的版本?”小黑故意停顿了一下。

“是啊,我刚才没有注意看,确实版本号有断档。”小飞挠了挠头。

“原因是当前.NET Framework为4.8版本,所以二者如果要融合的话,就不能起一个版本冲突的4.X的名字。”

“明白,非常感谢!”,小飞对.NET的历史和未来有了更加深刻的理解。

ASP.NET Core的特点

聊了.NET的前世今生,小飞若有所获,但是对ASP.NET这个家伙,有点迷惑,到底什么是ASP.NET呢?

小飞故意查了一下ASP的全称,ASP(Activity Server Page活动服务器网页),回想之前看到的ML.NET和Azure.NET,小飞若有所思:ASP.NET应该就是用来开发Web应用的子框架了。

就在小飞得意之时,小黑突然微弱地问了一句:“你知道ASP.NET和ASP.NET Core有什么区别吗?”

“卡壳中……”

小黑像个布道师一样继续说道:“别看他们二者很像,其实骨子里是两套完全不同的设计框架。除了性能提高之外,关键是新架构采用了组件化的设计理念。”

“组件化是个好东西,而且也听得多了,但是这里的组件化具体是什么意思,为什么要组件化呢?”小飞发现自己对ASP.NET Core的认知还很肤浅,小黑的话给了他很多触发,也产生了更多的疑问。

小黑解释道:“组件化借鉴的是乐高思想,它的核心是复用。比如,我们可以用有限的乐高组件拼装出各种栩栩如生的玩具。同样,我们可以复用ASP.NET的组件,比如依赖注入、配置框架、选项框架、日志框架、HTTP中间件等,像流水线一样拼装出各种我们想要的Web应用,这里有个高大上的名称叫控制反转,扯得有点远,我们后面再聊。”

 “嗯,你的比喻非常形象,乐高确实有很强的复用性。而且,我看每个小孩几乎都会玩,而且可以无限扩展。”

“是的,组件化还有易扩展的特点,不知道你发现了没有,小孩玩乐高是越玩越得心应手,一旦你对ASP.NET的各个组件熟悉之后,我相信你也可以快速生产各种应用了。”

小飞在心中默默的念叨:ASP.NET Core、乐高、易复用、易扩展。

小黑又进一步问道:“好的框架,除了以上,还应该具备哪些特点吗?”

小飞脑子又嗡嗡起来:“这可是架构师要考虑的,我无论如何也想不出来啊。我只知道以前很多人选择Java都说因为Java跨平台。现在很多钟情Go,因为容器化、易部署。”

“对了,你说出了两个很重要的关键词,跨平台、易部署,这个.NET也考虑到了。”

小黑很兴奋,声音有点大。

“虽然微软的开源来得有点晚,很多人对他的过往独裁有成见,但这次开源确实也是很给力,C#也已经摆脱Windows系统的限制,不但支持Mac OS和Linux,而且对容器化(Docker),微服务、容器编排(Kubernetes)等技术的支持非常友好,这很好地顺应了云原生的未来趋势。”

很多新概念在小飞的脑袋开始延伸开来……

“为什么微服务和容器化关系这么密切,我经常听别人把这两者放在一起?”

小黑:“你可以这么思考,一旦服务的数量扩大为成百上千后会怎么样?”

小飞:“这么多的服务,部署和运维会让人抓狂吧?”

小黑:“对的,易部署和易运维也是ASP.NET Core的重要特点。”

一个新框架的诞生想不到背后有这么多的设计理念,小飞继续在心中念叨一遍:ASP.NET Core、乐高、易复用、易扩展、跨平台、易部署、易运维。

“小飞,别忘了,新架构如果性能不够优异,其他的指标再好也没人用的。”

“是哦,我经常听老的.NET程序员聊过旧版ASP.NET首次加载很慢,不知道这次全新改版性能怎样?”

“微软在设计早期就将性能列为其重要的目标之一,根据性能测试网站Tech Empower的最新数据(Round18 2019-07-09),ASP.NET Core在云服务器规格下(Azure D3v2 instances)的Plaintext响应测试可达215 941次/秒,JSON序列化响应测试可达52 623次/秒,表现非常亮眼。”

小飞对测试数据没有什么感觉,但是感觉好像很快的样子,小飞在脑子里对这些特点画了一幅脑图:

 

 “小飞,你这幅脑图应该再加一个圈,里面填上…的省略号,他可不仅仅只有这些能力,很多内容我也没用过呢。”

“还能有什么能力,我感觉上面这些已经很高大上了啊?”

“我把其他的能力也列在下面,你可以看看。”

编后语: 

作者的腾讯课堂《.NET Core入门和实战》系列课程持续更新中,感谢您的捧场。

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

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

相关文章

抢不到“猫抓杯”怎么办?这些女神更喜欢

▲数据汪特别推荐点击上图进入玩酷屋不久前才送走了西方情人节,男同胞们的第二个“送礼节”----女神节。这个令所有女生翘首、期待、憧憬、摩拳擦掌的日子,令所有男士小心翼翼、挑礼物到崩溃的日子,就要到了。小木作为妇女之友,听…

程序出Bug,一定是环境的锅!

现象前几天,一个客户反映说,他看到的数据顺序是乱的,不是按照日期倒排。但是在测试环境、预生产环境,都无法重现问题,即使使用相同的程序版本。定位查看代码,出问题的功能使用了第三方ORM框架,无…

AIX逻辑卷管理(LVM)

VG PV PP LV LP关系图 转载于:https://www.cnblogs.com/limt/archive/2013/04/06/4199257.html

鸿蒙操作系统如何打通 Windows 操作系统?

华为:我们选择拥抱 Windows华为给出的解决方案是在微软 Windows 操作系统中部署 HarmonyOS 分布式插件。运行 Windows 操作系统的电脑和运行鸿蒙操作系统的华为手机将形成超级终端,文件资源管理器实现互通。在 Windows 文件资源管理器中,将显…

凯立德导航android历史版本,凯立德导航升级2020版

凯立德导航升级2020版是一款非常专业的手机机车导航软件,它可以为大家提供便捷的导航服务,用户只需要输入自己想去的地方,软件会智能推荐一条最便捷的路线,同时会告知用户目的地附近热门的吃喝玩乐场所,有需要的用户来…

用 Python 实现打飞机

全世界只有3.14 % 的人关注了数据与算法之美所用技术和软件python 2.7pygame 1.9.3pyCharm准备工作安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。下载好使用的素材。技术实现初始化 pygame首先要初始化 pygame ,之后设定一…

把HttpClient换成IHttpClientFactory之后,放心多了

前言关于HttpClient的使用,个人在很多场景都派上用场了,比如在Winform或后台服务中用其调用接口获取和上传数据、微服务中用其进行各服务之间的数据共享等,到目前来看,似乎还没有出现过什么问题,但当我看到官方文档介绍…

android app银联支付,android app 快速接入银联支付流程(android studio版)

刚接触了下银联支付,在网上搜还是看官方文档银联支付都不是很清晰,所以自己总结一篇,希望可以帮助大家快速集成。一.进入下载官网,选择下载手机控件支付demo:https://open.unionpay.com/ajweb/help/file/techFile?pro…

基础排序算法 – 冒泡排序Bubble sort

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束。 从小到大排序: 原始待排序数组| 6 | 2 | …

这么简单的bug,你改了2天?

大家好,我是Z哥。“这个 bug 的问题不是很明显吗?怎么这么久才搞定?”“就改一行代码,你怎么弄了这么久?”我想上面的言语几乎每个程序员都听到过。特别是面对那些“稍懂技术”的同事的时候。我觉得这篇文章特别适合你…

android最好的3d游戏机,终极盘点:Android必玩十大超猛3D游戏

2010年即将过去,今年是Android平台的发展非常迅猛的一年,系统版本从2.1、2.2一路飙升至2.3,各种手机与平板设备也层出不穷。与此相对的当然就是应用软件的大爆发,根据AndroLib在本周二所公布的数字,Android Market目前…

要学习数据科学知识,这些信息需要知道(数据)

数据科学知识,分享数据干货,追逐科技前沿等方面另外,其他领域的学术进展,资讯以及合适的招聘要获取这些相关的信息,我们觉得这些平台非常的出色,推荐给大家。iNatureID:Plant_ihuman▲ 长按二维…

Csharp实例:武汉智能安检闸机数据接收和解析

项目介绍:本实例主要是接收安检闸机的数据解析并显示到界面上,只做功能实现,不做界面美化硬件:闸机一个、网线一根、电脑主机开发环境:vs2017 系统:win10涵盖知识点:tcp通讯、文件写入、多线程&…

墨迹天气android,墨迹天气Android产品分析

墨迹天气官网宣传图一、产品概况1、产品简介墨迹天气是一款免费天气预报工具,提供日出日落信息,六小时天气预报2、主要竞品天气通、最美天气、91黄历天气、知趣天气、懒人天气、琥珀天气二、体验环境手机:华为A199操作系统:Androi…

可编程的智能小车,100种玩法,让孩子玩出理科编程思维

▲数据汪特别推荐点击上图进入玩酷屋毫无疑问,数学、科学和计算机科学是解决21世纪现代问题的三大支柱。当现在各式各样的兴趣班和教育辅导班快要呈现饱和状态时,一种新兴的教育活动正如火如荼地进行着那就是少儿编程。少儿编程奇迹般的红火,…

我的Android进阶之旅------Android MediaPlayer播放mp3的实例--简易mp3播放器

大家好我们今天研究的是Android中很重要也最为复杂的媒体播放器---MediaPlayer. Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。 首先来看看MediaPlayer的生命周期&#xff…

AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制

AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念。但是很多同学在使用过后都提出了需要多用户支持的建议。整个团队或者整个公司都使用同一个密码来管理非常的不方便。今天 AgileConfig 1.3.0 版本终于支持了多用…

每日一笑 | 马冬梅当上了百度投资董事???

全世界只有3.14 % 的人关注了数据与算法之美马东什么?(图片来源于网络,侵权删)

批处理解决局域网共享打印机问题

随着公司规模的扩大,人员流动性也越来越大。特别是业务这块,隔三差五的就来几个业务人员,一入职各种后勤工作都要给他们安排好。网络这块除了基本的网线,电话要通以外。最最后面的当然就是打印机的共享了。 先说说公司的网络环境。…

.NET MAUI 预览版 6 发布

原文:bit.ly/2SKad9g作者:.NET Blog - David译者:精致码农 - 王亮当我们还在从微软 Build 大会和 .NET 6 预览版 4 中缓过来的时候,我们在这里就开始分享我们在 .NET 6 预览版 5 中对 .NET 多平台应用程序开发框架(.NET MAUI)的持…