學了一段時間的Asp.Net 2.0後,心裏一些想法

我從.net beta2的時候就開始學了,正式使用.net做開發使用的是.net1.1版。就是說,.net1.0版出來的時候絕大多數人都是處在學習階段,原因嘛,當然是許多人沒有定下來是否學習.net,還有.net入門的確比以前的Delphi和VB6要難一些,而且.net1.0剛推出,出於對穩定性和功能上的考慮,我覺得大家基本上是拿.net 1.0當作學習工具,拿 vs.net 2002當作熟悉微軟新一代開發環境的練手用了。

而.net 1.1出來就不同了,更多的人開始學起了.net,從Java那邊也跑來不少人,畢竟.net的配置比Java簡單太多了,而且足夠的中文文檔也降低了不少入門的門檻。當然,隨着大家學習的深入,一些重要的組件可以使用,大家手中收集保存的代碼也逐漸增多,如FTP,Mail,壓縮解壓縮,各種控件,還有費盡心機寫出來的特定工作的解決方案。當然,這些軟件大部分都運行在.net1.1下。

現在,微軟推出了.net 2.0 beta1,既然已經出了,那麼離正式版也不會太遠了,當然,.Net 2.0 SDK正式版出來的時候肯定會有中文的SDK。肯定解決了在.Net 1.1 已經有的問題和添加了許多功能。
如令許多人撓頭的vs2003 Web項目調試問題,和當操作Session/Cookie後使用Response.Redirect()沒有反應問題等。

這樣,.net 2.0 (我專注於asp.net 2.0)就與.net 1.1 兼容性非常小,我已經發現,在1.1內建立自定義Web服務器控件防止多個同樣控件註冊客戶端腳本的

System.Web.UI.Page.IsClientScriptBlockRegistered()
System.Web.UI.Page.IsStartupScriptRegistered()
System.Web.UI.Page.RegisterClientScriptBlock()
System.Web.UI.Page.RegisterRequiresPostBack()

這四種方法,已經被System.ObsoleteAttribute這個特性給聲明成已經被廢棄的方法。就是說在asp.net 2.0 中,無法使用任何客戶端的腳本註冊方法,看樣子只能使用Response.Write()來自己手工寫了。這就是說,沒有辦法在1.1下寫的代碼在2.0下重新編譯就變成2.0的組件。

好了,上面說了一大堆,反正說明了.net 1.1 與 .net 2.0的兼容性很小。但是.net運行庫有個好處,就是並存執行。在asp.net 2.0中引用1.1的程序集,這個程序集是否是在.net 1.1的CLR控制下運行呢,還是在.net 2.0下?

如果1.1的程序集在1.1的CLR執行。那麼我自己寫的許多組件,許多down的組件,基本都是在1.1下環境運行的,如果我使用了2.0,這些組件不可能扔掉。那麼使用這些組件,類的調用和參數的傳遞是否可以正常運行?尤其是參數,我最擔心。傳遞string,int這樣的基本類型應該沒有問題,但是參數如果是自己寫的類呢,把1.1下寫的類實例當作返回值返回給2.0下的代碼,能行嗎?我比較懷疑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章