在文章的开头,首先声明,这篇文章仅代表我个人的想法,并且只适合.NET的初学者,如果你已经有两年以上的开发经验,我劝你还是别看了,省得像看别人的代码那样边看边骂,呵呵。
我觉得,.NET这个东西,入门确实比较快,所以现在很多人都说,.NET程序员只会拖拖控件,没什么技术含量。我对这种看法不以为然,.NET技术确实把很多东西都集成在一块了,用起来很方便,界面上的很多东西,可也以拖拖控件,设几个属性,写几个事件,有时候就完事了。像这种项目,逻辑确实太简单了,但是,也不能为了有难度而有难度,而故意把精力放在界面上吧。其实,在.NET中,无论是WinForm也好,ASP.NET也好,WPF也好,其实他们只是一种表现形式的差异,后台的程序集都是一样的,都是UI需要什么数据,类库负责把这些数据传递给UI。三层架构,设计模式,数据结构与算法,这些思想适用于所有编程语言。好了,这些东西,点到为止,下面进入正题。
我学习.NET的路线是这个样子的。
1,先从c#语言学起,在Console环境中,对着那个不大不小的黑框,练习c#语法和面向对象的思想,语法包括流程控制,方法,属性,委托,泛型等。面向对象包括封装,继承,多态,特别是多态,要好好看看。也要理解抽象类,接口,密封类等名词的概念。
2.熟悉一些.NET封装好的一些常用的类,比如说,集合类,字符串操作类,文件操作类,等等。
3.熟悉WinForm。这个东西跟Console不是很一样,是基于事件的。在WinForm环境中,熟悉熟悉常用的控件,包括常用的属性和事件。不要因为有人鄙视拖控件,你就不好好学习控件,要对控件有一个客观的认识。学学GDI+,研究研究为什么控件拖上去以后,他就能在界面上显示出来,你的事件是怎么被调用的,等等。这个阶段,做一些简单的小软件,试着把一些功能封装在不同的类中,每个类写一个单独的文件。
4.学习SQL Server,理解关系数据库的思想,熟悉sql 语句,然后学习ADO.NET,达到可以通过c#实现对数据库的增删改查,会写比较复杂一些的查询语句。这个阶段,可以做一些小型的信息管理系统。
5.学习HTML,CSS,JavaScript,ASP.NET,熟悉ASP.NET的几个内置对象的常用操作,理解B/S结构跟C/S结构的差异和相同点。这个阶段可以做一些简单的小网站。
6.学习.NET的一些底层机制,比如,托管堆中的内存分配,值类型跟引用类型的差别,字符串驻留机制,垃圾回收机制等等。
7.学习三层架构的思想以及一些常用的设计模式,如简单工厂,外观模式,单例模式,生成器模式等,理解面向接口编程的思想和依赖注入,控制反转思想。
8.之后,就可以自己接一些小项目,或者是自己做着玩也行,自己设计,自己写代码,这个项目中需要用什么技术,就去学什么技术,遇到什么问题,首先自己去解决,自己搞不定了,再去向别人求助。
9.有意识地学习一些相关技术,如XML,水晶报表,LINQ,正则表达式,JQuery,多线程,Socket,Remoting等。
10.可以去好好研究研究设计模式,它绝对不会让你失望的。
11.这个时候,我觉得你就可以选择自己比较感兴趣的领域,去深入研究了。这时候,如果你还觉得.NET程序员没啥技术含量,只会拖控件,那么,你转行做其他的也行,上手就比较快了。因为软件开发中虽然有不同技术和不同门派,但他们的很多思想都是相通的。
12.多写代码,多研究系统架构。
推荐书籍:
《C#高级编程》(第二版)(清华大学出版社)
《Microsoft.NET程序设计技术内幕》(清华大学出版社)
《 Visual VB.NET技术内幕》 (清华大学出版社)
《 Visual C#.NET技术内幕》 (清华大学出版社)
.NET入门教程(包括Windows Form和Web Form):
http://chs.gotdotnet.com/quickstart