学习笔记1 认识.Net, C#

来源:互联网 发布:mac队麦基一号 编辑:程序博客网 时间:2024/05/29 18:33


.Net 学习之路 一  --- 认识.Net, C#

.Net是什么呢?  它是开发的平台,微软的一种战略。
 
其中核心就是 .net Framework, 就是安装部署.Net 软件或网站时必备的组件。
.net Framework自从2002年发布, 已经经历了 1.0,1.1,2.0,3.0,3.5 几个版本了。
其中2.0,3.0,3.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 , ASP,C#哪个运行速度比较快呢?

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文件,你打开无法运行。  可能是你运行了,但其中的运行时需要读写注册表之类的你没有权限让你无法运行。 这个也是安全机制的一种。

原创粉丝点击