一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

WebForm:毒藥還是利器?

  一、Webform的誕生及運(yùn)行機(jī)制,web開發(fā)帶來的革命性變化

  九十年代中期,InterNET嶄露頭角。為了進(jìn)軍Web應(yīng)用程序行業(yè),微軟開發(fā)了Active ServerPages(ASP)。ASP是開發(fā)Web頁面的一種快速、簡便的方式。ASP頁面由一個頁面組成,其中包含了標(biāo)記和語言的混合。ASP的強(qiáng)大之處在于,在頁面發(fā)送給終端用戶的Web瀏覽器之前,可以在頁面上包含在Web服務(wù)器上執(zhí)行的VBScript或JScript代碼指令。這是創(chuàng)建動態(tài)Web頁面的一種簡單方式,動態(tài)Web頁面可以根據(jù)開發(fā)人員規(guī)定的參數(shù)進(jìn)行定制。

  隨著時間的推移,ASP頁面上需要放置越來越多的HTML、VBScript、JScript、層疊樣式表、T-SQL等內(nèi)容。在這種情況下,頁面很難管理。于是,ASP進(jìn)一步深化推出了新版本的ASP 2.0和ASP3.0。在2000年夏,微軟發(fā)布了其測試版本的ASP+,其主要目的是以面向?qū)ο蟮姆绞絼?chuàng)建Web應(yīng)用程序。后來重新命名為ASP.NET(與.NET框架1.0的最終版本一起發(fā)布)。

  在引入.NET之前,傳統(tǒng)ASP提供的模型和VisualBasic中開發(fā)的模型大相徑庭,很少有VB開發(fā)人員能開發(fā)Web應(yīng)用程序,Web應(yīng)用程序開發(fā)人員也不能開發(fā)VB的胖客戶應(yīng)用程序。ASP.NET為此鴻溝之間搭起了一架橋梁。從此,ASP.NET把VisualBasic樣式的事件模型帶入Web應(yīng)用程序開發(fā)領(lǐng)域,為無狀態(tài)的HTTP提供了迫切需要的狀態(tài)管理技術(shù)。其模型非常類似于早期的VisualBasic模型,因為開發(fā)人員可以把控件拖放到設(shè)計界面或窗體上,處理控件的屬性,甚至處理控件的代碼,操作在控件的生存周期內(nèi)發(fā)生的一些事件。ASP.NET真正綜合了這兩個模型的優(yōu)點(diǎn)。

  ASP.NET是一個Web開發(fā)平臺,它提供了構(gòu)建企業(yè)級應(yīng)用所需要的服務(wù)、編程模型和軟件基礎(chǔ)結(jié)構(gòu)。ASP.NET應(yīng)用是一些已編譯的代碼部件,由一些可重用且可擴(kuò)展的組件組成,可以用第一類語言(包括C#、VisualBasic.NET、JScript.NET和J#)創(chuàng)建,并且可以訪問.NET框架中整個類的層次結(jié)構(gòu)。雖然ASP.NET的語法基本上與其前輩ASP兼容,但是ASP.NET是一個全新的編程框架,旨在用于快速開發(fā)Web應(yīng)用程序。作為微軟.NET平臺的一個基礎(chǔ)組成部分,ASP.NET提供了一種基于組件的、可擴(kuò)展的且易于使用的方法,用以構(gòu)建、部署和運(yùn)行供所有在瀏覽器或移動設(shè)備中使用的Web應(yīng)用

  同ASP和其它Web開發(fā)環(huán)境一樣,ASP.NET也是建立在HTTP協(xié)議之上的,它利用HTTP命令和策略建立雙向的、瀏覽器到服務(wù)器通信和協(xié)作。真正使ASP.NET有別于其它Web開發(fā)技術(shù)的是它提出的抽象編程模型,即“Web窗體結(jié)構(gòu)”。下圖1展示了傳統(tǒng)Windows窗體模型與.NET框架中Web窗體模型的簡單比較。


   圖1—傳統(tǒng)Windows窗體模型與.NET框架中Web窗體模型的簡單比較

  Windows窗體模型起源于典型的事件驅(qū)動的桌面編程風(fēng)格。不管客戶和服務(wù)器組件之間存在什么樣的連接,服務(wù)器的工作總是響  應(yīng)客戶的輸入。服務(wù)器知道總的應(yīng)用程序狀態(tài),并以一種兩層的、連接的方式進(jìn)行運(yùn)行。Web窗體模型則需要某種機(jī)構(gòu)來支持這種事件驅(qū)動的編程模型。在上圖中,請求頁面時發(fā)生的狀態(tài)反序列化和生成HTML響應(yīng)時執(zhí)行的狀態(tài)序列化代表了這種需求的機(jī)制。

  ASP.NETHTTP運(yùn)行庫負(fù)責(zé)這種篩選工作。HTTP運(yùn)行庫中一段代碼,擴(kuò)展了托管Web服務(wù)器的總體功能并使它們專門化。可重入窗體和隱藏字段是用來實現(xiàn)這種特征的低級工具。如果沒有一個跨越服務(wù)器頁面全部內(nèi)容的有效的后端對象模型,那么這種模型的效果很難成功。因此,組件模型對整個ASP.NET開發(fā)平臺的構(gòu)建及其有效的工作很重要。

  總之,ASP.NET是過去十年內(nèi)先后發(fā)展起來的Web開發(fā)技術(shù)的巔峰—一種在目前構(gòu)建通過HTTP協(xié)議傳輸?shù)姆植际?a href=/pingce/yingyong/ target=_blank class=infotextkey>應(yīng)用的技術(shù)中,Web開發(fā)技術(shù)建立在另一種技術(shù)的基礎(chǔ)之上,并且每一種技術(shù)都彌補(bǔ)了其前輩的缺陷。因此,ASP.NET是目前最先進(jìn)、特征最豐富而且功能最強(qiáng)大的平臺。
  二、WebForm能夠完全勝任企業(yè)軟件的開發(fā)么?
  在Webform出現(xiàn)之前,微軟力推的一個重要架構(gòu)是Windows DNA,即“Windows分布式因特網(wǎng)應(yīng)用體系”。可以說,它是在.NET平臺出現(xiàn)之前在微軟平臺上進(jìn)行技術(shù)開發(fā)的大環(huán)境,其目的主要是為了全面集成微軟的“舊有”組件技術(shù)OLE、COM、DCOM、MTS、COM+進(jìn)行企業(yè)級開發(fā)。Windows DNA是第一個將互聯(lián)網(wǎng)、客戶/服務(wù)器和用于計算的PC模型結(jié)合并集成在一起的為新一代分布式計算方案而設(shè)計的應(yīng)用軟件體系結(jié)構(gòu)。使用Windows DNA模型,用戶可建造一個能在任何網(wǎng)絡(luò)上實現(xiàn)的、可伸縮的多層應(yīng)用軟件。簡言之,Windows DNA實際上是微軟的.NET框架出現(xiàn)以前基于組件的分布式應(yīng)用程序戰(zhàn)略框架結(jié)構(gòu)。
  .NET是微軟自從發(fā)布Windows 3.0以來最為激動人心的新技術(shù),是微軟戰(zhàn)略上為下一個十年對服務(wù)器和桌面軟件工程的第一步,可謂微軟的一場世紀(jì)大豪賭。對于.NET,微軟的定義是,“用于構(gòu)架、配置、運(yùn)行網(wǎng)絡(luò)服務(wù)及其他應(yīng)用程序的開發(fā)環(huán)境。該平臺包括三個主要部分:公共語言運(yùn)行時、框架類和ASP.NET。”

  ASP.NET2.0的第一個主要目標(biāo)是提高現(xiàn)有開發(fā)人員的效率,即“去除ASP.NET中原來需要的大量繁瑣的編碼,使常見的ASP.NET任務(wù)更容易完成。”他們的目標(biāo)是“去年ASP.NET應(yīng)用程序需要的2/3代碼量!”在該版本中,這個目標(biāo)已基本實現(xiàn)。
  ASP.NET2.0的第二個主要目標(biāo)是簡化管理。ASP.NET2.0包含了一個MMC插件和一個新的基于Web的管理工具,從而使網(wǎng)站管理人員可以輕松地管理ASP.NET2.0應(yīng)用程序。而且,開發(fā)人員可以輕松地實現(xiàn)對系統(tǒng)涉及的重要配置文件的各個部分的加密。
  ASP.NET2.0的第三個主要目標(biāo)是提供世界上最快的Web應(yīng)用程序服務(wù)器ASP.NET中最激動人心的性能改進(jìn)之一是為了利用SQL Server2005而新增的高速緩存功能。ASP.NET2.0中包含了一個名為“禁用SQL高速緩存”,從而可以使終端用戶將總是看到最新的結(jié)果集,顯示的數(shù)據(jù)永遠(yuǎn)都沒有過期。ASP.NET的另一個很大的領(lǐng)域是性能和可伸縮性。ASP.NET2.0提供了64位支持。于是,現(xiàn)在可以在64位的Intel或AMD處理器上運(yùn)行ASP.NET應(yīng)用程序。ASP.NET完全兼容ASP.NET1.0和1.1,可以在.NET 2.0框架上打開以前的ASP.NET程序,重新編譯,并在64位處理器上運(yùn)行它們。

  另外,值得注意的是,SQL Server作為數(shù)據(jù)管理分析平臺和數(shù)據(jù)庫開發(fā)工具,在企業(yè)開發(fā)領(lǐng)域一直具有很好的口碑。同Visual Studio2005一同推出的SQL Server 2005是一套全新的管理工具包,它能夠與Visual Studio 2005緊密集成,為ASP.NET2.0應(yīng)用程序開發(fā)提供全方位的數(shù)據(jù)支持,其最突出的三大優(yōu)點(diǎn)是:商務(wù)智能、可編程性和安全性。當(dāng)然,ASP.NET2.0也提供了對于其它大型數(shù)據(jù)庫的良好支持。

  實踐方面,從國內(nèi)到國外已經(jīng)有數(shù)不清的企業(yè)和政府機(jī)構(gòu)選擇了基于ASP.NET平臺進(jìn)行網(wǎng)站開發(fā)。在此,毋須我們再費(fèi)口舌列舉相關(guān)的著名案例。但是,另一方面,還應(yīng)看到,ASP.NET2.0平臺對于國內(nèi)許多開發(fā)人員來說還是新事件,要掌握這個框架本身絕不會是經(jīng)過1-2個工程所能把握的。因此,現(xiàn)階段無論從國內(nèi)還是國外來看,都存在一個從傳統(tǒng)ASPASP.NET 1.0/1.1既有工程向ASP.NET 2.0轉(zhuǎn)換的過程,而且這一過程也不是短期內(nèi)所能實現(xiàn)的,但這是大勢所趨。

  此外,我們后面將會詳細(xì)討論的ASP.NET AJAX框架和Silverlight技術(shù)為新一代Web 2.0應(yīng)用程序開發(fā)中胖客戶端的開發(fā)提供良好的支持,它們將與以服務(wù)器端技術(shù)為主的ASP.NET 2.0架構(gòu)相互補(bǔ)充,珠聯(lián)璧合,并最終整合到一起。

  三、Webform的限制與局限淺析

  “微軟技術(shù)難學(xué)”論

  如今,網(wǎng)上有不少朋友大聲疾呼:ASP.NET技術(shù)難學(xué)!
  從本人十幾年的微軟技術(shù)學(xué)習(xí)體驗來看,學(xué)習(xí)微軟技術(shù)的確有種先易后難的感覺。原因很簡單。對于一些初級的、通用的問題,微軟通過層層包裝,給出了簡單的實現(xiàn)方法,使用戶能立即獲得新鮮的體驗。但是,對于一些較有深度的問題,則需要我們自己揭開“包裝”,深入理解原理后方可找到解決方法。這一點(diǎn),相信有VC經(jīng)驗的朋友最有體會—VC給予了程序員幾乎控制任何WIN32 API的能力,但是自身實現(xiàn)的僅僅是“灰色”的界面,但又有誰會否認(rèn)VC的強(qiáng)大威力呢?

  因此,對于新手在學(xué)習(xí)ASP.NET的初期,最容易產(chǎn)生“簡單”的錯覺—一系列的向?qū)c拖動,再加上所謂“智能感知”,幾分鐘時間就讓你傾倒。但是,稍后,你應(yīng)該會立即悟到:這樣的產(chǎn)品決不可能立即應(yīng)用于實戰(zhàn)環(huán)境!

