如何看待asp.net web開發(fā)技術(shù)?
網(wǎng)友解答: .Net技術(shù)已經(jīng)從“不拖控件的菜鳥”階段進(jìn)入了“擁抱開源,擁抱云計(jì)算,擁抱移動(dòng)互聯(lián)網(wǎng)”的新時(shí)代。2014年10月,微軟新任CEO納德拉喊出了“Microsoft loves
.Net技術(shù)已經(jīng)從“不拖控件的菜鳥”階段進(jìn)入了“擁抱開源,擁抱云計(jì)算,擁抱移動(dòng)互聯(lián)網(wǎng)”的新時(shí)代。
2014年10月,微軟新任CEO納德拉喊出了“Microsoft loves Linux”的口號(hào)!隨后開始了一系列的“開源、開放”的動(dòng)作:發(fā)布開源、跨平臺(tái)的開發(fā)工具Visual Studio Code;發(fā)布開源、跨平臺(tái)的.Net Core 1.1(Linux下運(yùn)行.Net程序);Azure云支持Linux操作系統(tǒng)等一系列操作。
所以說(shuō) .NET 在未來(lái)的發(fā)展還是挺不錯(cuò)的。以前在“ 如鵬網(wǎng) ”上看過(guò)一個(gè)公開課視頻叫《.net 程序員的未來(lái)之路該怎么走》,講的挺詳細(xì)的,可以去了解一下。
有詳細(xì)的.net 的課程體系和學(xué)習(xí)路線,可以參考一下。
第一部分:.net 基礎(chǔ)第二部分:數(shù)據(jù)庫(kù)開發(fā)第三部分:.net高級(jí)技術(shù)第四部分:web前端第五部分:asp.net 核心編程第六部分:asp.net MVC第七部分:掌上租項(xiàng)目(技術(shù)要點(diǎn))第八部分:高級(jí)技術(shù)擴(kuò)展詳細(xì)的可以到 如鵬網(wǎng) 官網(wǎng)上去了解一下,有網(wǎng)絡(luò)的地方就可以學(xué)習(xí),根據(jù)自己的時(shí)間來(lái)靈活安排學(xué)習(xí)進(jìn)度,有問(wèn)題隨時(shí)提問(wèn),老師實(shí)時(shí)在線答疑,目前國(guó)內(nèi).net 最好的就是 如鵬網(wǎng)了,有技術(shù)大牛親自授課,口碑不錯(cuò),基本上都是慕名而去的。
.net 提高課程,包含Entity Framework、ASP.Net MVC、掌上租項(xiàng)目、.Net Core、Linux、多線程、異步編程、NoSQL(MongoDB、Redis、memcached)、MySql數(shù)據(jù)庫(kù)、web api、Docker for .net等內(nèi)容。
網(wǎng)友解答:先簡(jiǎn)單回顧下asp.net過(guò)去十年
mvc流行前asp.net的服務(wù)端控件,將html和js一起封裝,很多客戶端事件自動(dòng)通過(guò)生成的js將數(shù)據(jù)重新post回服務(wù)端。而對(duì)于很多剛?cè)腴T的小伙伴來(lái)說(shuō),僅僅靠拖放控件和寫C#代碼就可以實(shí)現(xiàn)一個(gè)可用的Web項(xiàng)目,大大降低了入門門檻。相應(yīng)的,服務(wù)端控件這種過(guò)度耦合的設(shè)計(jì)帶來(lái)了很多缺點(diǎn):自定義控制難,難以純粹將前后端分離,導(dǎo)致asp.net從業(yè)人員既不能精通前段技術(shù),又不能涉獵更多的后端技術(shù)(生態(tài)問(wèn)題)。
這個(gè)年代,.net被貼上了“拖放控件”的標(biāo)簽。
mvc流行后微軟推出了asp.net mvc,很多公司已經(jīng)開始嘗試前后端分離。就模式上面來(lái)說(shuō),已經(jīng)和其它語(yǔ)言平臺(tái)基于mvc的web項(xiàng)目開發(fā)模式無(wú)異。
但是asp.net本身的服務(wù)框架太雜亂,尤其是艱難(如果你留意過(guò),甚至可以說(shuō)難產(chǎn))支持asyncawait異步編程后,他的同步上下文模型缺點(diǎn)太大:首先是源碼的結(jié)構(gòu)混亂,其次是使用過(guò)程很多人容易造成死鎖,異步方法使用不當(dāng)導(dǎo)致請(qǐng)求已返回上下文已釋放然后找不到同步對(duì)象導(dǎo)致的異常。問(wèn)題的根源是大部分程序員對(duì)線程了解不深,如果項(xiàng)目有正確的規(guī)范用法還好,一旦沒(méi)有,產(chǎn)生異常很多人根本不知道問(wèn)題出在哪里。博客園改造過(guò)程中就出現(xiàn)過(guò)的死鎖,有興趣的可以去看看博客園官方博客寫過(guò)。
aspnetcore新應(yīng)用程序模型設(shè)計(jì)和代碼實(shí)現(xiàn),我非常喜歡。其它的不說(shuō),看看那簡(jiǎn)潔的Reqeust和Response對(duì)象,是不是就會(huì)讓你欣喜?再看看中間件管道,上下文(Context)通過(guò)委托鏈鏈一路傳遞,再也不用晦澀的同步上下文,也移除了和Windows安全相關(guān)的特征。
整個(gè)架構(gòu)更加清晰,喜歡做擴(kuò)展的人絕對(duì)會(huì)有一日看盡長(zhǎng)安花的快感。
自然性能也不用說(shuō),可以關(guān)注github上微軟之前做過(guò)的除了mvc之外的性能測(cè)試對(duì)比。
net生態(tài)擁抱開源后,netcore,standard,aspnetcore,efcore等一系列實(shí)現(xiàn)全部都有了,明年的netcore3.0還會(huì)包含客戶端模型(wpf和winform,只能在windows下使用)。
github上面aspnet,dotnet,dotnet-architecture等分支包含大量微軟直接維護(hù)的開源項(xiàng)目。
開源社區(qū)大部分的項(xiàng)目已經(jīng)跟進(jìn)將三方組件基于standard標(biāo)準(zhǔn)打包。
微軟也久違地把散亂的文檔匯集到docs子域名下
萬(wàn)事劇本,就欠生態(tài)!如果apache基金會(huì)下面的重要項(xiàng)目都有.net的分支,相信依靠netcore必定可以再次搶占不少的份額。
前景微服務(wù)流行后,其實(shí)內(nèi)部可以混合多種平臺(tái)提供服務(wù),用aspnetcore做對(duì)三方組件需求不太大的業(yè)務(wù)服務(wù)是完全的可以的,基于微軟一貫的作風(fēng),開發(fā)效率是很高的。
其實(shí)現(xiàn)在很多內(nèi)部系統(tǒng)在用.net,只是面向互聯(lián)網(wǎng)相關(guān)的項(xiàng)目,更加需求豐富的三方資源,采用.net的比較少。不過(guò)很多大的公司都有.net的分支團(tuán)隊(duì)。畢竟在桌面和開發(fā)效率上的優(yōu)勢(shì),還是有他存在的價(jià)值。
aspnet到底會(huì)如何發(fā)展,個(gè)人感覺(jué)還是要看社區(qū)的反應(yīng),要看生態(tài)是否能逐步豐富起來(lái)。
看在微軟這么努力的份上,個(gè)人挺希望他能夠扳回一局。
所以?眼光放長(zhǎng)遠(yuǎn)一點(diǎn),平臺(tái)只是我們的工具,一個(gè)IT人不應(yīng)當(dāng)把自己的技術(shù)范圍限定到某一個(gè)平臺(tái)。多學(xué)多積累,實(shí)際項(xiàng)目中應(yīng)該針對(duì)需求、架構(gòu)以及團(tuán)隊(duì)做出選擇。
比如Java和.net同時(shí)掌握,各取所長(zhǎng),基于他們重疊性較高的原因,學(xué)習(xí)成本并不高。何況絕大部分的知識(shí)和平臺(tái)并無(wú)關(guān)系。
個(gè)人見解純手打,歡迎大家評(píng)論或者提出意見。