欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
微軟ASP.NET技術(shù)“亂談”

“學(xué)海泛舟”系列文章之

微軟ASP.NET技術(shù)“亂談

2014新年了,順手寫(xiě)的一點(diǎn)文字,主要談?wù)勎覍Ξ斍拔④汚SP.NET技術(shù)的看法,比較隨意,大伙兒隨便看看吧。

1 當前微軟Web平臺技術(shù)全貌

從2002年發(fā)布.NET 1.0和Visual Studio.NET,到2013年.NET 4.5.1和Visual Studio 2013發(fā)布時(shí),微軟.NET平臺己有11年的歷史,其Web技術(shù)幾經(jīng)變遷,當前演化為以下的主要技術(shù)子領(lǐng)域:


 一張圖了解微軟Web平臺技術(shù)全貌

 

時(shí)至今日, ASP.NET底層的基礎架構基本沒(méi)太大變化,諸如使用HTTP處理管線(xiàn)處理HTTP請求,使用HTTP Module對原始HTTP請求進(jìn)行“加工“,使用HTTP Handler生成發(fā)給瀏覽器的HTML代碼等核心運作機理也沒(méi)有變化,所有變化的都是上層技術(shù)。

下面就簡(jiǎn)要地聊聊當前ASP.NET技術(shù)家族的各項成員:

  • 從1.0就有的Web Forms是當之無(wú)愧的“創(chuàng )業(yè)元老“,有關(guān)它的話(huà)題后面要重點(diǎn)說(shuō),此處先不提。
  • ASP.NET MVC是后來(lái)的但迅速成長(cháng)為當前最核心的微軟Web開(kāi)發(fā)技術(shù),所有學(xué)習或使用微軟Web技術(shù)開(kāi)發(fā)的人,現在還不學(xué)習MVC,那實(shí)在是件很讓人奇怪的事。有趣的是,現在Web Forms開(kāi)始越來(lái)越多地引入MVC的特性,這在A(yíng)SP.NET 4.5中看得非常明顯:比如強類(lèi)型的數據庫綁定,用戶(hù)友好的URL等等。打個(gè)可能不太恰當的比方:MVC可看成是“米國”,Web Forms可比成“天朝”,“兩國”往來(lái)密切。
  • Web Api是針對移動(dòng)互聯(lián)時(shí)代的需求而設計,相比那復雜無(wú)比的“WCF怪獸”,WebApi設計得相當輕巧,它主要負責與手機等智能移動(dòng)設備交換信息,底層直接使用HTTP,API具有REST風(fēng)格,數據交換格式使用Json和Xml,這種格式的數據具有良好的跨平臺能力,能方便地被Android和iOS設備所解析。Web Api能方便地與Web Forms和MVC相互集成,使之成為微軟平臺開(kāi)發(fā)移動(dòng)互聯(lián)應用服務(wù)端Service層的理想選擇。
  • 基于MVC/Web API,開(kāi)發(fā)現在比較流行的“單頁(yè)面應用(SPA:Single Page Apps)”很方便?;谖④浧脚_開(kāi)發(fā)這種類(lèi)型的應用,可使用MVC提供頁(yè)面模板,Web Api提供各種數據服務(wù),前端頁(yè)面使用各種Web框架(比如Angular、knockout等以AJAX方式訪(fǎng)問(wèn)服務(wù)端的Web Api服務(wù),動(dòng)態(tài)地更新頁(yè)面的相應區域,響應用戶(hù)操作)。
  • 另一項技術(shù)Web Pages采用類(lèi)似于PHP的開(kāi)發(fā)方式,直接在頁(yè)面使用Razor集成C#代碼,與MVC相比,它屬于“輕量級”技術(shù),比較簡(jiǎn)單易用,當然,付出的代價(jià)是沒(méi)有MVC所提供的諸多內置功能,對于功能簡(jiǎn)單的小網(wǎng)站,Web Pages很合適。

        這里談到PHP,說(shuō)些題外話(huà):諸如PHP、JSP之類(lèi)微軟之外的其他Web開(kāi)發(fā)技術(shù),與ASP.NET其實(shí)有諸多重合之處,每種編程技術(shù)都有多種框架可選。你可以先學(xué)PHP/JSP,再學(xué)ASP.NET,或者反之。不過(guò)我個(gè)人感覺(jué),如果先學(xué)ASP.NET再學(xué)其他技術(shù),開(kāi)始會(huì )略感不適,因為原來(lái)很多你己經(jīng)習慣的“自動(dòng)化”的東西,在許多其他技術(shù)中必須由程序員手動(dòng)實(shí)現,是謂“由奢入簡(jiǎn)難”。但畢竟都是Web應用,還是有很多都是一樣或類(lèi)似的東西,轉型并不困難。

  •  SignalR是ASP.NET家族中一個(gè)全新的成員,它其實(shí)是一個(gè)Web開(kāi)發(fā)框架,能開(kāi)發(fā)“實(shí)時(shí)”的Web應用。所謂“實(shí)時(shí)”,其實(shí)就是在服務(wù)端與客戶(hù)端之間建立“雙向”信息通道,允許服務(wù)端主動(dòng)向客戶(hù)端發(fā)送信息,回調客戶(hù)端代碼。SignalR底層依據各種情況會(huì )自動(dòng)選擇諸如HTML5 WebSocket這樣的技術(shù)實(shí)現客戶(hù)端與服務(wù)端的雙向數據通訊。這項技術(shù)挺有意思的,以后有機會(huì )再詳細聊聊它。