試想一下:其它開發(fā)工具不是如此嗎?都是如此!而每一項技能的學(xué)習(xí)又何止不是如此?
  ASP.NET,作為WEB開發(fā)的一項技術(shù),以其大量的服務(wù)器控件對客戶端HTML作出了完美的包裝,特別是類似于桌面應(yīng)用中的面向?qū)ο蟆⑹录C(jī)制及Web窗體的引入,使初學(xué)者,特別是以前是桌面應(yīng)用的開發(fā)者一下為之吸引。對于基本的開發(fā)需要,幾乎應(yīng)有盡有;但當(dāng)你需要“工具箱之外的控件”時,你很可能還要學(xué)習(xí)C#,DOMAPI和JavaScript。這并不出乎意料,因為微軟不可能發(fā)明一種統(tǒng)一的方法來解決所有復(fù)雜的問題。

  從另一角度,我們也不妨問一下:什么技術(shù)威力無比又易于學(xué)習(xí)?是Javaphp+MySQL,還是Ruby?恐怕都不是。就基于Java平臺的Web開發(fā)而言,想開發(fā)出滿意的產(chǎn)品,沒有深入理解Java API、各種高級開發(fā)框架(如Struts、JSF等)、大量數(shù)據(jù)庫技術(shù)、DOMAPI編程,肯定行不通。很簡單,這是因為任何基于Web平臺的開發(fā)都要涉及大量相關(guān)技術(shù)。
  關(guān)于webform的局限性

  本人不是ASP.NET高手,不敢妄加評論和指責(zé)。但是,我們知道任何一個技術(shù)都有其自身的弱點(diǎn)。好的技術(shù)應(yīng)該在推廣自身的同時也一并提供這些弱點(diǎn)的解決方案。我們所熟知的“插件”技術(shù)正是這樣—我的精力有限,給你一個Toolkit,讓你自己去拓展!我認(rèn)為在這一點(diǎn),ASP.NET對于服務(wù)器定制Web控件的支持正是如此。

  webform有它自身的弱點(diǎn),但它同時也為我們提供了更大的自由—在必要的時候,我們完全可以自己使用JS/HTML/CSS等實現(xiàn)自己的定制功能。說到底,webform也只不過是微軟提供的期望能夠提高一點(diǎn)點(diǎn)開發(fā)效率的工具,萬不可以當(dāng)成是web開發(fā)的全部,甚至它都不是主要的方面。

  某君在國內(nèi)某著名論壇上提出如下針對ASP.NET的質(zhì)疑:
  “……你不能用js改變控件相對應(yīng)的dom結(jié)構(gòu),否則postback后還原viewstate的過程中會出錯; 你沒辦法給webform控件生成的html tag加控件不支持的attributte,又得回后臺在Page_Load control.Attributes.Add();
