.net 学习之路 一

来源:互联网 发布:unity3d 碰撞墙壁 编辑:程序博客网 时间:2024/04/28 18:19

作者: William Lin

 

声明: 虽说接触.net,开发.net 已有好些年日子了. 但自VS2008问世 就从未亲自接触过。

为更好的回顾已学的.Net知识,我决定做些复习 + 学习的工作。 也为想学.net的朋友做参考用。

  

 

.net 学习之路

 基础入门

 

.net是什么呢?  它是开发的平台,微软的一种战略。

 

其中核心就是 .net Framework, 就是安装部署.Net 软件或网站时必备的组件。

.net Framework自从2002年发布, 已经经历了 1.01.12.03.03.5 几个版本了。

其中2.03.03.5,核心都是2.0, 之后的版本加入一些新的特性,功能等。

 

.net FrameWork 主要包括2个部分

1. CLR  common lanuage runtime 公共语言运行时

            它是.Net应用程序再运行时,提供的支持。

            它同时也充当解释器的作用,这个之后再阐述。

2. BCL  basic class library 基础类库

             简单理解就是:  它是打C#代码时,提供的支持。提供了很多十分经典,常用的类库。

 

 现在横向比较一下其它语言:

C++ , 很灵活,特别是其中的指针都可以操控内存地址。但它有时会不太健壮,比如如果一个开发人员new了一个对象或指针,但用完后忘了delete释放占用的内存,那客户的系统的内存可能会被偷偷的吃光掉。

 

现在来概述一下一些语言的运行过程。

 

写入代码:

       int k;

       k = 2+3; 

上面这段代码,你可能都认识。但计算机CPU不认识的,CPU只认识那一堆0101011 之类的数据,那怎么办呢?

 一般来说代码最后会通过“某种方式”变成机器码或二进制码再执行的。

 

比如说:

VB, PHP 解释型语言。

       程序运行时,一边运行一边进行转换成计算机CPU认识的二进制的机器码,然后计算机显示处运行的结果。

C/C++: 编译型语言

       程序运行前,会先编译一下,转换成机器吗,然后执行显示结果。

汇编:汇编代码也会做转换工作,然后执行。

运行速度是相比两种要快点,因为他更加贴近机器代码。 但是开发人员书写十分麻烦

 

那你或许会问,那C++,VB , ASPC#哪个运行速度比较快呢?

 

C# 先编译转换成中间代码(MSIL) 然后由CLR来解释执行这个MSIL码转换成机器代码,最后显示处结果。

Java运行方式几乎和 C#是同出一辙的。

 

由于CLR 他本身运行也要占用资源的。所以说它的速度来说会比 C++C慢点。

 

个人概要观点: 机器码 > 汇编 > c = c++ > C# = java > PHP = VB = Asp

                     当然主要还是看代码本身的质量的。

 

 

刚才说两大核心部分之一 CLR

CLR具有哪些主要作用呢?

1.      解释,执行中间代码 

2.      (内存)垃圾自动回收机制

3.      安全性机制(做类型检查)  

 

 

记住: 代码在操作系统中运行是总是有身份的, 如果恶意代码权限太高就会有危险了。

          那有时安全性机制在关键时刻就十分有用。 (当然这里只是提到一部分而已)

 

现在谈论一下.Net 中间代码

 

MSIL 微软中间代码。 它是符合ECMA规范的。

       ECMA European Computer Manufacturers Association 【电脑】欧洲电脑厂商协会

              由一些欧洲最大的计算机和技术公司成立。 总之它就是一个权威,规范.

 

其他语言只要符合这个规范,并按照微软的一套中间代码的要求来编制语言,那它就可以用.Net Framework.

如现在市场上的 VB.Net, J#.Net, C++.Net, Delphi.Net, Cobol, Small Talk,等语言已经陆续加入.Net 平台中了。

 

Java虽出道很早,但至今它的中间代码(JVM) 还没有符合这个规范,大家也会发现,Java就只有一种语言。

当然或许两家的战略方案不同吧。

 

 

Java可以跨平台,也就是说Java的标语说的: 一次代码,处处运行。

C# 目前没有这样跨平台的实现,我猜想是因为.Net BCL太依赖于windows平台。

     当然像微软这样的巨头,如果真要做跨平台的工作,我想也可以办得到的。

也许这也是微软的自身战略缘故吧。

   

            编译器                解释执行

C#      ----------------------->   中间代码  -------------------> 机器代码

Java    

 

两者都是如上的模式,只是

C#    偏重中间代码之前的,它可以拥有多重开发语言。

Java偏重中间代码之后的, 它可以支持 winTel平台,苹果,Linux, AMD

 

应该说各有千秋吧。

 

讲到这里,如果你是一个做软件部技术负责的,一个项目来如何衡量开发是用何种语言呢?

从事市场观察看,一般来说

Java 适合做大型企业级的系统,如医院,银行,业务逻辑比较复杂的。它更追求稳定。

PHP + MySQL: 适合做大型门户网,但逻辑业务比较简单的。如新浪网等

.Net:    适合做大中型网站,中小型企业应用/网站等。 当然做应用程序winform是很好的东西。

 

其实呢,这些都不是绝对的! 

你当然也可以用.net开发大型的系统的,也是完全没有问题的。

只是外界可能对windows系统本身的安全性有点犹豫。

 

讲了这么多,那C# 是个什么语言

本人认为C#是个集多种开发语言有点于一体,表现力极强,语法精简,一些新的事件机制等,用起来十分的方便。是微软为.Net framework量身定做的开发语言。是个安全,健壮,稳定的一种语言。

 

它可以很多,下面简单描述一些:

1.       控制太应用程序 (就是用命令行来运行的方式)

2.       Windows应用程序 (Winform)

3.       Web 应用程序 (Web, 企业解决方案)

4.       SOA面向服务的体系结构(Service-Oriented Architecture)是一个组件模型,往往基于网络的分布式

5.       Web service

6.       WPF: 其中的SilerLight 可以做到Flash一样的酷,如按钮可以做的像苹果机力一样的效果。表现力很强。

7.       WCF: 通信高手 如与 Lotus Notes 通信等。通信能力很强。

8.       WWF 工作流 workflow 的支持

 

 

穿插: 什么是Com组件

Com组件,是为解决二进制规范问题的。让不同的环境下都可以实现,包装好的

可以看成是一个接口。

如一个功能组在Borland C++  可以用,而在VC++就不行了。那就可以用Comm组件去解决。

现在市面上 Comm组件已经很少有人用了。

 

 穿插:  windows 系统中文件a.exe

机器上有 a.exe文件,你打开无法运行。  可能是你运行了,但其中的运行时需要读写注册表之类的你没有权限让你无法运行。 这个也是安全机制的一种。

原创粉丝点击