這是C++程式員的C#轉型手冊的第二篇。
以下是一年來從C++轉型到C#的經曆總結,如果你也正在這條路上,可做參考。
本人之前曾經算是個C++高手,之前用過Fortron/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 4.0是最新版本,建議從這裡開始。這個沒什麼好說的了,既然是新來的,就一定選新的技術,等學會了,也就變成成熟技術了;新學東西,就要學新東西,這是本人現在的立場,之前吃過虧,曾經抱着DOS和TurboC++不放,一直堅持到1999年……
MVC現在最新版本是MVC3。曾有文指出MVC很難學,而Code Behind相對容易了解。同意但同時應注意,這是針對首次學習語言就是asp.net/C#的人說的,如果本來學過C++,尤其曾經在C++中嘗試MVC思想的人,則似乎更容易了解asp.net MVC的做法,那點層次也繞不暈人,反而能以“物以稀為貴”增加競争力。
MVC現在赫然列在ASP首頁的醒目位置,日後必是MS平台的主流。
對筆者而言,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就不用擔心這些。
Win7家庭進階版聽起來很不專業,但到現在為止還沒有出現任何開發問題,到現在還沒有在本機部署過,不知道是否可以當作Server用(如有知道的請回帖,謝謝),但至少開發起來沒有任何問題。
IE9肯定是不二選擇,調試環境比IE8友善。試過Chrome,發現MS肯定做了什麼手腳,總之覺得沒有IE9友善。
裡邊有線上調試器,直接在裡邊實驗,直到滿意為止,非常棒的網站。
中文網站有些内容不全,比如CSS3/Html5等,找不到就到英文網站看看。
JQuery是用來産生一些動畫效果的,比如滑鼠滑過的時候顯示某些内容,點選的時候讓某些東西顯示或不顯示,實作拖拽,等等。這一切發生在浏覽器裡邊,無需驚擾背景。
JQuery是一種JavaScript工具包,而JQueryUI則是其處理界面部分的一個子集。後者能處理更複雜的事情,但也很難寫。筆者到現在沒好好寫過JavaScript(以後肯定免不了),如果不想深學,可以先學一點JQueryUI,一般情況下基本夠用。
一個人開發也要配置管理工具的,否則很容易出事。
開始我使用SVN Server + TortoiseSVN + 金山快盤,大緻玩法如下:
先找一台電腦做伺服器,安裝上金山快盤,會産生一個20G的虛拟分區;把SVN Server安裝在這個分區上;然後再在用戶端機器上安裝Tortoise。每次提及變化,金山快盤都會将變化上傳到金山的伺服器上,是以即使本地的伺服器損毀,資料一樣在,很“雲”。
後來發現自己不會玩Aphachi,是以無法讓别人通路我的伺服器,而且本地伺服器也沒有外網IP,在外面無法通路,于是後來改成使用Hosting的免費伺服器。
到此為止,基本上所需的環境就全部搭建起來了。
釋出工具優先選擇WebMatrix,比VS2010中自帶的好。它的工作原理,就是把某個目錄中的内容,釋出到目的機器上,簡單得令人發指。
如果資料庫結構變化了,隻想更新結構不想更新資料……我也不知道怎麼弄,還沒到這個地步,呵呵。
SSCE可以被釋出到沒有安裝任何資料庫的目标機器上,很不錯。
另有一篇“轉型學習過程”,尚未完成,敬請留意(日後會有一個連結加載本文中)。
本文轉自火星人陳勇 51CTO部落格,原文連結:http://blog.51cto.com/cheny/1100394