如果你想使用ajax的話,一堆陷阱在等著你……
  你也別指望webform能為你的Ajax.Updater返回一個視圖的片段。因為你并沒有辦法完全控制webform控件會生成什么東西給你。
  不要跟我說還有Ajax.NET之類的東西,或許這是唯一的辦法……

  webform入門的學(xué)習(xí)成本是比較低,但是精通webform比精通js+xhtml+css難多了。更郁悶的是,就算你精通了webform,你用它還是會有很多事情做不了,最終還是要靠js,html,codebehind代碼雜交,遷就著webform的特性,兜一個大圈去實現(xiàn)功能。webform純粹是忽悠,用來忽悠winform程序員轉(zhuǎn)到ASP.NET平臺的!……”
  對于此觀點(diǎn)與疑問,我們沒有必要再加評論,但是任何具有ASP.NET三年以上專門開發(fā)經(jīng)驗(特別是以前具有ASP開發(fā)經(jīng)驗者)者應(yīng)該很快提出自己的看法與解決方案。

     【強(qiáng)烈建議】與桌面應(yīng)用相比,顯然Web應(yīng)用更為復(fù)雜。除了與傳統(tǒng)桌面應(yīng)用開發(fā)相類似環(huán)境的要求之處,還要求開發(fā)人員對從服務(wù)器技術(shù)(.NET框架、框架語言、大型數(shù)據(jù)庫技術(shù)等)到瀏覽器端(各種主流瀏覽器架構(gòu)及區(qū)別、HTML元素、DOMAPI、JavaScript編程、CSS)的各種相關(guān)技術(shù)有一定了解。特別是對于HTML元素、DOMAPI、JavaScript編程、CSS這些內(nèi)容基礎(chǔ)中的最基礎(chǔ)者,必須熟用自如。這些東西僅用三年左右的工夫是很難達(dá)到熟練掌握的。在團(tuán)體開發(fā)環(huán)境下,對于以上技術(shù),我們只能從中把握重點(diǎn),最終達(dá)到各個擊破。

  關(guān)于“無刷新視圖跳轉(zhuǎn)的局限性”
  關(guān)于這一點(diǎn),我不想浪費(fèi)過多的篇幅。因為ASP.NET2.0的創(chuàng)建之初并沒有預(yù)料到稍后的“AJAX”熱潮的興起,所以,它僅在非常必要的地方引入并支持“無刷新視圖跳轉(zhuǎn)”(即“頁面局部刷新”)功能。要實現(xiàn)這一點(diǎn),要求開發(fā)人員深入理解ASP.NET頁面回寄機(jī)制,并且掌握JavaScript編程技術(shù),然后借助于ASP.NET2.0中提供的System.Web.UI.ICallbackEventHandler、Page.ClientScript.RegisterClientScriptBlock等實現(xiàn)所謂“AJAX”的局部更新效果。但如今,借助于ASP.NET AJAX 1.0框架,主要通過其中的服務(wù)器控件UpdatePanel的簡單操作即可輕易實現(xiàn)這一目標(biāo)。
  四、WebForm究竟是利器還是毒藥?
  關(guān)于“WebForm究竟是利器還是毒藥”的爭論,我想大家很可能會聯(lián)想起國際上關(guān)于“核武器”的爭論。原子能,作為一種新的能量形式,就其本身是無法定論究竟它是造福人類的利劍還是滅絕人類的武器的,關(guān)鍵在于看其主人如何使用它。顯然,ASP.NET技術(shù)中推出的WebForm理論以其類似傳統(tǒng)桌面Windows應(yīng)用的操作技術(shù)很快深入人心。但是,我們更要清醒地認(rèn)識到,選擇.NETASP.NET2.0平臺進(jìn)行Web開發(fā)是一個系統(tǒng)的工程,絕不可以是一、兩年時間所能精通的,因為Web開發(fā)涉及服務(wù)器端諸多.NET編程技術(shù),還要與瀏覽器端眾多瑣細(xì)的技術(shù)相糾纏。所以,單純掌握一個WebForm是無濟(jì)于事的。

  對于那些急于成事者,特別是新手,往往為WebForm的表面易操作性所迷惑,而當(dāng)投身于實戰(zhàn)環(huán)境時才感覺一頭霧水,茫然不知所措。也難怪有些人把WebForm斥責(zé)為“毒藥”—“……遷就著webform的特性,兜一個大圈去實現(xiàn)功能。webform純粹是忽悠,用來忽悠winform程序員轉(zhuǎn)到ASP.NET平臺的……”—“害人匪淺”。WebForm帶給人們的這種錯覺,我們不妨再對比以前桌面開發(fā)時代的VB6。這個軟件可謂真正“RAD”工具,學(xué)習(xí)者可以在幾小時,甚至幾分鐘內(nèi)為之吸引,但是,真正使用VB6做起軟件來,在很多情況下還要靠“手工”挖掘低層的WIN32API函數(shù)。但又有誰把VB6斥責(zé)為“毒藥”呢?基于WebForm做Web開發(fā)與之很類似,都像是從頂層往下學(xué)習(xí),但有些時候要往下挖掘的東西遠(yuǎn)不止一批WIN32 API函數(shù)的數(shù)量(不過難度上較之于WIN32 API相對容易)。相反,VC6一開始就給予我們從低層WIN32API函數(shù)編程的能力,而在實戰(zhàn)環(huán)境下也主要是要求開發(fā)者具有從同一層次(即主要是從廣度上)進(jìn)行挖掘的能力。所以,也不可以僅憑此一點(diǎn)就斷言VC6為“利器”。

  另一方面,又有誰公然提出Java易學(xué),或比較于.NET平臺更易于掌握呢?其實,當(dāng)我們對Web開發(fā)技術(shù)掌握到一定深度,往往都會有這樣的體會:各種平臺與方案表面上看各有千秋,但還是存在很大的共同之處。特別是在如今C#語言與Java存在極大相似之處的情況下,更易于得到這樣的結(jié)論。

  【補(bǔ)注】關(guān)于ASP.NET2.0中的ViewState的使用,不知諸君有何感想?ViewState可以說是整個ASP.NET在HTTP上實現(xiàn)其事件系統(tǒng)的基礎(chǔ)。ASP.NET中引入ViewState的目的在于實現(xiàn)整個框架的靈活性,但與此同時也給多少開發(fā)人員帶來難言的困惑。幸好,在一般情況下,僅利用ViewState的默認(rèn)操作就可以滿足我們的要求。

  古詩云:十年磨一劍。我們也可以得出類似的結(jié)論:webform對于智者無疑是一把利刃,但對于淺嘗輒止者也不亞于一付“毒藥配方”。
  五、拋開局限,如何合理協(xié)調(diào)利用webform?
  基于上面的分析,我們看到:webform,如同任何其它技術(shù)一樣,既有自身的局限性,也有高超之處。一旦我們在webform上花了一定的功夫,那么不妨繼續(xù)“走下去”。

  對于需要進(jìn)一步改造的遺留項目(如以前基于ASPASP 1.0/1.1開發(fā)的項目),我們可以先改造最有把握的部分,尚不確定的部分暫時先不要做,等各種技術(shù)及條件成熟起來再作全面的改造。

  對于想使用最新ASP.NET 2.0框架進(jìn)行開發(fā)的項目,還是先使用最先掌握和最有把握的技術(shù)進(jìn)行開發(fā),也許在界面上或其它性能方面存在不盡人意的方面,但這要比把“不確定”和“無把握”留在“危險地帶”更為安全。因為Web開發(fā)較之于桌面開發(fā),安全往往是最應(yīng)優(yōu)先考慮的部分。其它方面,例如性能的改進(jìn),用戶體驗感的增強(qiáng)等則可以隨著技術(shù)的不斷成熟穩(wěn)步推進(jìn)。
  對于時下“熱門”的AJAX技術(shù),也不妨冷眼觀之,然后選最有把握者加以利用。  

  例如,對于微軟的ASP.NET AJAX框架(以前稱為“ATLAS”),其針對不同開發(fā)環(huán)境提供了三大類不同的解決方案。基于ASP.NET 2.0的項目完全可以在最開始選擇以UpdatePanel服務(wù)器控件改造為主的方案以達(dá)到最安全和最快速地AJAX化你的Web項目,同時又能帶給用戶豐富的“實時”體驗感。

  六、展望微軟未來web開發(fā)技術(shù)
  從Windows DNA到.NET框架 

  .NET框架是微軟公司繼WindowsDNA以來的新的開發(fā)平臺。基于這個新的框架,以前在DNA中暴露出來的缺陷基本得到全面解決。另一方面,.NET并沒有完全拋棄WINDOWSDNA,實際上它是WINDOWSDNA的繼續(xù)和發(fā)展。如今的.NET不僅有一套明確的技術(shù)規(guī)范,還提供了一系列的支持產(chǎn)品,例如編譯器、類庫甚至最終的用戶程序。如Windows.NET操作系統(tǒng)平臺、.NET框架是運(yùn)行環(huán)境、.NET企業(yè)服務(wù)器為產(chǎn)品服務(wù)器、Visual Studio.NET為編程平臺。

  .NET框架是以一種類似于Java系統(tǒng)的虛擬機(jī)方式運(yùn)行和管理的編程平臺,通過公共語言運(yùn)行時刻為基礎(chǔ),支持多種語言(C#、VB.NET、C++、Python 等)的開發(fā)。下圖2展示了.NET的整體框架結(jié)構(gòu)。


    圖2—NET體系結(jié)構(gòu)

  .NET框架具有兩個主要組件:公共語言運(yùn)行庫和.NET框架類庫。公共語言運(yùn)行庫是.NET框架的基礎(chǔ)。我們可以將運(yùn)行庫看作一個在執(zhí)行時管理代碼的代理,它提供內(nèi)存管理、線程管理和遠(yuǎn)程處理等核心服務(wù),并且還強(qiáng)制實施嚴(yán)格的類型安全以及可提高安全性和可靠性的其他形式的代碼準(zhǔn)確性。事實上,代碼管理的概念是運(yùn)行庫的基本原則。以運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。.NET框架的另一個主要組件是類庫,它是一個綜合性的面向?qū)ο蟮目芍赜妙愋图希梢允褂盟_發(fā)多種應(yīng)用程序,這些應(yīng)用程序包括傳統(tǒng)的命令行或GUI應(yīng)用程序,當(dāng)然也包括基于ASP.NET所提供的最新的應(yīng)用程序(如Web窗體和XML Web服務(wù))。

  .NET框架可由非托管組件承載,這些組件將公共語言運(yùn)行庫加載到它們的進(jìn)程中并啟動托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境。.NET框架不但提供若干個運(yùn)行庫宿主,而且還支持第三方運(yùn)行庫宿主的開發(fā)。

  如今,與Windows Vista綁定發(fā)行的.NET框架3.0框架把側(cè)重點(diǎn)放在了進(jìn)一步拓寬.NET方案的應(yīng)用范圍上。下圖3展示了.NET 3.0框架的棧式框架結(jié)構(gòu)。

        圖3—NET 3.0框架結(jié)構(gòu)

   從總體來看,.NET 3.0框架并沒有改進(jìn)現(xiàn)有技術(shù),而是引入了四種適應(yīng)未來發(fā)展的基本新技術(shù):Windows描述基礎(chǔ)(WPF)、Windows通信基礎(chǔ)(WCF)、Windows工作流基礎(chǔ)(WWF)、Windows CardSpace(WCS)。  

  這其中的每一種技術(shù)都將成為開發(fā)者基于新一代操作系統(tǒng)及.NET平臺用來實施新方案的基礎(chǔ)。
  其中,WPF無可爭辯地成為四個新式基礎(chǔ)類集中最為重要的。這主要是由于兩點(diǎn):一致性WPF方案;新式的名為XAML的XML標(biāo)準(zhǔn)編程語言。

  首先,WPF為基于ASP.NET框架進(jìn)行Web開發(fā)提供了一種一致的方案來構(gòu)建編程模型,并且支持使用更為豐富的控件和設(shè)計技術(shù)來開發(fā)Windows程序。一個開發(fā)出來的單個WPF程序最終能夠被發(fā)行到桌面、Web以及智能設(shè)備等多種環(huán)境下。

  其次,WPF中創(chuàng)新性引入了一種名為XAML的XML標(biāo)準(zhǔn)編程語言。開發(fā)人員利用它能夠控制對象的布局。后面我們提到的Silverlight技術(shù)正是基于這一標(biāo)準(zhǔn)開發(fā)而成的。從表面上看,這種技術(shù)似乎與Flash極為相似,其實二者之間還是存在相當(dāng)?shù)牟煌lash是一個成熟的、可控制的、獨(dú)立于操作系統(tǒng)的封閉式框架。而相比之下,Silverlight允許你與操作系統(tǒng)及其它.NET框架技術(shù)進(jìn)行集成。顯然,Silverlight的出現(xiàn)很可能會對Flash構(gòu)成極大的威脅。

  在這個“網(wǎng)絡(luò)即是一切”的社會里,Windows通信基礎(chǔ)(WCF)顯得極為重要。這個編程模型把web服務(wù)、.NET遠(yuǎn)程技術(shù)、分布式事務(wù)和消息隊列統(tǒng)一到單個面向服務(wù)的編程模型中,從而實現(xiàn)真正意義上的分布式計算。

  Windows工作流基礎(chǔ)(WWF)是一種定義、執(zhí)行和管理工作流的微軟技術(shù)。工作流由一系列的活動組成;開發(fā)者能夠編寫他們自己的域特定的活動,然后把它們應(yīng)用于工作流中。.NET框架3.0/Windows工作流基礎(chǔ)還提供了一組涉及若干控制流構(gòu)建方面的通用目的的活動。值得注意的是,這個框架了還包括了許多Visual Studio2005擴(kuò)展(可視化工作流設(shè)計器、支持用戶調(diào)試工作流的可視化調(diào)試器、工作流編譯系統(tǒng))。總之,借助于WWF,新一代應(yīng)用程序開發(fā)過程的流程控制方面將得到極大的改善。
  最后,Windows CardSpace(WCS)為程序開發(fā)中一直令人頭疼的認(rèn)證問題上提供了一種新的解決方案。WCS有望改變你到一個應(yīng)用程序(基于Web、手機(jī)或桌面程序)的認(rèn)證方式,從而極有助于保護(hù)用戶的私有數(shù)據(jù)。

  另外,LINQ(Language IntegratedQuery)項目也是一項值得關(guān)注的技術(shù)。它是一個為了能夠讓開發(fā)者更容易地訪問數(shù)據(jù)的.NET框架工具集,是C#和VisualBasic語言集合的延伸。據(jù)微軟人士析,這個項目將為查詢XML、對象、相關(guān)數(shù)據(jù)和其它數(shù)據(jù)類型提供一個統(tǒng)一的程序設(shè)計模型。

  即將登場的C#3.0也應(yīng)引起我們的關(guān)注。這個項目中將進(jìn)一步引入大量其他語言的特性,特別是完全的closure支持、泛型、var、linq等,這些都是動態(tài)語言之所以強(qiáng)過傳統(tǒng)C++,Java,C#早期版本之處。界時,C#3.0將可作為全功能語言完全可以與php、Ruby等動態(tài)語言對抗,而且仍保持原有的編譯期強(qiáng)類型的優(yōu)勢。

  ASP.NET AJAX框架

  隨著互聯(lián)網(wǎng)的迅速普及,人們對富客戶端功能的需求日益迫切,特別是Jesse-JamesGarrett于2005初正式提出的“AJAX”的出現(xiàn)簡直成為這一需求的強(qiáng)興奮劑。具有諷刺意味的是,設(shè)計之初并沒考慮到ASP.NET2.0在剛剛出世之后就陷入被淘汰的邊緣。于是,微軟于2005年夏天著手開發(fā)自己的代號為“ATLAS”的AJAX方案,并于2007年1月份正式推出并更名為ASP.NET AJAX 1.0,其官方支持網(wǎng)站為[url]http://ajax.ASP.NET[/url]。

