【标题】初学者要分清楚这几个问题再学习

在前面和大家曾经谈过初学者如何选择开发语言的问题,当您确定学习C#(或者叫学习.NET)的时候,好多初学者经常问到C#怎么还得学ADO.NETASP.NET.NET什么关系?只学ASP.NET行不行?等等,诸如此类问题。当然,还有很多初级问题,通过以上询问,我觉得初学者必须要分清楚几个关键问题:

第一,    .NET 平台是什么?

第二,    开发语言应该学习哪些内容?

第三,    学习的最终方向是什么?

下面我通过问答的方式,给各位初学者解决以上问题。

1 .NET是什么?

首先,你要会读,“.NET”的正确英文读法是“dotnet”,我们习惯读作点儿NET”。但是,正式场合希望大家使用英文的正确读音。其次,纠正另外一个读音:C#,个别学习者读作“C,强烈建议千万别这么读!正确读音是“C Sharp”Sharp在英文中的意思锐利的、锋利的,言外之意是这门语言就像一把利器,非常好用。好了,下面回答问题。.NET是美国微软公司推出的一个可用于开发多种类型应用程序的开发平台。这个平台自2002年推出以来,深受开发者的欢迎,极大的提高了开发的效率,从字面意思看它是基于网络开发的新技术平台,因为NET就是网络的意思,当然,这个是最通俗理解,因为这个平台是随着互联网腾飞而起步和发展的。下面我们通过一张图来了解一下.NET平台架构组成,这样您会对.NET有更加深入的了解。

2. 理解平台的概念。

所谓平台,就是指软件开发和程序的运行环境。如果单纯从开发的角度理解,其实就是微软公司的工程师,给我们程序开发人员提供了开发多种类型应用程序的模块,或者说是软件的半成品,这个模块,或者说半成品,就是上图中的“.NET Framework 类库。正是有了这样一个半成品,才使得我们的开发效率大大提高了,而不需要程序人员再从头开发那些底层的程序了,这一点非常类似于我们小时候玩的那种积木,一个个小积木都是独立的单元,然后我们通过自己的想法把它们组合在一起,便可以搭建出不同形状的实物来。因此,我们软件开发人员就是在这个“平台”之上,使用这些做好的积木(模块),然后结合实际需求,把他们组合在一起,并加入自己的创造,就可以很快开发出我们需要的应用程序。而以前非.NET平台开发的时候,比现在要麻烦的多,通过上面的图我们可以清晰的看到,所谓的半成品模块是运行在操作系统之上的(我们也通常把它叫做虚拟机),那么非.NET平台开发的时候,却必须要调用操作系统的那些库函数,非常的难记忆,而且容易出错,这也是平台带来的好处。

3. 了解什么是“.NET类库

我们经常听到这样的说法:.NET类库、.NET框架类库、公共语言运行库。首先说.NET类库包含:“.NET框架类库.NET Framework)和公共语言运行库(CLR)。公共语言运行库又叫公共语言运行时,只是翻译的不同而已。那么.NET类库究竟是什么呢?刚才我们说了,它是半成品,或者说是模块,这是通俗理解,其实,它就是微软的工程师给我们写好的程序,然后经过编译后,变成了很多dll(动态链接库)文件,这些文件被打包成安装程序,当我们安装完以后,它就在操作系统指定的目录里面了。如下图所示:

当然,dll文件只是主要的部分,还有其他类型的文件,这里就不多说了。

4. .NET 类库的层次结构。

通过上图,大家可以清楚的看到,.NET类库包含:基础类库、ADO.NET/XMLWinFormASP.NETWebService等。首先,我们说基础类库,所谓基础类库就是说不管你开发何种类型的应用程序都要使用的基础模块,就像我们中小学学的数学、英语、语文一样,不管你是理科还是文科,这些都要学习,因为他是基础。其次,我们说ADO.NET。好多学员分不清楚这个概念,有.NET,怎么还出来个ADO.NET呢?还是那句话,不管你开发哪种类型的程序,比如桌面程序或者网站,只要跟数据库打交道,肯定就涉及到对数据的增删改查,那么,ADO.NET就是专门用来和数据库接口的模块,具体ADO.NET组成架构,我会在专门的课程中给大家介绍。现在,只需要您了解这个概念以及这个模块的作用,便于您学习的时候,明白为什么要学习它。至于说XML,意思差不多,它不区分开发的程序类型,XML可扩展性标记语言的缩写,它主要用来在不同程序中交换数据来使用的模块。

5. .NET 平台都能开发哪些类型的应用程序?

第一、非常轻松的开发桌面应用程序,桌面应用程序又叫做“windows应用程序、WinForm应用程序、C/S架构的应用程序,初学者必须要明白这些叫法都是正确的。如果您不了解什么是桌面应用程序,给您举个例子:我们使用的QQ360软件等,都属于桌面应用程序,就是客户端计算机必须要安装这个软件才能使用。说到这里,您应该明白了,在基础类库和ADO.NETXML类库基础之上,又提供了专门用于桌面应用程序开发的“WinForm类库。请大家看看我开发的一个基于WinForm的教学管理系统的截图:

