这是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环境

asp.net 4.0是最新版本,建议从这里开始。这个没什么好说的了,既然是新来的,就一定选新的技术,等学会了,也就变成成熟技术了;新学东西,就要学新东西,这是本人现在的立场,之前吃过亏,曾经抱着DOS和TurboC++不放,一直坚持到1999年……

MVC现在最新版本是MVC3。曾有文指出MVC很难学,而Code Behind相对容易理解。同意但同时应注意,这是针对首次学习语言就是asp.net/C#的人说的,如果本来学过C++,尤其曾经在C++中尝试MVC思想的人,则似乎更容易理解asp.net MVC的做法,那点层次也绕不晕人,反而能以“物以稀为贵”增加竞争力。

MVC现在赫然列在ASP首页的醒目位置,日后必是MS平台的主流。

ASP官方主页在这里,下载/讨论都有;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上下载和安装SVNServer及Tortoise的过程在这里,如果不用金山快盘,这些就够了。

金山快盘在这里,刚开始只给2G空间,但稍微上传点东西或每天登陆,就能获得更多空间,现在本人稀里糊涂就有8G空间了,上限可达15G,完全够用。金山是做安全出身的,把密码设好点,基本不用担心安全问题。这么大的空间,除了代码,顺便把很多项目文档都一股脑扔到里边了,才用了1.5G。建议企业也使用金山快盘做一个异地备份,安全放心。

后来发现自己不会玩Aphachi,所以无法让别人访问我的服务器,而且本地服务器也没有外网IP,在外面无法访问,于是后来改成使用Hosting的免费服务器。

免费Hosting SVN服务器在这里:http://offers.assembla.com/free-subversion-hosting/,空间是1G,无用户数限制,日后可以花钱升级,也可以不升级。

 

到此为止,基本上所需的环境就全部搭建起来了。

当然这一过程宜循序渐进,比如开始可以直接用金山快盘压缩-拷贝-粘贴-上传备份代码。SVN可以等以后在弄,先把前面开发必备的东西搭起来,编写个Hello World给自己打打气再说。

 

发布工具

我自己的产品现在还没有在外网发布过,但是却发布过别人开发的产品,就是www.Scrum.org.cn 上的MojoPortal(一款有点类似WordExpress的建站工具,但是是用Asp.net开发的,和咱们自己开发的软件是一个东西)。

发布工具优先选择WebMatrix,比VS2010中自带的好。它的工作原理,就是把某个目录中的内容,发布到目的机器上,简单得令人发指。

我在这里写过一个简单的文章(如果不用MojoPortal/SSCE什么的就无视之),记得第二次发布的时候,不要发布数据库,因为目的机器上面的数据才是最新的。

如果数据库结构变化了,只想更新结构不想更新数据……我也不知道怎么弄,还没到这个地步,呵呵。

SSCE可以被发布到没有安装任何数据库的目标机器上,很不错。

 

另有一篇“转型学习过程”,尚未完成,敬请留意(日后会有一个链接加载本文中)。