ASP.NET AJAX的目標(biāo)在于:
  構(gòu)建一套完整的Web用戶體驗框架—提供一組豐富的內(nèi)置組件,并允許開發(fā)者方便地依照自己的需要加以擴(kuò)展;因此,對于那些熟悉JavaScript腳本語言的開發(fā)者將極大地提高程序的可維護(hù)性和可重用性。
  與ASP.NET 2.0編程模型有機(jī)集成—提供一種端對端的解決方案,使得MS AJAX應(yīng)用程序能夠非常容易地訪問服務(wù)器ASP.NET和.NET框架中現(xiàn)有的編程模型。
  自由選擇開發(fā)模型—實際開發(fā)中,開發(fā)人員可以根據(jù)需要選擇以服務(wù)器端為中心還是以客戶端為中心作為應(yīng)用程序的基本開發(fā)模型。
  完全跨平臺并基于標(biāo)準(zhǔn)—兼容大多數(shù)瀏覽器和平臺,它實現(xiàn)的MS AJAX腳本框架能夠適用于任何流行的Web服務(wù)器
  零客戶端安裝—運(yùn)行基于MS AJAX開發(fā)的應(yīng)用程序時,不需要客戶端安裝任何內(nèi)容。MS AJAX的“客戶端”由一系列從瀏覽器下載到本地的JavaScript文件組成。

  此外,MS AJAX框架還可以應(yīng)用php及ColdFusion等Web開發(fā)環(huán)境中。
  從總體上看,整個ASP.NET AJAX框架被劃分為如下三個模塊:
  1、ASP.NET AJAX。這一部分是ASP.NET AJAX框架的核心部分,包括了核心AJAX類型系統(tǒng),網(wǎng)絡(luò)協(xié)議層,組件模型,擴(kuò)展器基類,以及與ASP.NET集成的服務(wù)器端功能。

  2、ASP.NET AJAX CTP。ASP.NET AJAX社區(qū)支持的“增值”CTP部分,包括了以前各個AtlasCTP版本包含的,但并不在完全支持的“核心”1.0版本內(nèi)的額外的高級特性。微軟的最終目標(biāo)是,通過用戶進(jìn)一步的試用與反饋,逐步將其中穩(wěn)定的部分增加到核心模塊中去。

  3、ASP.NET AJAX Control Toolkit。包含了基于ASP.NET AJAX1.0版“核心”版本的大量(還在繼續(xù)增加)的功能極強(qiáng)的免費(fèi)AJAX控件。它是一個開源項目,由微軟和非微軟開發(fā)人員共同開發(fā)維護(hù),主要支持站點(diǎn)是[url]http://www.CodePlex.com[/url]。
  總的來看,MSAJAX的整體框架目前已經(jīng)基本成熟,但是在許多方面還需要作進(jìn)一步改進(jìn)。然而,ASP.NETAJAX作為ASP.NET最重要的客戶端補(bǔ)充框架的及時出現(xiàn),使二者珠聯(lián)璧合,相互輝映,從而使微軟的Web解決方案上下貫通、趨于完美。由此不難想象,在ASP.NET的下一個版本正式出籠時ASP.NET AJAX將被正式吸收進(jìn)去。

  Silverlight技術(shù)

  Silverlight最早亮相于2005年的秋季,當(dāng)時它使用的還是開發(fā)代碼“Windows Presentation FoundationEverywhere(WPF/e)”。今年4月,微軟為其取了現(xiàn)在的“Silverlight”之名,接著在拉斯維加斯NAB展會上,正式高調(diào)發(fā)布這個新的跨平臺網(wǎng)絡(luò)媒體解決方案,又在稍晚的MIX07展會上對Silverlight進(jìn)行詳細(xì)介紹,并宣布了其開源的打算。當(dāng)前最新版本為Microsoft Silverlight 1.1 Alpha。

  Silverlight是一個跨瀏覽器、跨平臺的插件,旨在為網(wǎng)絡(luò)帶來下一代基于.NET媒體體驗和豐富的交互式應(yīng)用程序。Silverlight為開發(fā)者提供靈活的編程模型(圖4),支持AJAX,VB,C#,Python,Ruby等語言,并集成到現(xiàn)有的網(wǎng)絡(luò)應(yīng)用程序中。Silverlight可以對運(yùn)行在Mac或Windows上的主流瀏覽器提供高質(zhì)量視頻信息的快速、低成本的傳遞。


        圖4—Silverlight框架簡單示意圖

  如今的Silverlight能夠與Flash一樣作為瀏覽器插件工作,同樣能顯示矢量圖形、動畫和視頻,可以運(yùn)行在多種操作系統(tǒng)甚至移動設(shè)備上。于是,人們把其與Flash聯(lián)系在一起、進(jìn)行各種比較,甚至稱其為Flash殺手。

   一方面,Silverlight不僅支持高清晰的錄像文件的展示,可以讓中小開發(fā)者迅速而可靠地交付龐大和高清晰的視頻而無需花費(fèi)大量成本,并且在很多方面較之Flash有更佳的性能,比如與AJAX結(jié)合更緊密、更容易動態(tài)生成、開發(fā)工具集成度高等,而它比Flash更強(qiáng)的最關(guān)鍵原因在于,Silverlight應(yīng)用程序是以一種叫做XAML的本文標(biāo)識語言傳遞到瀏覽器的,當(dāng)用戶登錄站點(diǎn)時不需要進(jìn)行大量的數(shù)據(jù)交換傳輸。諸如Google之類的搜索引擎可以掃描抓取XAML,卻無法對Flash應(yīng)用程序有較好的抓取支持。
  另一方面,在一個大量使用Flash的站點(diǎn)中,開發(fā)者和設(shè)計者往往需要花費(fèi)額外的工作來使它們的站點(diǎn)對搜索引擎更加友好,但是實際的效果并不理想。于是,這些開發(fā)人員很可能會轉(zhuǎn)向高性能、同樣跨瀏覽器和平臺、小成本并具有良好的繼承工具支持的Silverlight。

  此外,F(xiàn)lash使用的是ActionScript的腳本進(jìn)行編程,而真正熟悉掌握這項技術(shù)的人員并不多。相比之下,數(shù)不勝數(shù)的精通VB,C#,Python等的程序員無需專門的學(xué)習(xí)就可以操控Silverlight。他們可以使用強(qiáng)大的Visual Studio codename“Orcas” Beta1中的Expression Studio進(jìn)行輕松地設(shè)計、編譯和發(fā)布Silverlight應(yīng)用程序。

  最后,還有一點(diǎn)值得我們關(guān)注的是:Silverlight以開源形式面向開發(fā)社團(tuán),必將大大促進(jìn)Silverlight技術(shù)的發(fā)展與成熟。

  小結(jié)
  微軟以其壟斷技術(shù)曾經(jīng)和正在“得罪”多少人?這一點(diǎn)上,優(yōu)秀的輕量級Web開發(fā)動態(tài)語言“后起”之秀—Ruby也曾因出手于“帝國”而一度讓眾君敬而遠(yuǎn)之。但作為技術(shù),輕率地貶低ASP.NET 2.0是毫無道理的。   

  ASP.NET2.0的確是劃時代的優(yōu)秀的重量級Web開發(fā)工具,當(dāng)然它也決不會是僅憑“短短的幾日”所能拿下的。因此想進(jìn)入Web開發(fā)領(lǐng)域,對于工具的慎重選擇也顯得尤為重要,是僅滿足于眼前需要,還是立足于長遠(yuǎn),不可統(tǒng)一定論。但無論如何,如今局勢已逐漸明朗:Web應(yīng)用將一步步取代桌面應(yīng)用并最終占為主流。

  最后,因本人非ASP.NET老手,僅是憑借幾段文字胡亂發(fā)表了一下自己就webform的一點(diǎn)意見。因此,如果惹煩了哪位,還請多多海涵。

