經過幾個月的艱苦學習,我終于把那本厚厚的ASP.NET的書學完了。但是有一個問題我卻一直沒有找到答案,那就是ASP.NET程序是用什么開發工具來開發的,它的程序代碼是怎么編譯成DLL文件的。我曾以為.NET Framework就是ASP.NET程序的編譯工具,此時我還不知道,.NET Framework其實只是ASP.NET程序(當然也包括所有.NET程序)的運行環境。最后還是老鄉給我點明了:用Visual Studio .NET 2003(簡稱VS2003)。
老鄉此前也一直在學ASP.NET,原來他那本ASP.NET的書對VS2003的使用有詳細的介紹。此外這本書還介紹了ASP.NET編程的一些要點和技巧。于是我決定再學習這本書。為了學習方便,我又特地到北京西單圖書大廈買了這本書回來。直到現在,我都很清楚地記得,這本書的作者叫章立民。
我不得不說的是,這本書與我之前所學的那本書,各有特點,但我還是比較偏愛之前的那本書,因為無論是它的編寫還是排版,都讓我覺得很好,唯一美中不足的地方就是它沒有介紹VS2003這一ASP.NET程序開發必須用到的重要工具。所以此時老鄉的這本書,就成了最好的彌補。
在老鄉的指點下,我在電腦上裝上了VS2003。看著VS2003那簡潔舒適而又很人性化的界面,我一下子就被深深吸引住了,這是Dreamweaver所不能比擬的。對著VS2003,我仿佛才第一次真正走進了程序開發的世界。
有了前面那本書的學習基礎,再學習這本書就容易和輕松得多。我照著書上的介紹,一步一步地在VS2003上進行操作。經過反復多次操作和實踐,我終于在VS2003上編寫了一個最簡單的ASP.NET程序,并實現了將程序代碼編譯成了DLL文件。望著這個DLL文件,我有點激動,覺得它很神圣,仿佛它真的帶我走進了程序開發技術的殿堂,同時我更覺得VS2003很牛很酷,很了不起。這時我才真正理解和體會到ASP.NET與ASP的區別,以及程序代碼與頁面分離的好處。程序代碼后置,這就是ASP.NET的一大特點。
但是這時的我并沒有看到,在ASP.NET和VS2003表面無限美好的背后,卻是一個深深的黑洞,它正一步一步將我引進黑暗的地獄,而不是天堂,從而使我后來想逃而逃不掉。
我一邊利用業余時間努力地學習這本新的ASP.NET的書,一邊思考公司網站程序的問題,那是一個無法回避的問題。公司網站程序是用ASP.NET開發的,所以它的程序代碼自然都是后置的,而且都被編譯成DLL文件了,所以我就根本無法看到它的程序代碼。因此就算我學會了ASP.NET,我還是不能對公司網站的程序進行改動。雖然這時我還在做著網站論壇系統,但遲早要面臨這一問題。
自從我知道了公司網站程序是用ASP.NET開發并經過編譯的之后,我就一直在找程序的源代碼,可惜最后只找到了ASP.NET程序頁面的代碼后置類文件,而有關的類庫項目源代碼文件卻沒有找到。我在公司所使用的這臺電腦,就是上一程序員在職時所使用的,我入職后除了C盤我在重裝系統時將其格式化掉了外,其他盤的文件我都原封不動地保留了下來。所以我找不到類庫項目的源代碼文件,一是可能在C盤里被格式化掉了,二是可能上一程序員沒有留下來。我入職時上一程序員已離職,所有的資料沒有做任何交接,所以才出現了這樣的問題。
但是矛和盾從來就是相對出現的,ASP.NET程序可以被編譯,自然也可以對其進行反編譯。經過在網上不斷尋找,我終于找了一個ASP.NET程序的反編譯工具──Reflector。這個簡單易用的反編譯工具,就像一個神奇的精靈,使得被編譯過的ASP.NET程序在它面前也只好被展露無遺。當我將由公司網站的類庫項目所編譯出來的DLL文件用Reflector反編譯出來后,我像是洞悉了自己心愛女人的內心秘密一樣變得欣喜若狂。
于是我按照剛剛學到的VS2003的使用方法,在VS2003上打開了我之前所找到的公司網站程序的原有解決方案,并在其中建立起了有關的類庫項目。接下來我所要做的就是,慢慢地將在Reflector反編譯出來的類庫項目的程序代碼在新類庫項目中重新組織起來。反編譯出來的程序代碼只需稍微作些修改就可以用到新類庫項目中,這項工作并不難,難的是,我需要在這個過程中將程序本身所反映的實際業務邏輯弄明白,也就是要讀懂這些程序代碼,因為只有這樣,我才能真正對公司網站程序有一個全面的了解和把握。所以這也是一項不輕松不容易、需要一定的時日才能完成的工作。
原來有了反編譯,可以讓事情變得輕而易舉,即使沒有源代碼,照樣可以將程序重寫一遍。這似乎給了我一個很有意義的啟示:不懂,沒有關系,可以去學;沒有源代碼,也沒有關系,可以去反編譯。這也似乎印證了那句話,“沒有做不到,只有想不到”。
- 前言
- 序
- (一)畢業后的徘徊
- (二)走上不歸路
- (三)無數個熬夜的日子
- (四)喘過氣來了
- (五)工作中,工作外
- (六)繼續熬夜學習的日子
- (七)悄悄改變的人和事
- (八)床上等你
- (九)秋與冬
- (十)編譯與反編譯
- (十一)獨過春節
- (十二)公司里的靚麗風景
- (十三)重組程序
- (十四)酒入愁腸
- (十五)首次接單
- (十六)告別
- (十七)短暫的混亂
- (十八)轉移陣地
- (十九)新的天空下
- (二十)遠景與畫餅
- (二十一)加班,加班
- (二十二)代碼民工
- (二十三)死在了今天的晚上
- (二十四)程序員與小姐
- (二十五)迷途中的抉擇
- (二十六)再下決心
- (二十七)大項目
- (二十八)開展新工作
- (二十九)人來人往
- (三十)挑戰能力極限
- (三十一)特殊任務
- (三十二)可憐的憂患意識
- (三十三)曇花一現
- (三十四)人事變動
- (三十五)欲去還留
- (三十六)無名的配角
- (三十七)黯然離去
- (三十八)倉促中的選擇
- (三十九)痛苦的開始
- (四十)繁雜的需求
- (四十一)卑微的角色
- (四十二)內心的掙扎
- (四十三)絕緣空間
- (四十五)越發覺得自己像條狗
- (四十六)午夜浪叫與噩夢
- (四十七)躁動的空氣
- (四十八)No money no talk
- (四十九)傾注心血而成的系統
- (五十)無限愧疚
- (五十一)太不給力的年終獎
- (五十二)同學情與差距
- (五十三)破局(上)
- (五十三)破局(中)
- (五十三)破局(下)
- (五十四)轉折
- (五十五)另一種生存之道
- (五十六)步入正軌
- (五十七)遲來的愛戀
- (五十八)盼望已久的收獲
- (五十九)鳳凰涅磐
- (六十)大海作證
- (六十一)美麗的天際
- 后記