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

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

一张图

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

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

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

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

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

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

在过去的若干年间类似于php,ASP.NET ,这种技术一度成为时代的主旋律。这些脚本化的技术,希望通过降低开发者的学习成本,实现开发效率的提高,实际上它看上去也做到了。

但是由于这种技术存在许多问题,例如,在 ASP.NET Web 窗体页面上 C# 代码和 HTML 的混合方式使其难以构建单元测试。如果无法测试,久而久之,大型网站的维护和修改工作会变得更加困难。如果您确实创建了测试,这些测试大部分是运行 UI 的功能测试 — 即使是在今天,这也是一种脆弱的测试构建法。对网页的任何更改都很可能会中断该页面的所有测试。

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

然而,由于随着开发者职责分工的进一步细化,最终于是,开发者们将资源的粒度进一步拆分,后端的归后端,前端的归前端,你走阳光道,我走独木桥,前端通过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。 
1、生成可执行文件。 
2、生成依赖项的副本 
3、本地工具 
4、支持WPF与Windows Forms 
5、内建快速的JSON解析器 
6、索引和范围 
7、异步流 
8、类型:SequenceReader 序列读取9、类型:MetadataLoadContext 元素据负载描述表 
10、支持Linux 上的 TLS 1.3 和 OpenSSL 1.1.1 
11、AES-GCM 和 AES-CCM加密算法支持 
12、加密密钥的导入导出 
13、Linux上支持串口 
14、优化了很多现有功能 
15、分层编译 
16、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

七,参考资料

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

【版权声明】

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

从一张图开始,谈一谈.NET Core和前后端技术的演进之路的更多相关文章

  1. 一张图搞定 .NET Framework, .NET Core 和 .NET Standard 的区别

    最近开始研究.NET Core,有张图一看就能明白他们之前的关系. 上图己经能够说明.NET Framework和.NET Core其实是实现了 .NET Standard相关的东西,或者说Frame ...

  2. 浅谈WEB前后端分离

    重审业务逻辑 用过MVC的童鞋都知道业务逻辑(Bussiness Logic),但是大多对这概念又是模棱两可,业务逻辑从来都是这样难以理解,谈论前后端分离之前这个概念非常有必要探讨一下! 在简单的CR ...

  3. FUNMVP:几张图看懂区块链技术到底是什么?(转载)

    几张图看懂区块链技术到底是什么? 本文转载自:http://www.cnblogs.com/behindman/p/8873191.html “区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人 ...

  4. 谈一谈深度学习之semantic Segmentation

    上一次发博客已经是9月份的事了....这段时间公司的事实在是多,有写博客的时间都拿去看paper了..正好春节回来写点东西,也正好对这段时间做一个总结. 首先当然还是好好说点这段时间的主要工作:语义分 ...

  5. [转帖]几张图让你看懂WebAssembly

    几张图让你看懂WebAssembly https://www.jianshu.com/p/bff8aa23fe4d     (图片来源:giphy.com) 编者按:本文由明非在众成翻译平台上翻译. ...

  6. 【深入AQS原理】我画了35张图就是为了让你深入 AQS

    申明 本文首发自公众号:程序员cxuan,此文章为本人投稿文章.已经和cxuan沟通,文章投递公众号,博客平台我自己发布可标记为原创. 此文章肝了很久,图片较多,希望大家喜欢. 另外,感兴趣的小伙伴可 ...

  7. [转]35张图就是为了让你深入AQS

    以下文章来源于程序员cxuan ,作者一枝花算不算浪漫 谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关 ...

  8. 谈一谈iOS事件的产生和传递

    谈一谈iOS事件的产生和传递 1.事件的产生 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中. UIApplication会从事件队列中取出最前面的事件,并将事件 ...

  9. 视频基础知识:浅谈视频会议中H.264编码标准的技术发展

    浅谈视频会议中H.264编码标准的技术发展 浅谈视频会议中H.264编码标准的技术发展 数字视频技术广泛应用于通信.计算机.广播电视等领域,带来了会议电视.可视电话及数字电视.媒体存储等一系列应用,促 ...

随机推荐

  1. 27.app后端搭建聊天服务器的经历

    现在,聊天功能已经成了社交app的标配了.但是,众多web开发出生的程序员对聊天相关的服务的不了解,带来了很多开发上的困扰.在这篇文章中,根据下面3个方面,谈谈聊天服务. 1.      聊天服务的技 ...

  2. linux下安装python3.6.4

    想在阿里云端装一个 python36,因为自带的python2有点老 ,(centos系统) 当然你如果选择的乌班图系统的话就自带了python3,就不用看了 于是查找资料,但是一步一步的来总是不行, ...

  3. python 3.6 lxml标准库lxml的安装及etree的使用注意

    据我所知,python 3.5之后的lxml模块里面不再包含etree,那么要怎么解决这个问题呢? lxml模块下的etree函数的使用问题,部分lxml模块不再支持etree方法,因此只能想办法下载 ...

  4. GitHub 系列之「怎样使用 GitHub?」

    1.写在前边的话,为什么要写CitHub? 跟朋友在交流的时候听到求职的时候发现有些公司要附Github帐号,一个优秀的 GitHub 账号当然能让你增色不少.自己之前听说过,但没有花时间研究,最后花 ...

  5. (一)Servlet简介

    相关名词解释 HTML:Hyper Text Markup Language,超文本标记语言 HTTP:Hyper Text Transfer Protocol,超文本传输协议 URL:Uniform ...

  6. ATM机

    ATM 要求 示例代码: https://github.com/triaquae/py_training/tree/master/sample_code/day5-atm

  7. 关于Kafka配额的讨论(2)

    继续前一篇的讨论.前文中提到了两大类配额管理:基于带宽的以及基于CPU线程使用时间的.本文着重探讨基于CPU线程时间的配额管理. 定义 这类配额管理被称为请求配额(request quota),管理起 ...

  8. 时序数据库InfluxDB使用详解

    1 安装配置 这里说一下使用docker容器运行influxdb的步骤,物理机安装请参照官方文档.拉取镜像文件后运行即可,当前最新版本是1.3.5.启动容器时设置挂载的数据目录和开放端口.Influx ...

  9. conn.go 源码阅读

    ),         Conn: conn,     }     return k, v } // 返回远程节点地址 func (self *Connect) Addr() string {      ...

  10. counter.go

    package engine func (engine *Engine) NumTokenIndexAdded() uint64 {     return engine.numTokenIndexAd ...