在現有的ASP.NET技術(shù)家族成員中,Web Forms是“元老”,MVC是“新貴”,兩者都是微軟Web技術(shù)中最引人注目的焦點(diǎn),下面就專(zhuān)門(mén)地聊聊它們。

2 MVC vs Web Forms

Web Forms是老家伙了,在MVC出現之前,它是微軟Web技術(shù)領(lǐng)域內當之無(wú)愧的“一把手”(其實(shí)是因為沒(méi)得選,它是唯一候選人),有大量的Web項目使用它開(kāi)發(fā),其中許多項目一直跑到今天,而且看起來(lái)還會(huì )繼續跑下去,到底要跑多久,誰(shuí)也不知道。因為在實(shí)踐中,大家都有意無(wú)意地遵循這樣一個(gè)原則:

If it’s not broken, don’t fix it.

這就是說(shuō),對于老的使用Web Forms開(kāi)發(fā)的項目,如果它還運轉正常,就不要去動(dòng)它。但是,如果要開(kāi)發(fā)新項目,就需要仔細考慮是否仍然采用這種擁有十多年歷史的“老”技術(shù)了。

John Ciliberti在其《ASP.NETMVC 4 Recipes》一書(shū)中對Web Forms的優(yōu)缺點(diǎn)作了比較全面的總結,原文內容不少,我粗略地轉述如下(同時(shí)加上了一些個(gè)人觀(guān)點(diǎn)):

  • Web Form的好處:開(kāi)發(fā)起來(lái)確實(shí)方便!

  1. 招人容易。當前玩得轉ASP.NET MVC的人并不算多。
  2. 使用上手非常容易的類(lèi)似于VB的開(kāi)發(fā)方式。
  3. 僅需要開(kāi)發(fā)者懂一點(diǎn)HTML和JavaScript,就可以開(kāi)發(fā)出“像模像樣”的網(wǎng)站,相關(guān)的技術(shù)細節被Web Forms框架“細心”并且“緊密”地封裝了起來(lái),而且很明顯設計者并不希望使用者去“解開(kāi)它”。
  4. 擁有“一堆”功能強大易用的服務(wù)端控件,并且能在大多數瀏覽器中正確運行,瀏覽器兼容性(特別是對老的瀏覽器)不錯。
  5. 其用戶(hù)控件很好用,易于開(kāi)發(fā),同時(shí)又能大幅度地減少重復代碼。
  6. 數據驗證功能由相應控件進(jìn)行封裝,相當方便,開(kāi)發(fā)者幾乎不需要手寫(xiě)JavaScript驗證代碼。
  7. 擁有一套自己的JavaScript框架,實(shí)現了AJAX功能,并且能與其他Web服務(wù)端控件無(wú)縫地整合。
  • Web Forms缺點(diǎn)——讓人只知其然,不知其所以然

一、引誘程序員寫(xiě)出“把所有東西混雜在一起”的Web應用。

Web Form采用Code-behind方式,雖然分離了頁(yè)面模板代碼和后臺的C#代碼,但實(shí)際上有很多程序員在后臺C#代碼中書(shū)寫(xiě)大量的業(yè)務(wù)邏輯代碼,并且把這些代碼與頁(yè)面上的控件直接綁定(因為在高度智能化的Visual Studio中,這么干太容易了),這會(huì )給網(wǎng)站的長(cháng)期維護帶來(lái)麻煩。另外,如果不是在一開(kāi)始就在架構上有所考慮,幾乎沒(méi)有辦法對一個(gè)Web Forms項目進(jìn)行單元測試。

二、成也控件,敗也控件。

