从一张图开始,谈一谈.NET Core和先后端技术的演进之路

从一张图开始,谈一谈.NET Core和先后端技术的演进之路  

                                                      邹溪源,李文强,来自长沙.NET技术社区php

一张图

2019年3月10日,在长沙.NET 技术社区组织的技术沙龙《.NET Core和先后端分离那些事儿》上,咱们曾经试图经过一系列抽丝剥茧的过程来引导你们在这条基于.NET Core的先后端分离有关的技术路线上持续发散,因为各类缘由未能成功,所以,技术社区执行主席,李文强同窗整理了一张图,并由溪源以专刊的形式来描述他所认为的技术演进之路。 html

 这张图涉及到的知识点,涵盖了目前先后端技术近五年来发展的方方面面,做者指望经过这一张图,对当前技术发展方向进行一些简单的分析,并但愿能经过与读者们进一步交流,梳理出一些可以让更多人快速参与到.NET Core的学习过程来的技术资料,期待经过你们的共同努力,可以为促进.NET 社区的发展作成一些贡献。 前端

本文的吐槽专用地址为,溪源的博客园https://www.cnblogs.com/xiyuanMore/,欢迎你们来拍砖。vue

二,背景,先后端分离,好聚好散,你好我也好

HTTP协议是互联网技术得以飞速发展的基础,在这个起源于上世纪六十年代的古老传输协议,到今天已经走过了六十个年头,并深深的影响了时代。 react

到目前为止的新时代,对HTTP协议的应用能够说无处不在了,而面向bs的应用做为后起之秀,经历了30年的发展,终于主宰了世界。 git

在过去的若干年间相似于php,ASP.NET ,这种技术一度成为时代的主旋律。这些脚本化的技术,但愿经过下降开发者的学习成本,实现开发效率的提升,实际上它看上去也作到了。 angularjs

可是因为这种技术存在许多问题,例如,在 ASP.NET Web 窗体页面上 C# 代码和 HTML 的混合方式使其难以构建单元测试。若是没法测试,长此以往,大型网站的维护和修改工做会变得更加困难。若是您确实建立了测试,这些测试大部分是运行 UI 的功能测试 — 即便是在今天,这也是一种脆弱的测试构建法。对网页的任何更改都极可能会中断该页面的全部测试。 github

随着技术的演进,发展出了服务端渲染的方式,例如ASP.NET MVC。用户请求网页后,后端先调用数据库,得到数据以后,将数据和页面元素进行拼装,组合成完整的 html 页面,再直接返回给浏览器,以便用户浏览。 ajax

然而,因为随着开发者职责分工的进一步细化,最终因而,开发者们将资源的粒度进一步拆分,后端的归后端,前端的归前端,你走阳光道,我走独木桥,前端经过ajax调用,后端则经过restful api来提供数据。优秀的开发者们互相配合,终于打造了互联网时代的高效的开发效率。  算法


从选择先后端分离技术开始,前端与后端看似走上了不一样的发展道路,但优秀的开发者历来都不甘寂寞,他们能服从这种古老的秩序么? 

三,大前端的前身今世

前几天看到的消息(参考资料1),著名的开源组织Node.js基金会和JS基金会宣布合并,成立OpenJS基金会,经过提供一个中立的组织来托管项目并协做资助有益于整个生态系统的活动,从而促进 JavaScript 和 Web 生态系统的健康发展,为推广技术而努力。目标是让项目轻松、直接地加入 OpenJS 基金会并利用其技术和社区治理经验。托管项目将是基金会的主要关注点,但 OpenJS 基金会也会将其能力扩展到非托管项目。  
JavaScript、Node.js和前端技术,成为移动互联网时代的最闪亮的一颗星,是偶然或是必然?。 


曾几什么时候,随着先后端技术的逐渐分野,Javascript做为网页开发过程当中的重要补充,为数据数据交互过程提供支持,彷佛造成了一种定则或者说是一种秩序。 

然而,极客们不是这样想的。Ryan Dahl是Node.js的创始人,他认为,JavaScript是一种优秀的技术,可是却只能用于先后端数据交互过程当中的中间媒介,运行在网页前端,这显然是大材小用。 

你们都是语言,凭什么还要分高低贵贱之分? 