NET技術(shù)WebForm:毒藥還是利器?,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91热视频在线 | 国语自产免费精品视频一区二区 | 爱丝福利视频 | 91在线视频导航 | 久久免费视频3 | 一区二区亚洲视频 | 精品久久久久免费极品大片 | 国产成人免费高清视频网址 | 亚洲九九 | 国产无套在线观看视频 | 草草视频免费看 | 在线观看免费视频国产 | 91视频链接 | 欧美欧美乱码一二三区 | 中文字幕一区二区三区有限公司 | 久99久热只有精品国产男同 | 国产91色拍| 日本老年人精品久久中文字幕 | 伊人久久五月天 | 国产欧美在线亚洲一区刘亦菲 | 色在线播放 | 久久国内视频 | 久久精品国产国语对白 | 亚洲图片欧美文学小说激情 | 免费观看精品视频999 | 91城中村在线精品 | 五月婷久久 | 天天做天天添天天谢 | 大jjjj免费看视频 | 国产精品2020在线看亚瑟 | 2020天堂中文字幕一区在线观 | 青青草国产精品人人爱99 | 欧美hh| 99久久伊人一区二区yy5o99 | 老湿司午夜爽爽影院榴莲视频 | 美女很黄很黄免费的 | 亚洲国产精品67194成人 | 亚洲麻豆视频 | 国产伊人久久 | 亚洲日本一区二区三区 | 综合国产 |