Web Forms開(kāi)發(fā)中,控件是頁(yè)面開(kāi)發(fā)的核心。Web Forms服務(wù)端控件是重量級的控件,它擁有自己的一套運作機理,比如控件有自己的生存周期,在不同的周期觸發(fā)不同的事件;Web Forms提供了不少數據驗證控件,雖然能完成大多數常見(jiàn)的數據驗證任務(wù),但其可擴展性和性能比不上現在使用的諸多JavaScript庫(比如jQuery Valiation,不依賴(lài)于服務(wù)端生成的ViewState,運行速度更快,使用方便靈活)。

  1. 許多Web Forms服務(wù)端控件,雖然隨著(zhù)ASP.NET新版本的發(fā)布而不斷更新,但仍然有不少使用“老”的頁(yè)面生成技術(shù),比如有些控件仍然使用table元素完成布局,當需要使用手機等訪(fǎng)問(wèn)這些網(wǎng)頁(yè)時(shí),其使用體驗慘不忍睹。
  2. ASP.NET 4.0以前版本的Web Forms控件在生成HTML代碼時(shí),其ID值相當地“變幻莫測”,這會(huì )給JavaScript代碼編寫(xiě)帶來(lái)麻煩,當然,4.0以后版本對此有所改進(jìn),現在可以指定ID了。
  3. Web Forms的許多服務(wù)端控件必須要使用ViewState和Control State,一些特殊的控件,比如GridView,生成的ViewState數據量可能會(huì )很大(高達數M),如果不顯式關(guān)閉,那這些數據會(huì )在Web Server和Client間來(lái)回傳輸,占用過(guò)多的網(wǎng)絡(luò )帶寬,降低了響應速度。
  4. Web Forms控件關(guān)聯(lián)著(zhù)一個(gè)DLL,并且可能在內部使用了多個(gè)JavaScript腳本文件,這會(huì )導致瀏覽器收到的最終頁(yè)面中會(huì )出現一些諸如
  1. <script src="/ScriptResource.axd?d=JzFjHNVTNSRvxnyOuI_HmzgpeGgm-le_2DeNc7ub5pZUcy9A8M9scHh3p580Af72CFevs-15tBuSlQYGR8Y6jhCLDnQaQ1K84GPCFXjTaKWxU1eVzt8qVZ8mueqHNb4FDLOkRw2&t=ffffffff8a8533f5"   
  2. type="text/javascript">  
  3. </script>  

之類(lèi)的“神奇代碼”,而且只要你往頁(yè)面上加了一個(gè)控件,它們就會(huì )不請自來(lái)。對于這些代碼,你只能祈禱它工作正常,一旦出了問(wèn)題,跟蹤相當困難。

       總而言之,Web Forms控件高度封裝的特性使用開(kāi)發(fā)者調整它所生成代碼的手段很少很有限,這限制了開(kāi)發(fā)者的自由和發(fā)揮余地,也給頁(yè)面優(yōu)化帶來(lái)困難。

三、 下面重點(diǎn)說(shuō)說(shuō)WebForm的另一個(gè)問(wèn)題——過(guò)度封裝

        最初WebForm的設計思想是模仿VB的開(kāi)發(fā)方式,用拖放控件的方式設計Web頁(yè)面。但Web應用與桌面應用畢竟有重大差異,強求統一,必然需要對Web應用的底層機理進(jìn)行深度地封裝,方才可能創(chuàng )造出與桌面應用開(kāi)發(fā)一致的開(kāi)發(fā)體驗。Web Forms的封裝甚至到了這種程度:你不需要了解HTTP協(xié)議,也能通過(guò)拖拖拽拽的方式構建Web應用。

        這樣一來(lái),基于WebForms開(kāi)發(fā)簡(jiǎn)單是簡(jiǎn)單了,但遠離了Web應用的本質(zhì),Web Forms框架完成了太多的事,你必須照著(zhù)它規定的套路來(lái),留給你自由發(fā)揮的余地不多了。同時(shí),由于WebForms把HTTP協(xié)議給包得幾乎”看不到了”,制造了一個(gè)“Web網(wǎng)站開(kāi)發(fā)并不復雜,就是這樣“的第一印象,這其實(shí)是一個(gè)”假像“,如果不能意識到它點(diǎn),僅會(huì )用Web Forms的Web開(kāi)發(fā)者,離開(kāi)了Visaul  Studio,幾乎無(wú)法在其他Web領(lǐng)域找到工作,因為你己“認假成真”被“洗腦“,必須”清空內存“,重新學(xué)習與了解Web應用的”真像“。

        相比WebForms,ASP.NET MVC要好得多了,它并未向使用者隱藏Web應用的本質(zhì),雖然學(xué)習曲線(xiàn)比較陡,涉及到技術(shù)和Web開(kāi)發(fā)相關(guān)背景知識比較多,但能玩轉它的人,其學(xué)習能力和平均開(kāi)發(fā)水平往往都還不錯。