他一直想寻找一种打破旧秩序的机会,而谷歌开源组件v8引擎给了他机会。利用v8引擎,他开发了Node.js,并很快被一大批优秀企业奉为圭臬,众人拾柴火焰高,有了大企业的参与,搞起事情来果真不同凡响,一时间成为了煊赫一时的新兴技术。 

与此同时,伴随着先后端分离而来的,还有一大波各类风格的前端UI架构,那些心里对美充满了渴望的优秀的前端工程师们利用有限的资源,开发出相似于bootstrap,layui等在内的各类前端框架,让前端成为了美的代名词。 

Node.js与那么多前端的UI框架们碰到一块儿,就是肉体和灵魂的完美融合,打造出来的,已经不在是昔年那个空有外表、必须依赖别人提供力量的体弱多病的林妹妹,而是一个骨骼健硕,充满战力的女汉子。 

而昔日仅仅只能开发界面,对于数据的话语权,能够说彻底没有,只能遵从后端工程师的调排的前端工程师们终于能够得到一次翻身的机会,谁愿意让机会从指尖滑过,他们用本身的双手,硬生生的拉开了这场大前端时代的帷幕。 

一时间,正可谓百花齐放,百家争鸣,前端可以干的事情也愈来愈多,甚至于多少年以来前端工程师鲜有涉及的领域,也能够成为前端工程师们挥毫泼墨的精彩画卷。 

不管是后端的专属领域,数据和数据库,大前端开发者均可以独立完成,而是还不只仅局限于关系型数据库,或者非关系型数据库,限制前端工程师们操做数据的一个个壁垒,早就成为纸糊的墙纸。 

仍是持续集成技术的实践。前端工程化,让前端从单个网站中分离出来,成为一个更加灵活和安全性更高的应用体系,高性能,稳定性,高可用性,高可维护性,这些以往用来形容后端技术的词语,也能够应用在大前端工程师开发的杰做之中。 

或者是设计模式和架构思想,我还记得两年前有人评论说,先后端工程师,之后最大的区别,大概是架构思想吧。然而,到了今天,设计模式和架构思想,也成为了前端工程师们政治正确的一个标杆,例如MVVM和AOP等,都被前端开发者们玩得倒背如流。前端三大框架,angularjs,react,vue.js格外引人注目,靠着独特的设计,一时间成功的占领了与一切前端有关的技术领域,无论是网页、跨平台的app、甚至桌面程序,这些对大前端开发者来讲都不是难事。 

为何前端会迎来如此绚烂的新时代呢?由于没有爹,没有爹就意味着没有历史的包袱,如同一个黑洞通常,包容和吸收一切能够吸取的精华。 

四,大后端的是是非非

相对于前端而言,曾经一度,后端语言的发展可谓是波澜不惊,不悲不喜来形容。 

这边的Java,自从被甲骨文收入囊中以后,开始了漫长的挤牙膏的过程,虽然保持着一年最少一更最多两更的节奏,可是却后期的版本彷佛并无太多值得称赞的新特性。然而,因为其精良的设计理念和开源的优越性,却意外的遇上了互联网时代和移动互联网时代两波大风口,造就了史无前例的辉煌。 

而墙内的巨头微软,沉迷于软件公司不可自拔,刚收了诺基亚才没多久就创下大几十亿美圆的资产减记。惟一值得称赞的或许是游戏市场,大概一度,微软或许想甚至把游戏当作了翻身的惟一机会,然而,颓势一旦开始就难以逆转,在战线拉得太开,让微软腹背受敌,这也直接影响了.NET 技术的发展。.NET 是微软于2000年推出来的技术,曾经试图经过.NET 称霸互联网市场,曾经一度大杀四方,让对手毫无招架之力。可是封闭和对于操做系统的过于依赖,最终成为一个美丽的遗憾。这么优秀的技术框架,逐渐衰弱,成为了强者们的垫脚石。 

 

在后端语言市场,GO语言的兴起是一个变数。他来自于谷歌,当时2009年Sun经营不善,选择打包出售时谷歌错过了下手的时机,让Sun落入甲骨文之手。而错失Sun的代价对谷歌来讲很惨烈,一连串的知识产权官司让谷歌深受打击,因而谷歌痛定思痛,开发出服务端新兴语言体系GO语言。谷歌不愧为软件巨头,GO语言这个专门为互联网而设计的优越语言,性能优越,功能强大,成为了后端市场的搅局者。 

