VS.NET 學(xué)習(xí)方法論
——我的VS.NET學(xué)習(xí)之旅
屠恩海(SunHai)
開發(fā)工具:Microsoft Visual Studio .NET 2003
操作系統(tǒng):Windows XP
題記:即使你沒(méi)有一點(diǎn)編程經(jīng)驗(yàn),只要你愿意,并理解本文介紹的學(xué)習(xí)方法,你也可以象作者一樣輕松、愉快地步入程序設(shè)計(jì)之門。讓我們一起開始激動(dòng)人心的VS.NET之旅。
在26歲的時(shí)候,給自己定下目標(biāo),35歲之前必須掌英語(yǔ)和程序設(shè)計(jì)。至今剛過(guò)而立,程序和英語(yǔ)都學(xué)得不怎么樣,對(duì)學(xué)習(xí)方法倒是有所體悟,愿與大家分享。
在此先介紹一下我的情況。26歲前主要從事語(yǔ)文教學(xué),對(duì)計(jì)算機(jī)及英語(yǔ)可以說(shuō)一竅不通。說(shuō)出來(lái)可能讓您笑話:計(jì)算機(jī)不會(huì)上網(wǎng);英語(yǔ)不認(rèn)識(shí)音標(biāo)。我這人水平雖然不怎樣,志向卻比天高,下決心改變自己,說(shuō)干就干,花7000大洋購(gòu)來(lái)電腦,開始自學(xué)計(jì)算機(jī)。26歲,人生翻開新篇章。
首先把自家電腦來(lái)個(gè)開膛破肚,把硬件拆了裝,裝了拆(可憐我的主板,修了幾次,還是報(bào)廢;顯卡由于帶電插拔燒斷了“腳”,還是手機(jī)店的朋友幫忙焊接上的)。為了從網(wǎng)上快速查找到需要的教程文章,忍痛每月花100大洋窄帶包月,想當(dāng)時(shí)Down個(gè)X片足足用了兩天兩夜,結(jié)果下集只有聲音沒(méi)有圖像,還把他聽完,嗚乎!
我一向提倡在工作中學(xué)習(xí),學(xué)的東西要和工作相關(guān),工作和學(xué)習(xí)互相促進(jìn)。做語(yǔ)文教師雖也可以自學(xué)計(jì)算機(jī),但我覺(jué)得進(jìn)程太慢了(那時(shí)我所在學(xué)校還未設(shè)計(jì)算機(jī)課程)。于是,剛學(xué)計(jì)算機(jī)不到半年的人“一不小心”就成了電腦教師。還好基本是入門級(jí)培訓(xùn),不過(guò)也逼著我學(xué)得更快。本來(lái)我是用拼音加加輸入法的,因?yàn)楣ぷ麝P(guān)系,只好改用五筆。全國(guó)計(jì)算機(jī)等級(jí)考試要考DOS,于是又學(xué)了DOS。本來(lái)用FrontPage做網(wǎng)頁(yè),現(xiàn)在改用Dreamweaver MX,還有FireWorks MX,Flash MX也懂一點(diǎn)。對(duì)著主板隨機(jī)手冊(cè)和英文詞典嘗試幾次,開機(jī)CMOS也可以進(jìn)出自如。什么系統(tǒng)優(yōu)化,GHOST系統(tǒng)備份都不在話下。做的網(wǎng)頁(yè)雖然界面不怎么樣,IP日訪問(wèn)量卻是每天300以上。直到29歲,對(duì)Windows應(yīng)用編程卻還是一點(diǎn)不懂,VB6刪了裝,裝了刪,反復(fù)幾次,覺(jué)得很難,始終未跨過(guò)編程第一道門檻。
前日跟在嵊州信息港工作的MM交流,言及在自學(xué)Visual Studio .NET編程,MM問(wèn):你在閉關(guān)學(xué)習(xí)嗎?我回答:你“贊助”學(xué)費(fèi)的話我也許會(huì)考慮考慮。是的,網(wǎng)絡(luò)是所大學(xué),最大的大學(xué),網(wǎng)絡(luò)可以改變世界,終將改變世界。網(wǎng)絡(luò)更可以改變?nèi)松梢宰屛覀兊膶W(xué)習(xí)生活無(wú)比精采,只要你懂得利用,善于利用。現(xiàn)在已是網(wǎng)絡(luò)時(shí)代,網(wǎng)絡(luò)交流基本彌補(bǔ)了自學(xué)的不足,網(wǎng)絡(luò)交流更有學(xué)校教育無(wú)可替代的優(yōu)點(diǎn)。
你看到這里,如果你沒(méi)有接觸過(guò)程序語(yǔ)言,想了解一下Visual Studio .NET是個(gè)什么“東東”,你會(huì)如何做?
第一,查手頭書籍,個(gè)人開個(gè)計(jì)算機(jī)圖書館是不現(xiàn)實(shí)的,要查找的知識(shí)往往在手頭書籍中找不到;
第二,打電話問(wèn)朋友,朋友懂不懂是個(gè)問(wèn)題,即使懂,他有沒(méi)有空?他有空,他不清楚你這邊的實(shí)際情況,他說(shuō)的并不一定是你想要的,或者你不一定聽得懂;
第三,上圖書館查資料;
第四,上書店;
第五,跑去問(wèn)老師;
第六,……
是的,傳統(tǒng)是這么做的。但現(xiàn)在是網(wǎng)絡(luò)時(shí)代了。你完全可能在不到一分鐘之內(nèi)找到你想要的答案。現(xiàn)在開啟你的電腦(前提是你不認(rèn)為購(gòu)買電腦是極大的浪費(fèi)),撥號(hào)上網(wǎng)(前提是你認(rèn)為有必要給電腦配置Modem并接入網(wǎng)絡(luò)),打開Internet Explorer,在地址欄輸入http://www.google.com,然后回車,在打開的頁(yè)面中間輸入框中敲入Visual Studio .NET 編程,注意中、英文中間有個(gè)空格。然后再回車,頁(yè)面顯示:共有 12,800 項(xiàng)查詢結(jié)果,這是第 1 - 10 項(xiàng)。 搜索用時(shí) 0.28 秒,怎么樣,還用我給你介紹Visual Studio .NET是什么東東嗎。你就盡情地點(diǎn)擊標(biāo)題,查看您需要的知識(shí)吧。
“軟件是一個(gè)過(guò)去的時(shí)代,Web Service將要來(lái)臨。”微軟高級(jí)副總裁李開復(fù)說(shuō),“Web Service本身可以說(shuō)是一個(gè)賭博,一個(gè)風(fēng)險(xiǎn);因?yàn)槟憧梢韵嘈牛部梢圆幌嘈胚@件事情的發(fā)生。我只能說(shuō)微軟把整個(gè)公司都賭下去了,我們賭的未來(lái)就是Web Service。” 你可不要告訴我你比蓋茨厲害多了。我們追求超越蓋茨不一定現(xiàn)實(shí),但我們可以早一步接觸網(wǎng)絡(luò),利用網(wǎng)絡(luò)。
第一點(diǎn)體會(huì):掌握計(jì)算機(jī)的基礎(chǔ)知識(shí),學(xué)會(huì)利用網(wǎng)絡(luò)來(lái)進(jìn)行學(xué)習(xí),特別是利用搜索引擎(如http://www.google.com)來(lái)查找你所需要的答案。
29歲,開始從事企業(yè)管理工作。由于工作的關(guān)系,要用到MicroSoft Office辦公軟件,Office辦公軟件中有個(gè) Visual Basic For Application (VBA)語(yǔ)言,是VB的一個(gè)子集,具備VB的所有優(yōu)點(diǎn),內(nèi)置于Office中,只能在Office中創(chuàng)建、編程和運(yùn)行,可以錄制宏并自動(dòng)轉(zhuǎn)換為代碼。由于初次接觸編程語(yǔ)言,感到自學(xué)VBA有難度。每逢在學(xué)習(xí)中遇到難題、困惑的時(shí)候,我就到會(huì)到網(wǎng)上尋找學(xué)習(xí)資源,尋找答案。很快就找到關(guān)于MicroSoft Office的極好社區(qū),如OfficeFans(http://www.officefans.net) , ExcelHome(http://club.excelhome.net/) ,于是立即在社區(qū)注冊(cè)名字,學(xué)習(xí)VBA時(shí)中碰到疑問(wèn)就到社區(qū)去問(wèn),每次都有網(wǎng)友熱心解答。
比如我的工作需要經(jīng)常在Excel工作表第十行前插入空白行,要先選取工作表,鼠標(biāo)指針定位到指定行,然后單擊右鍵,選“插入”。重復(fù)操作,不勝其煩。于是在OfficeFans提問(wèn),經(jīng)版主kengzeng指點(diǎn),得到如下VBA代碼:
Sub insert() Sheets("sheet2").Rows("10:10").Insert End Sub |
原來(lái)要四步操作,現(xiàn)在一按快捷鍵就完成了。我原來(lái)并不懂VBA,對(duì)“集合”、“對(duì)象”、“方法”、“屬性”、“事件”、“枚舉”等編程概念也不甚了了,但由于有網(wǎng)上高手的指點(diǎn)、幫助,我仍舊可以在工作中應(yīng)用VBA,多次應(yīng)用下來(lái),用到的一些VBA代碼不去死記也差不多會(huì)背了,對(duì)VBA的一些概念、理論開始有所了解。
萬(wàn)事開頭難。學(xué)習(xí)一開始碰到難題,如果解決不掉,就可能從此放棄學(xué)習(xí)了,如果這時(shí)有熱心人解答他的疑問(wèn),然后在實(shí)際中立即可以應(yīng)用新知識(shí),新知識(shí)得到了即時(shí)鞏固,學(xué)習(xí)的興趣得到激發(fā)和增強(qiáng),學(xué)習(xí)就得以繼續(xù)和深化。當(dāng)然,對(duì)于有“懸梁刺股”精神的朋友,自己看書刻苦鉆研也可能會(huì)解決所有疑難問(wèn)題,但那畢竟是極少數(shù),我想多數(shù)人是象我這樣的普通人。
來(lái)而不往非禮也。在網(wǎng)上得到諸多大俠的指點(diǎn),總感到好像欠了誰(shuí)什么似的,就想到編一本電子書,把常見的Excel VBA學(xué)習(xí)教程集中到一起,可以幫助初學(xué)者快速入門。 2003年6月較空閑,剛好自己對(duì)Html語(yǔ)法也懂一點(diǎn),就花了二周的時(shí)間,搜集整理了一本電子書,叫《Excel 應(yīng)用寶典》,其中重點(diǎn)內(nèi)容是Excel VBA。把電子書放到OfficeFans上供網(wǎng)友下載,極受歡迎。我為什么編這本電子書呢?真的是比較空閑的緣故?有空去泡MM不是很好,何必去做枯燥的文字整理工作,其實(shí)我是存有“私心”的?
什么“私心”?這叫幫人即幫己,助人即助己。“佛”渡人其實(shí)也是為了渡己啊。我為了領(lǐng)悟這個(gè)道理,諸子百家,佛道儒易醫(yī),無(wú)所不涉,并在生活中曲折浮沉,這樣還是用了“30年”時(shí)間(太夸張了,一出生就……?呵呵),各位比我聰明,應(yīng)該早就明白此理。
為什么助人即助己?
在學(xué)術(shù)上幫助別人,指點(diǎn)別人,就要站在別人的角度考慮,思考別人的思考,打破了小我的思維局限。
從信息角度講,個(gè)人自修,知識(shí)的附加信息量較小,而在幫助別人過(guò)程中,存在人與人的信息交流,在信息交流中,知識(shí)信息得到強(qiáng)化。
舉一個(gè)例子,小孩子生活在英語(yǔ)環(huán)境中,3歲即口語(yǔ)流利,而我們的學(xué)校教育,大學(xué)畢業(yè),英語(yǔ)學(xué)了十多年,還是啞巴英語(yǔ)的大有人在,為什么?
小孩子記一個(gè)單詞或句子,是在和外界信息交流中記憶的,確切地說(shuō),小孩子記住了當(dāng)時(shí)信息交流的情境,通過(guò)情境的自然記憶實(shí)現(xiàn)單詞或句子的自然記憶。學(xué)習(xí)口語(yǔ)如此,學(xué)習(xí)編程何嘗不如此呢?你在某個(gè)問(wèn)題上指點(diǎn)過(guò)別人,你的記憶印象可能就特別深,如果是個(gè)人看書自學(xué),對(duì)于某個(gè)問(wèn)題當(dāng)時(shí)雖然理解,但附助記憶的情境信息量很小,時(shí)間長(zhǎng)了就容易遺忘。
所以,在學(xué)習(xí)編程的過(guò)程中,多和別人交流,多向高手虛心求教,多指點(diǎn)初學(xué)者,是在人為創(chuàng)造學(xué)習(xí)情境,在情境中強(qiáng)化記憶,強(qiáng)化理解。
李陽(yáng)提倡“瘋狂英語(yǔ)”學(xué)習(xí)法,我則提倡“瘋狂編程”學(xué)習(xí)法,也就是創(chuàng)造一切機(jī)會(huì)和別人交流編程經(jīng)驗(yàn),從交流中進(jìn)行強(qiáng)化訓(xùn)練和學(xué)習(xí)。也要注意,交流是手段不是目的。
交流編程經(jīng)驗(yàn)的途徑有很多:如論壇交流,媒體投稿,QQ、icq等通訊軟件交流。個(gè)人覺(jué)得CSDN為我們提供的“個(gè)人專欄”非常好,您可以一邊學(xué)習(xí)編程,一邊記下心得,通過(guò)個(gè)人專欄和大家交流。
VBA是VB的應(yīng)用分支,我在工作中應(yīng)用VBA,并自然地對(duì)VBA的概念、理論有了初步了解,這時(shí)再去看VB的教程,就感到分外親切。因?yàn)閂BA和VB在本質(zhì)上是沒(méi)有區(qū)別的。我終于可以跨入VB編程之門了。
第二點(diǎn)體會(huì):學(xué)習(xí)編程的過(guò)程中,既要善于向高手尋求幫助,更要樂(lè)于指導(dǎo)初學(xué)者。在交流中學(xué)習(xí)編程,這決不是宗教式道德說(shuō)教,而是極其重要的學(xué)習(xí)方法和學(xué)習(xí)手段。
程序語(yǔ)言種類很多,Pconline的工具平臺(tái)就列有VB/VB.NET、VC/C#、Delphi、Java、C++Builder等。到底學(xué)什么語(yǔ)言好呢?在Google輸入語(yǔ)言 比較,查到一篇文章《編程語(yǔ)言的宗教狂熱和十字軍東征》,第一段就是:
業(yè)余程序員最喜歡做的一件事就是對(duì)不同的語(yǔ)言進(jìn)行比較。Java是否比C++好?C#是否會(huì)成為終極語(yǔ)言?凡此種種。從專業(yè)程序員的角度看來(lái),這是最低級(jí)無(wú)趣的游戲。其一,在項(xiàng)目諸元確定之后,通常并沒(méi)有選擇語(yǔ)言的余地;其二,語(yǔ)言的生存本身就是一個(gè)達(dá)爾文主義的問(wèn)題:設(shè)若兩種語(yǔ)言有明確的可比較性,其中較劣的那一種必定早已被淘汰出局,又何來(lái)比較的必要?
我基于兩個(gè)原則選擇編程語(yǔ)言:
其一,適用自己的就是最好的。
其二,如果不知道什么適用自己(業(yè)余程序員開發(fā)軟件基于個(gè)人愛(ài)好,往往有此困惑),那么優(yōu)先選擇MicroSoft的開發(fā)語(yǔ)言。
我選的是VB(每個(gè)人的具體情況不,我的選擇不一定適合你),我目前只考慮開發(fā)普通Windows應(yīng)用軟件,并希望Windows應(yīng)有軟件的開發(fā)和MicroSoft VBA的應(yīng)用互相促進(jìn),說(shuō)穿了,是精力有限,最好是一種語(yǔ)言,到處應(yīng)用。
于是在網(wǎng)上Down了N多的電子書,收藏夾里VB網(wǎng)站一大堆。常去的VB網(wǎng)站有1000VB ,AppleVB , cnDevx ,51DoNET等,但我發(fā)現(xiàn),除了CSDN,VB社區(qū)論壇的人氣大多不旺。
第一次接觸VB,沒(méi)有基礎(chǔ),業(yè)余自學(xué),如何快速掌握VB編程?
如果我有足夠的時(shí)間(業(yè)余自學(xué),時(shí)間顯然不足),有足夠的耐心(恰恰我是耐心不那么足的人),可以按照教程一個(gè)一個(gè)控件學(xué)習(xí)、練習(xí),這個(gè)過(guò)程無(wú)疑是有益的,但對(duì)我來(lái)說(shuō)顯然是過(guò)于枯燥的。或許如此下去,半年以后,我的VB基礎(chǔ)比較好了,但可能不到半年,早就被我放棄。這就要另辟蹊徑。我的設(shè)想是,一開始就定下一個(gè)軟件項(xiàng)目,帶著目的去學(xué),以一個(gè)控件為核心,在完成項(xiàng)目的過(guò)程中,逐步掌握VB控件的使用和編程基本理論。項(xiàng)目基本完成的時(shí)候,VB編程也就入門了。由于是帶著項(xiàng)目去學(xué),目的明確,學(xué)習(xí)過(guò)程就不會(huì)枯燥。如果你做共享軟件,你的項(xiàng)目創(chuàng)意又比較好,你VB編程入之門之日,也許你的軟件也就可以為你帶來(lái)Money了,呵呵!
開發(fā)一個(gè)什么樣的軟件呢? SUN提出了激動(dòng)人心的口號(hào):“網(wǎng)絡(luò)就是計(jì)算機(jī)”。計(jì)算機(jī)的應(yīng)用主要在于網(wǎng)絡(luò),于是定位于開發(fā)網(wǎng)絡(luò)軟件。我經(jīng)常到網(wǎng)絡(luò)社區(qū)論壇交流,注冊(cè)時(shí)要一項(xiàng)項(xiàng)填寫信息,發(fā)言時(shí)也要一項(xiàng)項(xiàng)填寫信息,感覺(jué)很費(fèi)時(shí)間,打算自己編軟件來(lái)實(shí)現(xiàn)自動(dòng)注冊(cè),自動(dòng)發(fā)言。
2003年5月學(xué)VBA時(shí)想用VBA實(shí)現(xiàn)在論壇自動(dòng)注冊(cè)和發(fā)言,實(shí)現(xiàn)起來(lái)有難度,就在網(wǎng)上找替代軟件,找到了“按鍵精靈”(http://www.vrbrothers.com/cn/qmacro),按鍵精靈是一個(gè)模擬鼠標(biāo)鍵盤動(dòng)作的軟件。通過(guò)制作腳本,可以讓按鍵精靈代替您的雙手,自動(dòng)執(zhí)行一系列鼠標(biāo)鍵盤的動(dòng)作。 覺(jué)得很不錯(cuò),就編寫了一個(gè)腳本,用按鍵精靈自動(dòng)實(shí)現(xiàn)如下功能:打開Internet Explorer,輸入并打開網(wǎng)址,移動(dòng)鼠標(biāo)到指定座標(biāo),輸入字符,然后按回車完成注冊(cè)發(fā)言。比起手工輸入,用按鍵精靈省力不少,但是不同網(wǎng)站,輸入框的座標(biāo)不同,要手動(dòng)抓取,有沒(méi)有更方便的軟件呢?按鍵精靈社區(qū)里有人講到EzScript(http://ezscript.seed.cx/)功能更多,試用后發(fā)現(xiàn)在WindowsXP里反應(yīng)不靈敏,再在Google狂搜,找到了比按鍵精靈更好的軟件PCWorker(http://www.pcworker.net) 。PCWorker配合網(wǎng)絡(luò)填表軟件FORMGHOST ,再加上MyIE,可實(shí)現(xiàn)雙擊注冊(cè)或發(fā)言,需要的話,還可在標(biāo)題加上隨機(jī)數(shù),而且在PCWorker中代碼的可讀性較強(qiáng),且作者能及時(shí)聽取網(wǎng)友意見對(duì)軟件加以改進(jìn)。
PCWorker雖然好用,但要讀取識(shí)別碼圖片上的數(shù)字,這是PCWorker類軟件不能勝任的。于是決心用VB6來(lái)實(shí)現(xiàn)所有自己想要實(shí)現(xiàn)的功能。2003年10月開始學(xué)習(xí)VB6,到11月半,項(xiàng)目基本完成。我是怎么做的呢?
首先瀏覽各VB網(wǎng)站有關(guān)文章,發(fā)現(xiàn)用WebBrowser控件能實(shí)現(xiàn)我所欲求的功能。
其次,大量搜集WebBrowser控件相關(guān)文章和代碼。
用Google搜尋。如用“WebBrowser”為關(guān)鍵詞搜索,共有 216,000 項(xiàng)查詢結(jié)果 。
CSDN論壇搜索。導(dǎo)航到http://expert.csdn.net/Expert/Forum.asp,登陸論壇,點(diǎn)擊“搜索”,選“全部論壇”,點(diǎn)選“最新數(shù)據(jù)搜索”,用“WebBrowser”為關(guān)鍵詞,然后點(diǎn)擊“對(duì)選擇的大類進(jìn)行搜索”,哇,有好幾百篇有關(guān)“WebBrowser”的問(wèn)答。
在CSDN論壇 作全文檢索,尋找更多有檢值的內(nèi)容。
CSDN文檔搜索,導(dǎo)航到http://www.csdn.net/develop,在右上角搜索輸入框輸入"WebBrowser",選擇“文檔標(biāo)題”,再單擊“搜索”,我得到30篇有關(guān)“WebBrowser"相關(guān)文檔。
在實(shí)際編程中遇到困難,還可以到CSDN論壇提問(wèn),尋求幫助。我就曾在CSDN論壇問(wèn)了不下十個(gè)有關(guān)Webbrowser有關(guān)問(wèn)題,并都得到了解答。
由于善于運(yùn)用以上三步,1個(gè)半月時(shí)間,我的軟件基本出爐,VB編程也已基本入門。軟件實(shí)現(xiàn)原理是,用WebBrowser控件,先Navigate到指定網(wǎng)址,然后填寫表單。主要代碼如下:
Private Sub cmdfill_click() '點(diǎn)擊按鈕開始發(fā)言 On Error Resume Next Dim vdoc As IHTMLDocument2 Dim vTag
Dim i As Integer If Not brow.Busy Then '如果下載完成,就執(zhí)行下面程序 Set vdoc = brow.Document For i = 0 To vdoc.All.Length - 1 '檢測(cè)所有標(biāo)簽 If UCase(vdoc.All(i).tagName) = "INPUT" Or UCase(vdoc.All(i).tagName) = "TEXTAREA" Then '找到input標(biāo)簽 Set vTag = vdoc.All(i) If vTag.Type = "text" Or vTag.Type = "password" Then '看看是不是我們需要的 Select Case vTag.Name Case "name" vTag.Value = "sunHai" Case "passwd" vTag.Value = "sunHaiGood" Case "subject" '寫標(biāo)題,不同的網(wǎng)頁(yè)表單,vTage.name的值不同,要查看網(wǎng)頁(yè)源碼修改 vTag.Value = "Hello,sunHai!" End Select
'ElseIf vTag.Type = "submit" And vTag.Value = "發(fā)表" Then '找到發(fā)表按鈕。 ' vTag.Click End If End If Next i
vdoc.Forms(0).submit '也可以用這句來(lái)提交表單 End If End Sub
|
第三點(diǎn)體會(huì):從應(yīng)用入手,從解決實(shí)際問(wèn)題出發(fā),在完成項(xiàng)目的過(guò)程中,逐步掌握控件的使用技巧和編程基本理論。
在學(xué)習(xí)VB6的同時(shí)自然接觸到 Microsoft Visual Studio .NET(簡(jiǎn)稱VS.NET)。在十年之前,Visual Basic 1.0 成為數(shù)以百萬(wàn)計(jì)的開發(fā)人員的革命性的應(yīng)用程序開發(fā)語(yǔ)言。現(xiàn)在,Visual Studio .NET 為未來(lái)的十年做好了準(zhǔn)備(有點(diǎn)象為MicroSoft打廣告,你說(shuō)呢),VS.NE是用于創(chuàng)建下一代應(yīng)用程序的理想而又現(xiàn)實(shí)的開發(fā)工具,是一個(gè)從一開始就是為 XML Web 服務(wù)創(chuàng)建的開發(fā)環(huán)境。通過(guò)允許應(yīng)用程序通過(guò) Internet 溝通和共享數(shù)據(jù),XML Web 服務(wù)使業(yè)務(wù)能夠從 Internet 轉(zhuǎn)換為用于集成和傳送它們的核心商業(yè)價(jià)值的真正平臺(tái)。Visual Studio .NET 和 XML Web 服務(wù)提供簡(jiǎn)單、靈活、基于標(biāo)準(zhǔn)的模型,允許開發(fā)人員從新的和現(xiàn)有的代碼匯編應(yīng)用程序,而與平臺(tái)、編程語(yǔ)言或?qū)ο竽P蜔o(wú)關(guān)。
VS.NET 2003中主要有包含以下幾種開發(fā)工具:
Visual Basic .NET 2003
Visual C# .NET 2003
Visual C++ .NET 2003
Visual J# .NET 2003
核心是 Visual Basic .NET 2003和Visual C# .NET 2003。我主要用VB.NET。在VS.NET中的不同開發(fā)工具的差別主要表現(xiàn)為語(yǔ)法的差異,因此,用VB.NET的人,一般也可以看懂C#.NET的代碼,反之亦然。
有人說(shuō),“學(xué)習(xí)要面向未來(lái)”,2003年12月,我的主要開發(fā)工具從VB6轉(zhuǎn)為VB.NET,2004年1月1日,把我新開發(fā)的軟件從VB6語(yǔ)言轉(zhuǎn)寫為VB.NET語(yǔ)言,并正式命名為網(wǎng)絡(luò)廣告王(AdKing)。
在轉(zhuǎn)向VB.NET的時(shí)候,我考慮:
第一、VS.NET的本質(zhì)是什么?
VS.NET是從一開始就是為 XML Web 服務(wù)創(chuàng)建的開發(fā)環(huán)境。通過(guò)允許應(yīng)用程序通過(guò) Internet 溝通和共享數(shù)據(jù),XML Web 服務(wù)使業(yè)務(wù)能夠從 Internet 轉(zhuǎn)換為用于集成和傳送它們的核心商業(yè)價(jià)值的真正平臺(tái)。
學(xué)習(xí)要面向未來(lái),就要學(xué)習(xí)最新的技術(shù),現(xiàn)在的學(xué)習(xí)為將來(lái)的應(yīng)用作鋪墊。我的軟件要突出兩點(diǎn),一是基于Internet的應(yīng)用,二是要應(yīng)用XML技術(shù)。這樣,我就可以在應(yīng)用中盡快掌握新技術(shù),否則,只是為學(xué)習(xí)而學(xué)習(xí),無(wú)疑會(huì)是比較枯燥,也容易遺忘。
第二、原來(lái)用VB6寫的AdKing,主要用到WebBrowser控件,網(wǎng)頁(yè)加載速度慢,會(huì)下載圖片,F(xiàn)lash等許多不需要的東西,在VS.NET中必須用其他方法實(shí)現(xiàn)同樣功能。
在CSDN諸位朋友的幫助下,并參考許多資料,我的AdKing已基本具備.NET特征。
1.應(yīng)用了XML技術(shù)
VB6中,INI文件通常用來(lái)保存系統(tǒng)信息、配置信息,讀寫INI文件要用到API函數(shù),使用起來(lái)不是很方便。在VS.NET中,已經(jīng)沒(méi)有必要用INI文件來(lái)保存和讀取一些信息了,可以改用VS.NET中的讀寫XML文件的類。而且,在VS.NET 2003的后續(xù)版本中,處理XML有關(guān)功能將得到進(jìn)一步增強(qiáng)。
讀取XML到DataGrid代碼:
Public MyXMLDataSet As New DataSet("XMLDataSet") ' DataSet 是數(shù)據(jù)的一種內(nèi)存駐留表示形式,無(wú)論它包含的數(shù)據(jù)'來(lái)自什么數(shù)據(jù)源,它都會(huì)提供一致的關(guān)系編程模型。一個(gè) 'DataSet 表示整個(gè)數(shù)據(jù)集,其中包含對(duì)數(shù)據(jù)進(jìn)行包含、排序和約束的'表以及表間的關(guān)系。 MyXMLDataSet.ReadXml("regid.xml") '讀入XML文件 form1.DefInstance.DataGrid1.DataSource = MyXMLDataSet 'DefInstance是form1的共享屬性, 我們不用創(chuàng)建實(shí)'例就可以直接用‘類名 .共享成員'的方法進(jìn)行調(diào)用 , 《Henry 的 VB.NET 之旅 ( 三 )— 共享成員》中有論述。 strName = MyXMLDataSet.Tables(0).Rows(0).Item("name").ToString ' 從DataGrid中讀取用戶名信息。 |
從DataGrid1更新信息到XML文件代碼:
Dim MyXmlDataSet As DataSet MyXmlDataSet = CType(DataGrid1.DataSource, DataSet) '類型轉(zhuǎn)換 MyXmlDataSet.WriteXml("regid.xml") '把信息寫入XML文件 |
如果不用DataGrid控件,讀寫XML文件中特定信息可以更簡(jiǎn)單:
Dim xmlInfo As New XmlDocument xmlInfo.Load("info.xml") '載入XML文件 Dim str As string=xmlInfo.Item("RegInfo").Item("name").InnerText '用“Item”可以逐級(jí)往下讀數(shù)據(jù) xmlInfo.Item("RegInfo").Item("pass").InnerText="MyPass" xmlInfo.Save("info.xml") '保存信息到xml文件 |
我原來(lái)打算用INI格式來(lái)保存AdKing的注冊(cè)信息和發(fā)言信息,但是,一則讀寫INI不是很方便,二則XML在軟件開發(fā)中越趨重要,于是一開始就用XML文件來(lái)保存有關(guān)信息。在剛接觸VS.NET時(shí)本不知XML為何物,現(xiàn)在可自如讀寫XML,是否有點(diǎn)“高手”的感覺(jué)呢?(自我陶醉一下先)
2.用HttpWebResponse相關(guān)類GET和POST信息
用GET方式讀取網(wǎng)頁(yè)源代碼:
Dim httpReq As System.Net.HttpWebRequest 'HttpWebRequest 類對(duì) WebRequest 中定義的屬性和方法提供支持',也對(duì)使用戶能夠直接與使用 HTTP 的服務(wù)器交互的附加屬性和方法提供支持。 Dim httpResp As System.Net.HttpWebResponse ' HttpWebResponse 類用于生成發(fā)送 HTTP 請(qǐng)求和接收 HTTP 響'應(yīng)的 HTTP 獨(dú)立客戶端應(yīng)用程序。 Dim url as String="http://sunhai.tianyablog.com" '這是我的小站,有空來(lái)坐坐 Dim httpURL As New System.Uri(url) httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest) httpReq.Method = "GET" httpResp = CType(httpReq.GetResponse(), HttpWebResponse) Dim reader As StreamReader = _ New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312")) '如是中文,要設(shè)置編碼格式為“GB2312”。 Dim respHTML As String = reader.ReadToEnd() 'respHTML就是網(wǎng)頁(yè)源代碼 httpResp.Close()
|
向服務(wù)器POST信息:
Dim httpUrl2 As New System.Uri("http://sunhai.tianyablog.com?" & "name=1&pass=6") ' “&”號(hào)后面是'注冊(cè)信息,改成你自己的 Dim req As HttpWebRequest req = CType(WebRequest.Create(httpUrl2), HttpWebRequest) req.Method = "POST" req.ContentType = "application/x-www-form-urlencoded" Dim bytesData() As Byte = System.Text.Encoding.ASCII.GetBytes("name=1&pass=6") req.ContentLength = bytesData.Length Dim postStream As Stream = req.GetRequestStream() postStream.Write(bytesData, 0, bytesData.Length) '以上為向網(wǎng)絡(luò)服務(wù)器POST信息
Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse) Dim reader As StreamReader = _ New StreamReader(res.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312")) Dim respHTML As String = reader.ReadToEnd() 'respHTML為POST后網(wǎng)絡(luò)服務(wù)器返回的信息 MsgBox(respHTML) '可用MsgBox查看返回的信息 res.Close()
|
3.用正則表達(dá)式從網(wǎng)頁(yè)源代碼中提取網(wǎng)址
得到網(wǎng)頁(yè)源代后,我們可以對(duì)源代碼進(jìn)行處理,比如提取其中的鏈接,Email地址,圖片地址,F(xiàn)lash等等。
Dim r As System.Text.RegularExpressions.Regex Dim m As System.Text.RegularExpressions.MatchCollection Dim respHtml As String = "http://www.NETsh.Net/subdomains/f_s_o.php?leibie=shangmao" '以這個(gè)地址舉例 strRegex = "http://([\w]+\.)+[\w]+(/[\w.?]+)+leibie[=]{1}[\w]+" '用這個(gè)正則表達(dá)式可以提取上面地址。通用'的提取鏈接正則表達(dá)式為“http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?”。 r = New System.Text.RegularExpressions.Regex(strRegex, System.Text.RegularExpressions.RegexOptions.IgnoreCase) m = r.Matches(respHTML) Dim i As Integer For i = 0 To m.Count - 1 MsgBox(m(i).Value) Next i
|
第四點(diǎn)體會(huì):要學(xué)習(xí)新技術(shù),盡量在你的項(xiàng)目中應(yīng)用新技術(shù),在應(yīng)用中學(xué)習(xí),進(jìn)步最快。
現(xiàn)在我的AdKing已經(jīng)用.NET全面改寫,并用上繼承,重載,多線程等,所有這些在VB6中能否實(shí)現(xiàn),從VB6轉(zhuǎn)到.NET是否明智?
從2003年10月開始學(xué)習(xí)VB6編程,11月半用VB6完成第1個(gè)軟件——AdKing,到現(xiàn)在(20040117)用VB.NET技術(shù)改寫AdKing。可算基本入門。全部用的業(yè)余時(shí)間,沒(méi)有當(dāng)面請(qǐng)教一個(gè)老師。原來(lái)沒(méi)有一點(diǎn)編程基礎(chǔ)。如果學(xué)得還算順利的話,很大部分要?dú)w功于掌握并利用大量網(wǎng)絡(luò)資源。下面列出我所掌握的VS.NET網(wǎng)絡(luò)學(xué)習(xí)資源,有什么遺漏希望大家能指出。
1.微軟支持
在你學(xué)習(xí)VS.NET的過(guò)程中,有疑問(wèn)首先要向MicroSoft求助。如果你不懂得利用MicroSoft提供的龐大的學(xué)習(xí)資源,我要告訴你,你很不幸,你舍近求遠(yuǎn)了。
(1)首先,你要安裝MSDN,他比所有VS.NET書籍詳細(xì)。我為了裝MSDN,可是犧犧了我的98和XP雙啟動(dòng),改成WindowsXP單系統(tǒng)。裝了MSDN后,你要學(xué)習(xí)正則表達(dá)式,VS.NET 2003中點(diǎn)擊“幫助”,再點(diǎn)擊“搜索”,然后輸入“正則”,一回車,哇,找到470個(gè)主題,這下你慢慢研究吧。實(shí)在研究不透,也不用急,還有Google和CSDN呢。
(2)在線Microsoft .NET 框架 SDK 快速入門教程(http://chs.gotdotnet.com/QuickStart),可配合MSDN使用。分三塊內(nèi)容, ASP.NET | Windows 窗體 | 如何...?常見任務(wù) 。 “常見任務(wù)快速入門”旨在幫助您快速找到常見編程問(wèn)題的答案。
(3)微軟中國(guó)社區(qū)(http://www.mscommunity.com/Profile/)。在社區(qū)注冊(cè),有問(wèn)題就到社區(qū)去提問(wèn)吧。
(4)在線中文MSDN(http://www.microsoft.com/china/MSDN/default.asp);在線英文MSDN(http://msdn.microsoft.com/),考考你的E文,不過(guò)有金山詞霸在,我都不怕,你還用怕什么呢!
(5).NET主頁(yè)(http://www.microsoft.com/china/net)
(6)Visual Studio .NET主頁(yè)(http://www.microsoft.com/china/msdn/vstudio/prodinfo/overview.asp)。
為什么選擇VS.NET,為什么看好VS.NET,看看MicroSoft的Help文檔有多詳盡就知道了。如果你不去利用MicroSoft提供的龐大的Help資源,是不是有點(diǎn)對(duì)不起蓋茨呢!
2.CSDN http://www.csdn.net/
CSDN號(hào)稱中國(guó)最大的開發(fā)者網(wǎng)絡(luò),確實(shí)不假。我最常去的是CSDN的
文檔(http://www.csdn.net/develop/)
論壇(http://expert.csdn.net/expert/forum.asp)
只要你善于利用搜索功能,你在開發(fā)中遇到的多數(shù)問(wèn)題可在文檔和論壇中找到答案。如果你在開發(fā)過(guò)程中遇到疑難,而你又認(rèn)為 BillGates幫不上你的忙,那么,你就上CSDN吧,一定會(huì)讓你滿意的。
教你兩個(gè)絕招,第一招,是“搜索大法”。遇到問(wèn)題,首先是在CSDN的文檔和論壇進(jìn)行搜索,看有無(wú)類似答案。如不行,再下一招。
第二招,“提問(wèn)大法”,只要有禮貌有誠(chéng)意地在論壇提問(wèn),一定有許多人樂(lè)于回答你的問(wèn)題。
3.其他相關(guān)網(wǎng)站
有不少網(wǎng)站開辟VS.NET專欄,常去看看,必有收獲。
pconline跟我學(xué)NET專欄(http://www.pconline.com.cn/pcedu/empolder/net/)
yesky的Visual Studio.NET專欄(http://www.yesky.com/SoftChannel/72342380467978240/index.shtml)
ccidnet的NET專區(qū)(http://tech.ccidnet.com/pub/column/c340.html)
4.資料下載
如果不是包月上網(wǎng),那么下載大量資源,再斷線慢慢研究就很有必要了。
網(wǎng)友提供的大量VS.NET資源下載(ftp://qydn.vicp.net)
北京希望電子出版社圖書素材資料下載(http://www.b-xr.com/bbs.htm)
清華大學(xué)出版社VS.NET源碼下載(http://www.wenyuan.com.cn/xiazai.htm)
5.國(guó)外資源
如果你的E文不錯(cuò),不妨上E文網(wǎng)站去取經(jīng)。
http://www.startvbdotnet.com
http://www.vbdotnetheaven.com
http://www.vbcity.com/
http://www.vbip.com
http://www.a1vbcode.com/
http://searchvb.techtarget.com/
http://builder.com.com
http://www.codeproject.com
http://www.planet-source-code.com/
http://sourceforge.net/
http://www.syncfusion.com/FAQ/WinForms/
http://www.123aspx.com
http://panopticoncentral.net/
http://www.regexplib.com/
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
http://www.only4gurus.com/v2
http://www.gotdotnet.com
http://www.programmersheaven.com/
http://www.aspnetpro.com
http://www.dotnetgenius.com/
http://www.devx.com/dotnet
http://www.devcity.net
http://www.devhood.com
http://www.c-sharpcorner.com/
http://www.csharphelp.com/
http://authors.aspalliance.com/aldotnet/examples/translate.aspx
http://www.dotnet247.com
http://www.datagridgirl.com
http://www.codestudy.com
6.其他特色網(wǎng)站、專欄
CSDN上Latitude的VS.NET專欄(http://www.csdn.net/develop/author/netauthor/Latitude/)
【孟憲會(huì)之精彩世界】(http://xml.sz.luohuedu.net/xml/)
DotNet中華網(wǎng)(http://www.aspxcn.com/)
ASP酷(http://www.aspcool.com/)
http://www.chinaaspx.com
http://www.webasp.net/
http://218.56.11.178:8009/ 海波.NET的水晶報(bào)表專欄
http://www.aspx8.cn/ asp.net資源吧
http://www.cnblogs.com/ 博客園
http://dotnet.mblogger.cn
http://blog.joycode.com/ 博客堂
當(dāng)然,還有一個(gè)地球人都知道的,全球最大的知識(shí)倉(cāng)庫(kù),我不說(shuō),你也早就應(yīng)該知道的,那不是http://www.google.com又是什么!
第五點(diǎn)體會(huì):掌握并利用大量網(wǎng)絡(luò)資源來(lái)輔助VS.NET的學(xué)習(xí),你將事半功倍。