3 微軟技術(shù)影響下的程序員

        最后說(shuō)說(shuō)微軟技術(shù)特點(diǎn)對程序員生涯和技術(shù)發(fā)展所帶來(lái)的一些影響:

        微軟技術(shù)的最大特點(diǎn)之一就是易用開(kāi)發(fā)高效,這是優(yōu)點(diǎn),但對于程序員而言,如果對此沒(méi)有清晰的認識,則會(huì )受到不利的影響。

        微軟技術(shù)為了易用,包了很多層,并且許多并不開(kāi)源。當你嘗試去探索其底層技術(shù)實(shí)現時(shí),會(huì )困難重重。

        另一方面,由于程序員自身開(kāi)發(fā)經(jīng)驗與能力的限制,過(guò)度的封裝也阻止了程序員對深度探索技術(shù)內幕的熱情。

        與Windows相比,Linux不易用;與C#相比,Java不易用,C++尤其不易用;與Web Forms相比,JSP和PHP都不易用,……,但這些不易用,卻迫使程序員去學(xué)習很多東西,調動(dòng)了其積極性,程序員們收獲到了自身能力與素質(zhì)的提高。

        人的天性是懶的,易用、開(kāi)發(fā)高效且高度封裝的許多微軟技術(shù),嚴重削弱了很多程序員的技術(shù)探索欲望。所以我看到,在微軟技術(shù)領(lǐng)域,只有那些意志堅定并且對技術(shù)本身有著(zhù)濃厚興趣的人,才能堅持這條深入探索技術(shù)之路,并在這一技術(shù)探索過(guò)程中收益良多。而這樣的人,在微軟領(lǐng)域之外,也會(huì )是一把好手。

        當然,針對微軟技術(shù)“催生懶漢“這種現象,板子不能打在微軟技術(shù)身上,而應該打在人身上,這是人本身的問(wèn)題,技術(shù)本身是中性的,是“無(wú)辜”的。

        需要指出的是,微軟技術(shù)走向開(kāi)放的趨勢日益明顯,當前重量級的一些技術(shù),比如ASP.NET MVC、Entity Framework等,都是開(kāi)放源代碼的,有時(shí)間讀讀這些項目的源碼,定有所得。

        最后談一點(diǎn),由于學(xué)習掌握某個(gè)技術(shù)會(huì )耗費程序員大量的時(shí)間、精力甚至金錢(qián),沒(méi)有人希望自己下大功夫掌握的技術(shù)沒(méi)有用武之地,因此,門(mén)戶(hù)之見(jiàn)相當突出。經(jīng)常會(huì )看到許多程序員會(huì )為各種技術(shù)的所謂“優(yōu)劣”爭得面紅耳赤,惱羞成怒者甚至開(kāi)始對對方進(jìn)行人身攻擊,在網(wǎng)上,“黑“微軟技術(shù)者尤其常見(jiàn)。

        其實(shí),應該“把技術(shù)當成工具,但不要成為宗教信仰”。

        我贊同“實(shí)用主義”原則,別浪費時(shí)間去爭論哪個(gè)技術(shù)好、哪個(gè)技術(shù)壞,而應該關(guān)注的是哪個(gè)技術(shù)最適合于解決哪類(lèi)問(wèn)題。在不同的場(chǎng)景選擇合適的技術(shù),別試圖用一種技術(shù)去包打天下,“多學(xué)幾手,腳踏兩只船”。

        當然,想“腳踏兩只船”,這要求程序員要有足夠的學(xué)習能力和扎實(shí)的計算機專(zhuān)業(yè)基礎知識和基本技能,而且“船很多”,人卻只有兩只腳,加上人的時(shí)間精力也是有限的,所以要針對眾多的“引人”的技術(shù)勇敢地說(shuō)“不”。有所不為才能有所為,追求“一專(zhuān)多能”,努力精通一項技術(shù),對其他的技術(shù)做到需要時(shí)能快速上手并對付工作任務(wù)即可。學(xué)習能力再強,也不要指望能“快速”地成為另一領(lǐng)域內的”高手“,這既不可能也無(wú)必要。在實(shí)際開(kāi)發(fā)中,也許你不精通某項需要用到的技術(shù),但一定有人精通這個(gè)技術(shù),大家相互合作,取長(cháng)補短就好了,雙贏(yíng)!

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
2010年終總結--技術(shù)篇
.NET和J2EE該相互學(xué)習什么
ASP.NET是什么?
七天學(xué)會(huì )ASP.NET MVC (1) -- 深入理解MVC
ASP.NET網(wǎng)站建設之代碼分離
Visual Basic是什么
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久