第二,ASP.NET应用程序,同样,为了能够开发web应用程序,比如网站、web管理系统等,微软提供了专门用于开发web程序的类库,我们暂时可以简单的说这个类库就是ASP.NET类库,那么ASP.NET是相对于以前非.NET平台的ASP来说的,ASP是专门用来开发网站或其他web程序的。随着.NET平台的出现,微软全新的设计了一套开发web程序的框架,把它放在.NET框架中,这就是ASP.NET,这回您明白什么是ASP.NET了吧?说到这里,我们应该思考,一个大型的系统往往会有两种或两种以上的开发语言或开发平台组成,比如,我们给企业做了一套基于.NET平台的管理系统,现在需要和企业的另外一套系统交换数据,而这个系统是用java写的,那怎么办呢?这就是我们要是说的第三个类型的应用程序webservice

第三,WebService又叫web服务程序,这个同样是在基础框架类库之上,有了webservice,不同类型的应用程序通信会变得异常简单,而不同应用程序通信最常用的数据格式就是XML。再比如,我们现在非常流行的手机应用程序,使用webservice可以轻松实现手机和网络数据的交互,对于手机应用开发,我在图1-1中并没有表示出来,但是大家要知道在.NET平台开发移动应用也是非常容易的,这是我们需要单独安装一下移动开发类库就行了,现在非常流行的手机应用开发就是基于.NET平台的WindowsPhone7/8的开发,您随便打开一个有手机应用的网站,您都会看到如下的提示:

现在您应该知道.NET平台的强大之处了吧,好,下面我们谈谈.NET平台的开发语言选择问题。

6. .NET 平台开发语言如何选择。

通过图1-1我们可以看到我们在学习.NET的时候,可以选择好几种开发语言,那么究竟学哪个好呢?下面跟大家谈谈。

第一、VB.NET语言。这个语言其实是微软的王牌语言,在以前非.NET的时候,VB的版本是6.0,那时候微软的VB程序员是一统天下的,在微软推出.NET平台之后,VB开发语言被移植过来,这时候VB.NET成了完全的面向对象的开发语言,功能非常强大,VB程序员可以迅速的转换到.NET平台开发。可以说VB开发语言,是微软一贯支持和改进的开发语言,这个大家可以完全放心。初学者如果以前学过VB6.0的知识,可以很快掌握VB.NET开发语言。

第二、VC++语言。这个语言和VB一样,是从VC++6.0移植过来的,也称为完全面向对象开发语言,如果您以前不是做VC开发的,建议不要学习这个开发语言了。

第三、C#语言。在谈C#语言之前,首先跟大家说明,C语言、C++C#除了语法相似之外,开发方式差别很大,尤其是C语言,是面向过程的开发语言,好多初学者说学完C语言,C#就很容易了,这是严重误导,因为两者的开发方式完全不一样,我总跟学员们讲,我们中国的汉字在日语中也出现很多,你能说你会说中文了,日语学起来就很简单吗?开发语言也是同样的道理。C++是半面向对象的语言,应用和C#也是有比较大的区别。

C#开发语言,是我们极力推荐大家要学习的。首先,C#语言和VB.NET一样,是完全面向对象的开发语言,其次,C#语言是伴随着.NET平台出现而推出的,是专门为.NET平台量身定做的开发语言,其语法规则和java非常类似,当您学完C#的时候,如果工作中要用到java,您会发现非常容易学会。同时,C#语言也是微软极力推荐初学者学习的,但在这里我们不得不和VB.NET做一个比较,C#VB.NET语言在开发中除了语法规则有差别外,其他地方几乎是完全一样的,也就是说VB.NET能做什么,C#就能做什么;当然VB.NET在开发Excel访问模块的时候,相对更容易一些,并且有My命名空间(具体应用我们今天先不讲)。在开发webwinform程序的时候,你可以选择C#VB.NET的任何一种语言作为后台开发语言,而没有任何区别。讲到这里,我只能说,如果你是一个从来没有学过.NET的初学者,您还是学C#语言吧,因为这个现在用的人非常多,企业需求也大的多。如果您在工作中需要用VB.NET了,您也可以很快学会的,这个放心就好了。

7. 这么多的开发语言如何共存?

上面介绍的是不同开发语言的各自特点,现在的情况是,有人可能用的是C#语言,也可能是VB.NET或者VC++语言,而问题是企业想做一个项目,那么使用C#语言的和VB.NETVC++.NET开发语言的程序员,如何协作呢?可以先把答案告诉大家,在.NET平台无论你使用哪种开发语言,不同开发语言编写的程序可以无缝集成!也就是一个团队中,你可以用C#开发一个模块,另外一个人可以用VB.NETVC++开发一个模块,那么用C#编写的模块,可以直接调用其他语言编写的模块,反之亦然。所以不管你用什么语言开发,在.NET平台都要把它翻译成微软的中级语言(MSIL),不同语言开发的模块可以直接调用,这一点非常的方便了程序员对语言的选择,就像两个人,其中一个是中国人,一个是韩国人,这两个人想交流,双方都会说流利的英语,所以交流没有障碍,道理都是一样的。因此,.NET跨语言开发是任何其他平台都是无法相比的。

总结,初学者朋友如果能把以上问题搞清楚,我觉得您下一步需要的就是如何学习技能点了,相信您在学习中,会有的放矢,而不是稀里糊涂。