前有Java拦路虎,后有谷歌大灰狼,微软之前足以跟Java平起平坐的半壁江山,眼看即将十不足一,微软就这么甘心把本身的奶酪献给别人么? 

微软须要一场秩序的变革,究竟谁能来拯救他?谁来当这个白衣骑士? 

一位根正苗红的微软人,善于hit refresh的印度裔移民萨提亚·纳德拉被推举了出来。过去若干年,他一直在微软核心部门,负责了许多拳头产品的研发,这一次,他要负责的项目,既不toC,也不toB,而是负责将微软从泥坑中拉出来。他没有让投资者和微软、用户失望,他作到了。从战略的宏观层面,提出了云为先的战略,得到了投资者的支持,又从战术层面,推出了全新的.NET Core,成为了后端开发市场的巨大变数。 


 
.NET Core这种优秀的技术,首先继承了来自他的父辈.NET Framework通常优秀的设计理念,又兼具他的对手们那些开源,开放灵活的个性,同时又天生具有高性能和跨平台的技能,成为后端市场一种新的选择。 

时至今日,.NET Core的应用前景已经十分可观,不管是微服务,仍是容器化,弹性架构等新兴的分布式场景,仍是大数据,人工智能,天然语言等时髦领域,它一样能够驾驭。而对于企业而言,一样可使用.NET Core来开展DevOPS实践,为企业的进一步腾飞插上无穷的想象力。 

到目前为止,.NET Core即将发布3.0版,有哪些新特性值得期待?咱们来看一下吧。 

0,NET Core 3实现了.NET 标准2.1。 
一、生成可执行文件。 
二、生成依赖项的副本 
三、本地工具 
四、支持WPF与Windows Forms 
五、内建快速的JSON解析器 
六、索引和范围 
七、异步流 
八、类型:SequenceReader 序列读取九、类型:MetadataLoadContext 元素据负载描述表 
十、支持Linux 上的 TLS 1.3 和 OpenSSL 1.1.1 
十一、AES-GCM 和 AES-CCM加密算法支持 
十二、加密密钥的导入导出 
1三、Linux上支持串口 
1四、优化了不少现有功能 
1五、分层编译 
1六、Linux的ARM64 
限于篇幅,不便全文转载,具体请查看参考资料2。 

有史以来,微软迎来了最开放的时期。不只仅造就了市值的历史最高,更是执着于技术的发展和投入,对于.NET 开发者而言,一样迎来了新的机会。 

五,结语,谁能独步武林? 

随着互联网时代冬天的到来,将来或许将迎来几年平静的沉淀期,然而哪怕就算是看似平静的格局,一样也会出现革命者。尤为是开发语言,历来就没有什么稳定不变的江湖地位可言。在今天看来,彷佛Java一家独大的局面已经成为定势,难道这种局面就这样了吗? 

从先后端一体化,到先后端分离,从Node.js的崛起于极客圈,到GO,NET Core孕育于巨头之中,新时代,历来没有谁能独步武林。 
将来,谁都有机会。 

是时候刷新本身,与新技术共同进步了!! 

六,附件,一些可用的学习路线图或资料 

1,ASP.NET Core学习路线图。HTTPs://github.com/MoienTajik/AspNetCore-Developer-Roadmap
2,来自广西的.NET Core爱好者陈蛇和他的小伙伴们参与收集和翻译的资料HTTP://www.iotxfd.cn/

3,张善友老师整理的Ocelot学习资料https://www.cnblogs.com/shanyou/p/10363360.html 

七,参考资料

一、https://www.cnbeta.com/articles/tech/826737.htm 开源中国新闻《Node.js 基金会与 JS 基金会合并为 OpenJS 基金会》 
二、https://www.ithome.com/0/398/577.htm  IT之家新闻 
三、https://mp.weixin.qq.com/s/rHiMpNregBNCbpCqm3ykdA DotNET跨平台公众号,《微软开源故事 | 开启 .NET 开源革命》 

【版权声明】 

做品来自于长沙.NET技术社区成员【邹溪源】,有兴趣了解长沙.NET技术社区详情,请关注公众号【DotNET技术圈】,做品版权归做者和博客园共有,做品采用知识共享署名-非商业性使用-相同方式共享4.0 国际许可协议进行许可。

相关文章
相关标签/搜索