從一張圖開始,談一談.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 國際許可協議進行許可。

相關文章
相關標籤/搜索