C++ 程序員的 C# 轉型手冊

作者: 陳勇  發布時間: 2011-10-28 14:40  閱讀: 8526 次  推薦: 13   原文鏈接   [收藏]  
摘要:以下是一年來從C++轉型到C#的經歷總結,如果你也正在這條路上,可做參考。

  第一部分

  本人之前曾經算是個C++高手,之前用過Fortran/Baisc/C,從C和C++居多,最后一句代碼寫在2003年的11月。主要編寫Server端的代碼,但和數據庫打交道很少,主要是業務模式、架構、底層這些內容;所學無外乎模板、虛函數、算法之類。

  到2010年2月開始重新建起編碼,不過選擇了C#,開始編寫Web程序,而且必須與數據庫打交道,中間遇到不少困難,也遇到不少新技術和新環境,與同在路上的大家分享。

  基本開發環境選擇

  當初選擇了ASP.NET 3.5 + MVC2 + LINQ + SSE(Sql Server Express)+ Win7家庭高級版 + IE9,現在一年半下來,沒有太后悔的地方。

  ASP.NET環境

  ASP.NET 4.0是最新版本,建議從這里開始。這個沒什么好說的了,既然是新來的,就一定選新的技術,等學會了,也就變成成熟技術了;新學東西,就要學新東西,這是本人現在的立場,之前吃過虧,曾經抱著DOS和TurboC++不放,一直堅持到1999年……

  MVC現在最新版本是MVC3。曾有文指出MVC很難學,而Code Behind相對容易理解。同意但同時應注意,這是針對首次學習語言就是ASP.NET/C#的人說的,如果本來學過C++,尤其曾經在C++中嘗試MVC思想的人,則似乎更容易理解ASP.NET MVC的做法,那點層次也繞不暈人,反而能以“物以稀為貴”增加競爭力。

  MVC現在赫然列在ASP.NET首頁的醒目位置,日后必是MS平臺的主流。

  ASP.NET官方主頁在這里,下載/討論都有;MVC3主要在這里,下載/教學/討論都有。

  數據庫環境

  對筆者而言,LINQ是個比較奇怪的東西,可以理解是“讓C#程序員不學習SQL就能訪問數據庫的方法”,非常推薦。個人在LINQ和EF(Entity Framework)中間做了很多猶豫,但最終結果是:除非做巨型的軟件,基本上LINQ就可以用,而且這東西幾乎沒有學習成本,說用就用。以后有需要,轉成EF也不浪費。

  SSE是SS的免費版本,可以支撐10G空間,對一般的企業應用而言足夠了,推薦在SSE上面做開發/部署,直到遇到實質性障礙為止。

  為什么不用MySql?選了LINQ,暫時只能選擇微軟系列的數據庫(或許已經出來LINQ to MySql了?沒注意),這個會造成一些困擾。但我因為那10G空間足夠用了,所以沒有看到MySQL與SSE的實際區別。

  建議開始可以關注一下SSCE(SQL Server Compat Edition),是一個微軟新推出的免安裝自驅動的數據庫,最大空間支持2G。如果當初微軟就發布了SSCE,我會選擇SSCE而不是SSE(需要安裝),SSCE與SSE的基本性能相同,有一些限制但不大,而且隨時可以轉為SSE。現在一些Hosting的網站要么只提供收費的SS,要么提供SSE但也收取費用,而SSCE就不用擔心這些。

  我的網站www.scrum.org.cn就是用的SSCE,此ISP提供的網站空間每月收費5美元,而Hosting的SSE也收費5美元,所以使用SSCE可節省掉這5美元,而幾乎沒有任何影響。

  LINQ是隨著VS2010一起安裝的,不用單獨安裝,不知道官方網站在哪,亂搜就能找到一些教材;SSE在這里;SSCE在這里;兩者的區別在這里;安裝VS2010+SSE有可能出錯,請先看這里

  操作系統和瀏覽器環境

  Win7家庭高級版聽起來很不專業,但到現在為止還沒有出現任何開發問題,到現在還沒有在本機部署過,不知道是否可以當作Server用,但至少開發起來沒有任何問題。

  IE9肯定是不二選擇,調試環境比IE8方便。試過Chrome,發現MS肯定做了什么手腳,總之覺得沒有IE9方便。

  IE9在這里,里邊有一些支持Html5/CSS3之類的內容,我還沒試過。

  其他開發工具

  Html

  筆者第一次學用Html編寫Web,所以遇到很多困難,不過沒買書,而是在http://www.w3schools.com/(英文)http://www.w3school.com.cn/(中文)學的,左上角學習入口。

  里邊有在線調試器,直接在里邊實驗,直到滿意為止,非常棒的網站。

  中文網站有些內容不全,比如CSS3/Html5等,找不到就到英文網站看看。

  JQuery和JQueryUI

  JQuery是用來產生一些動畫效果的,比如鼠標滑過的時候顯示某些內容,點擊的時候讓某些東西顯示或不顯示,實現拖拽,等等。這一切發生在瀏覽器里邊,無需驚擾后臺。

  JQuery是一種JavaScript工具包,而JQueryUI則是其處理界面部分的一個子集。后者能處理更復雜的事情,但也很難寫。筆者到現在沒好好寫過JavaScript(以后肯定免不了),如果不想深學,可以先學一點JQueryUI,一般情況下基本夠用。

  JQueryUI在這里,很多Demo可以直接拷貝過來用。JQuery則在這里,本人只路過過,還沒有真正用過。

  配置管理工具

  一個人開發也要配置管理工具的,否則很容易出事。

  開始我使用SVN Server + TortoiseSVN + 金山快盤,大致玩法如下:

  先找一臺電腦做服務器,安裝上金山快盤,會產生一個20G的虛擬分區;把SVN Server安裝在這個分區上;然后再在客戶端機器上安裝Tortoise。每次提及變化,金山快盤都會將變化上傳到金山的服務器上,因此即使本地的服務器損毀,數據一樣在,很“云”。

  在Windows上下載和安裝SVN Server及Tortoise的過程在這里,如果不用金山快盤,這些就夠了。

  金山快盤在這里,剛開始只給2G空間,但稍微上傳點東西或每天登陸,就能獲得更多空間,現在本人稀里糊涂就有8G空間了,上限可達15G,完全夠用。金山是做安全出身的,把密碼設好點,基本不用擔心安全問題。這么大的空間,除了代碼,順便把很多項目文檔都一股腦扔到里邊了,才用了1.5G。建議企業也使用金山快盤做一個異地備份,安全放心。

  后來發現自己不會玩Aphache,所以無法讓別人訪問我的服務器,而且本地服務器也沒有外網IP,在外面無法訪問,于是后來改成使用Hosting的免費服務器。

  免費Hosting SVN服務器在這里:http://offers.assembla.com/free-subversion-hosting/,空間是1G,無用戶數限制,日后可以花錢升級,也可以不升級。

  到此為止,基本上所需的環境就全部搭建起來了。

  當然這一過程宜循序漸進,比如開始可以直接用金山快盤壓縮-拷貝-粘貼-上傳備份代碼。SVN可以等以后在弄,先把前面開發必備的東西搭起來,編寫個Hello World給自己打打氣再說。

  發布工具

  我自己的產品現在還沒有在外網發布過,但是卻發布過別人開發的產品,就是 www.Scrum.org.cn 上的MojoPortal(一款有點類似WordPress的建站工具,但是是用Asp.net開發的,和咱們自己開發的軟件是一個東西)。

  發布工具優先選擇WebMatrix,比VS2010中自帶的好。它的工作原理,就是把某個目錄中的內容,發布到目的機器上,簡單得令人發指。

  我在這里寫過一個簡單的文章(如果不用MojoPortal/SSCE什么的就無視之),記得第二次發布的時候,不要發布數據庫,因為目的機器上面的數據才是最新的。

  如果數據庫結構變化了,只想更新結構不想更新數據……我也不知道怎么弄,還沒到這個地步,呵呵。

  SSCE可以被發布到沒有安裝任何數據庫的目標機器上,很不錯。

  第二部分

  為了學習C#,買過書,上過網,問過問題,找過人,有的有用,有的幫助很大,有的沒什么用,下面記錄了我自己的過程;每個人會有所不同,請靈活掌握。

  買什么書?

  買過一本C#的書,看了沒有一周就擱下,幾乎再也沒有翻動過,后來就送人了。

  C#和C++還是挺相似的,建議不要買書,而是常常逛逛網站,編編程序,時間長了就學會了。

  看什么網站?

  本人當年是看一本叫做《Nerd Dinner》的電子書,只有100多頁,但是卻從中同時學“會”了C#/MVC/ASP.NET/LINQ,當然所謂“會”,就是能手不著地地向前走,持續編寫代碼了。之后就沒有看過系統性的材料,而只徘徊于google/baidu。

  電子書下載在這里http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf,在線版本在這里http://www.asp.net/mvc/tutorials/introducing-the-nerddinner-tutorial

  微軟網站上有很詳盡的ASP.NET MVC學習材料,比當年的MSDN強多了,網址在這里:http://www.asp.net/mvc,可惜好像沒有中文版本。不過考慮到無非是在屏幕上編寫代碼的問題,就當啞巴遇到聾子,干了這么多年C++了,也應該能學會的。

  更多的學習資料,則在這里:http://www.asp.net/mvc/tutorials

  出了錯誤/問題到哪里找答案?

  最開始我在前一家公司時,總是找一位高手問(他當年也是CSDN專家,不過后來工作忙不常寫東西了),后來發現每次問他,他總是當場到Google去搜,于是就很少去找他了。把問題拷貝到百度/Google里邊,幾乎立刻就找到無數答案。

  推薦用VS2010英文版 + Google(英文Google:http://www.google.com/,如果被跳轉到中文Google,鏈接在中文Google的最左下角),因為很多很新的資料,都在國外先出現,順序經常是產品動向-產品發布-使用心得/問題問答-結集出書-翻譯成中文-有人看了-在百度上開始搜到相關內容。這個周期可能要2年的時間,所以對很新的技術而言,百度能搜到的內容比Google少很多。

  后來發現很多問題的答案,都指向兩個網站:一個是前面提到的ASP.NET,另外一個是http://stackoverflow.com/,當然別在這里練習英文寫作,而是在其右上角的搜索框里邊,把幾個關鍵詞如“mvc controller redirect privous page”敲進去,幾百上千個問過的問題就出來了,挑幾個看上去靠譜的打開,多數回答都帶有代碼,而那個"Answer“是綠色的是被選為標準答案的(和CSDN很類似)。

  如果還沒有找到答案,當然就可以來CSDN問問題了,不過是否有人會回答,何時回答,都不太受控,不如搜答案來得方便。是個沒辦法的辦法。

13
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()