C#学习路线图

 
入门篇 1.         学习面向对象 (OOP) 的编程思想
许多高级语言都是面向对象的编程, .NET 也不例外。 如果您第一次接触面向对象的编程,就必须理解类、对象、字段、属性、方法和事件、封装、继承和多态性、重载、重写等概念。需要说明的是,微软的产品帮助文档做得非常完善,而且查询相当方便,入门者不得不看。安装完 Visual Studio.NET2003( 或者 Visual Studio.NET 2002) 后,在 程序 组里有一个 Visual Studiio 组合帮助集合。初学者从帮助文档就会获得许多知识。 
2.         选择一门语言,学习语法及相关基础知识
选择语言的标准:根据你自己的需求和个人的技术背景。在 .NET 平台下, C# VB.NET 都是调用 Framework 的类库,效率基本一样, C# 的语法严谨,适合以前 C++ VC 的程序员。 VB.NET 不区分大小写,写法随意一些 . ,自动缩进,适合以前 VB 的程序员,微软也一再提倡用 VB.NET 进行快速开发。 VC++.NET 更接近底层,可以用托管和非托管两种方式进行编程。
选择了需要使用的语言后,我们需要了解语言的语法规则,包括语句、类型、表达式、运算符、函数等等,我建议一开始写程序就要养成良好的编程风格,规范地进行变量的命名,在代码中写好注释。这对以后的软件开发生涯都是很有意义的。 
3.         理解 .NET 思想并熟悉框架类库( Framework Class Library
我们借用一幅图来说明一下公共语言运行库( CLR )、框架类库( FCL )与应用程序之间以及与整个系统之间的关系。
首先,我们要了解公共语言运行库、程序集、通用类型系统的概念。在此基础上,学习 .NET 框架类库。 .NET 框架类库是一个与公共语言运行库紧密集成的可重用的类型集合。 .NET 框架类库封装了大部分 Win32 API ,许多以前需要调用 API 才能实现的功能,在 .NET 下非常容易就实现,许多情况下只需要一句话就足够了。所以,我们在程序设计的时候要尽量避免调用 Win32 API 。学习 .NET 框架类库的捷径:掌握常用的类库,其它不常用的类库只需要了解,用到的时候查阅即可。 
4.         利用 Visual Studio.NET 写程序
.NET 平台下写程序我们一般用微软的开发工具 Visual Studio.NET ,因为一个好的 IDE ,能极大地提高开发效率。我建议初学者从 Windows Forms 或者是 Web Form 开始,等有一定的基础之后,再转向写类库或是控件、组件方面的东西。微软的帮助文档里自带许多示例,我们可以一边看帮助,一边进行演练。在学习其中的代码的同时,一定要理解和思考。多写代码、从项目中锻炼是编程高手的成长之路。记住:一定要多看多写源代码;多上论坛(如 CSDN Dev-club )和微软的新闻组讨论技术问题。
我们一定要用好 Visual Studio.NET 这个集成开发环境,除了编写代码外,我们还要了解 .NET 的部署原理,学习打包、部署及管理应用程序。多人开发的项目可以考虑用 Visual Source Safe 进行源代码管理,这一系列开发工具的使用都要有大量的实践。 
推荐书籍:
C# 高级编程》(第二版) ( 清华大学出版社 )
Microsoft.NET 程序设计技术内幕》 ( 清华大学出版社 )
Visual VB.NET 技术内幕》 ( 清华大学出版社 )
Visual C#.NET 技术内幕》 ( 清华大学出版社 )
.NET 入门教程(包括 Windows Form Web Form ):
http://chs.gotdotnet.com/quickstart
 
5.         最好掌握大型数据库编程
一般来讲,大多数软件开发都涉及到数据库。大部分软件的后台数据库都使用如 Access SQL SERVER Oracle 等。 ADO.NET 提供了对关系数据、 XML 和应用程序数据的访问。我们必须掌握 Connection Command DataReader DataAdapter 对象的使用,正确运用 DataSet 数据集和 DataView 进行数据操作。当然,要有一定的数据库基础,包括表、视图、存储过程等的使用。必须把后台数据库和前台的 ADO.NET 都掌握好,才能真正精通数据库编程。
在项目的开发中,建议使用数据访问应用程序块( Data Access Application Block )来简化 SQL 查询。微软 msdn 网站有下载,我们可以利用 SqlHelper 类进行的数据访问,使用起来非常简单,很容易地构建我们的数据访问层。参考微软 MSDN 文档:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp  
推荐书籍:
ADO.NET 技术内幕》 ( 清华大学出版社 )
ADO.NET 高级编程》 ( 中国电力出版社 )
VB.NET SQL Server 2000 高级编程 创建高效数据层》 ( 清华大学出版社
6.         学习 XML WEB Service
XML Web services 正在开创一个分布式应用程序开发的新时代。 XML Web Services 是把软件当成服务的一种体现,通过使用 XML 消息处理启用数据交换和应用程序逻辑远程调用。 XML 使数据能够通过防火墙,实现异类系统之间移动数据。虽然公共的 Web Services 还不是很普及,但是在一些企业中,已经涉及到了 Web Services 的开发。用 Visual Studio.NET 很容易创建 Web 服务,调用 Web 服务也相当简单,只需要添加一个 Web 引用,然后调用即可。进行这方面的学习,需要了解 Web 服务描述语言 (WSDL) SOAP 协议等。 
推荐书籍:
《构建 XML WEB 服务:基于 Microsoft.NET 平台》 ( 清华大学出版社 )
Building XML WEB Services for the Microsoft .NET Platform 》(影印版) 
.NET 技术网上资源:
中国软件网(中国最大的技术社区)
http://www.csdn.net
计算机世界开发者俱乐部
http://www.dev-club.com
中国 Dot Net 俱乐部
http://www.aspx.cn
微软官方 MSDN 权威站点:
http://msdn.microsoft.com
微软官方 ASP.NET 站点:
http://www.asp.net
微软官方 Windows Form 站点:
http://www.windowsforms.net
微软官方 Dot NET 站点:
http://www.gotdotnet.com
英文站点 Code project
http://www.codeproject.com  
************************************************************************
提升篇
1.         学习 .NET 框架开发平台底层原理和体系结构
.NET 框架的核心是公共语言运行时( Common Language Runtime CLR )。通常情况下,我们使用一种高级语言 ( C# 或者 VB.NET) 编写程序,这些高级语言的编译器产生的是一个托管模块(即中间语言 IL 代码)。托管模块是一个需要 CLR 才能执行的标准 Windows PE 文件。执行中间语言代码的时候, CLR 中的即时编译器 (Just-in-time ,简称 JIT) 把其转换成 CPU 指令。这中间有许多细节,包括怎么初始化 CLR ,微软组件运行时执行引擎 MSCorEE.dll(Microsoft Component Object Runtime Execution Engine ,在 system32 目录下 ) 怎么工作等等。如果你想精通 .NET 技术,就必须对 .NET 框架原理、程序集、元数据、值类型/引用类型、类型设计、异常处理、自动垃圾回收等核心技术有一个清楚的认识。 
推荐书籍:
.NET 框架程序设计》 ( 修订版 ) ( 清华大学出版社 )
Applied .NET Framework Programming 》(影印版) Jeffrey Richter
.Microsoft .NET IL 汇编语言程序设计》
.NET 本质论》 ( 中国电力出版社
2.         熟练运行底层工具进行调试和解决各种问题
了解 .NET 平台的底层原理,我们需要学会一些工具和 CLR 调试器 (DbgCLR.exe) 的使用。 C# 命令行编译器 (Csc.exe) VB.NET 编译器 (Vbc.exe) 的重要性就不用再多说。
.NET 框架 SDK 提供的几个比较重要的工具是: MSIL 汇编程序 (Ilasm.exe) MSIL 反汇编程序 (Ildasm.exe) 、程序集链接器 (Al.exe) 。强烈建议大家在开发中多使用 MSIL 反汇编程序 (Ildasm.exe) ,以加强对 CLR 和底层的了解。 MSIL 汇编程序 (Ilasm.exe) MSIL 汇编语言生成可移植可执行的 PE 文件。反汇编程序 (Ildasm.exe) 可对任意 .NET 框架 .exe .dll 程序集进行分析,并以可读的格式显示信息。程序集链接器 (Al.exe) 从一个或多个文件生成一个带有程序集清单的文件。 .NET 框架 SDK 还提供许多其它的工具,如: PEVerify 工具 (Peverify.exe) 、强名称工具 (Sn.exe) 等,我们力求能用命令行的方式使用他们。
需要指出的是: Visual Studio.NET 不是能完成所有命令行能做的工作,一些任务必须由命令行来完成。如:创建多文件程序集,必须求助于 csc.exe addmodule 选项。只有在对 .NET 框架有很深理解的基础上,才会灵活运用这些工具。 
3.         进行大型软件系统架构设计
进行软件系统的架构设计,需要积累相当丰富的经验,要求我们从全局的概念上把握软件的总体结构。首先的一点是,我们必须参照软件需求说明书。需求说明书是用户和开发双方对所开发软件的功能、性能、用户界面及运行环境等做出详细的说明,所以我们设计软件必须以此为依据。接下来,我们要做软件的总体设计,即概要设计。一般需要根据软件的业务需求和业务流程进行模块划分,规划程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。在详细设计中需要指出每一模块是怎样实现的,包括实现算法、逻辑流程、数据流程图等。以后的工作,就是程序的实现。测试是和编码同步进行的,必须严格把好质量关。
在用 .NET 开发大型系统的时候,一般都是做成三层(或是 N 层)结构的形式。即将应用程序逻辑地分为 3 个基本层:数据访问和存储、业务逻辑层、表示层。三层结构的优点主要是:可扩展性、可伸缩性和灵活性。在做 Web 应用的时候,可以考虑采用 MVC (模型 - 视图 - 控制器 Model-View-Controller )模式让 Web 应用程序的用户界面功能实现模块化。
顺便要说的是,大型软件有时需要整合多种产品,来满足企业级的应用需求。微软提供了许多 Server 产品,如 SQL Server Exchange Server Share Point Server BizTalk Server 等。记住:大家一定要多了解微软的产品线,微软很多技术都是相符相承的,结合起来才能发挥作用!我们可以微软的 Server 级产品的基础上整合软件系统、实现数据共享访问、终端设备上的电子邮件、消息协作。总之,通过互联网,让所有人一起协同工作,是未来软件的发展趋势。我们把握好这些方向,就等于驾驭未来。 
推荐书籍:
《使用 Microsoft .NET 的企业解决方案模式》微软出版社
Enterprise Solution Patterns Using Microsoft .NET MS divss 
网上资源:
软件工程专家网
http://www.51cmm.com
UML 软件工程组织
http://www.uml.org.cn/
http://www.umlchina.com  
4.         带领团队进行软件开发
一个好的团队,才能开发一个成功的产品。软件开发主要由项目管理团队、软件开发团队、软件测试团队组成。项目管理人员主要对项目进行控制,协调开发人员、测试人员的工作。开发人员的工作主要是负责软件的实现。测试人员是软件产品的质量保障。其它人员,如产品规划方面、软件技术支持和文档、后勤都是不可缺少的。
大型软件是许多人集体智慧的结晶,要求 Project Leader 有较强的管理能力和技术背景,以及良好的沟通能力。如果你作技术的时间很长,积累了丰富的经验,做过项目组长等管理工作,通过不断的学习和提升,极有可能成长为 Project Leader 。如果你已是 Project Leader ,就到对软件的成败负责,你可以根据现有资源决定开发中任务分配,合理用人,决定功能模块是否值得开发,项目进度控制等许多问题。总之,带领团队的人必须有远见卓识,采取正确方法引领团队取得成功。 
推荐书籍:
《人月神话》清华大学出版社
《人件》清华大学出版社

你可能感兴趣的:(c#学习)