C#个人总结:第一章,.NET 体系结构

来源:互联网 发布:linux aria2日志 编辑:程序博客网 时间:2024/05/17 02:11

正在学习C#,总结一下第一章简介内容,和大家分享一下,有错请指出。

(1)C#和.NET Framework必须一起考虑。C#的所有代码总是在.NET Framework中运行,说明,许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。

1.C#与.NET 的关系

      C#是一种基于面向对象的语言,其本身只是一种语言。而.NET Framework是一个功能丰富的平台,用于开发、部署和执行分布式应用程序。C#并不是.NET的一部分,它们之间的一些各自的特性另一个并不支持。但,两者一起使用,其开发程序的效率很高。

2.公共语言运行库

(1) .NET Framework的核心是其运行库执行环境,称为公共语言运行库(CLR)或者.NET运行库。在CLR控制下运行的代码称为托管代码。

(2)在.NET中,编译分为两个阶段:1是源代码-->Microsoft中间语言(IL);2是CLR把IL编译为平台专用代码。

(3)IL(中间语言)也Java字节码共享一种理念:都是低级语言,语法很简单(数字代码),可以快速地转换为本地机器码。其优点:平台无关性、提高性能和语言的互操作性。

2.1 平台无关性

      中间语言(IL)的平台无关性,意味着字节码指令可以放在任一平台。(与Java字节码平台无关性类似)

2.2 提高性能

(1)IL总是即时编译的(称为JIT编译)。所谓JIT编译,即只编译它调用的那部分代码,并不是把整个程序一次编译完。代码编译一次后,得到本地可执行程序存储起来,直到退出该应用程序,这样,下次运行时该部分代码时,就不需要重新编译了。

(2)托管IL代码和本地机器代码的执行速度一样快。其原因是编译过程的最后一部分是在运行时进行的,JIT确切知道程序运行在什么类型的处理器上。

2.3 语言的互操作性

      就是能将任何一种语言编译为中间语言,编译为中间语言的代码可以与从其他语言编译过来的代码进行交互操作。

2.3.1 Visual Basic2010

2.3.2 Visual C++

2.3.3 COM和COM+

3.中间语言

3.1 面向对象和接口的支持

(1)Microsoft为IL选择的特定道路是传统的面向对象的编程,带有类的单一继承性。

(2)引入接口概念,实现给定接口的类必须提供该接口指定的方法和属性的实现方式。不过,.NET建立的接口并不支持任何COM基础结构,也不是派生自IUnknown,也没有对应的GUID。

(3)COM(Component Object Model,组件对象模型),并不是面向.NET的技术,不能编译为IL,但托管代码可以调用COM组件,COM也可以调用托管代码。COM允许以不同语言编写的组件一起工作,调用彼此方法,不过,每个对象都必须通过COM运行库来实例化。

(4)语言的互操作性的真正含义是用一种语言编写的类应能直接与另一种语言编写的类通信。

3.2 不同的值类型和引用类型

(1)值类型:变量直接存储数据。一般存储在堆栈中。

(2)引用类型:变量仅存储地址,数据可以在该地址中找到。存储在一个名为:托管堆的内存区域中。

3.3 强数据类型化:将数据类型强制转换。

(1)所有的变量都清晰地标记为属于特定数据类型,中间语言一般不允许对模糊数据类型执行任何操作。

(2)会降低安全性,但是也有一些好处:语言的互操作性、垃圾收集、安全性、应用程序域。

3.3.1 语言互操作性中强数据类型化的重要性:如果类派生自其它类或包含其它类的实例,它就需要知道其它类使用的所有数据类型。

(1)通用类型系统(CTS):CTS定义了可以在中间语言中使用的预定义数据类型,所有面向.NET Framework的语言都可以生成最终基于这些类型的编译代码。CTS还定义了一个内容丰富的类型层次结构。

(2)公共语言规范(CLS):和通用类型系统(CTS)一起确保语言的互操作性。CLS是一个最低标准集,所有面向.NET的编译器都必须支持它。

3.3.2 垃圾回收

(1)垃圾回收器(garbage collector)用来在.NET中进行内存管理,特别是它可以恢复正在运行的应用程序需要的内存。

(2)目前,使用两种技术来释放进程向系统动态请求的内存:1、完全以手工方式使应用程序代码完成这些工作;2、让对象维护引用计数。

(3)维护引用计数是COM对象采用的技术。用于释放相关内存和资源。

(4).NET运行库采用的是垃圾回收器

3.3.3 安全性:提供了基于代码的安全性。

3.3.4 应用程序域(application domain):是分离组件的一种方式,用于减少运行应用程序的开销。

3.4 通过异常处理错误:try{}catch{}finally{}

3.5 特性的使用:最初是为了再程序中提供与某些项相关的额外信息,以供编译器使用。

4. 程序集:是包含编译好的、面向.NET Framework的代码的逻辑单元。

(1)是完全自描述性的,是一个逻辑单元。

注意:可执行代码和库代码使用相同的程序集结构,区别是可执行程序集包含一个主程序入口点,而库程序集不包含。

(2)包含的元数据描述了对应代码中定义的类型和方法。程序集包含程序的元数据,表示调用给定程序集中的代码的应用程序或其他程序集不需要引用注
册表或其他数据源,就能确定如何使用该程序集。

(3)程序集有两种类型:私有程序集和共享程序集。

4.1 私有程序集:私有程序集是最简单的一种程序集类型。一般附带在某个软件商,且只能用于该软件。安全性较高

4.2 共享程序集:其他应用程序可以使用的公共库。

(1)风险:名称冲突;程序集被同一个程序集的不同版本覆盖。

(2)措施:把共享程序集放在文件系统的一个特定的子目录树中,称为全局程序集缓存(GAC)。

(3)为了避免名称冲突,应根据私钥加密法为共享程序集指定一个名称(而对于私有程序集,只需要指定与其主文件名相同的名称即)。该名称称为强名(strong name),并保证其唯一性,它必须由要引用共享程序集的应用程序来引用。
(4)与覆盖程序集的风险相关的问题,可以通过在程序集清单中指定版本信息来解决,也可以通过同时安装来解决。

4.3 反射:通过编程访问程序集中存储的元数据(包括在程序集中定义的所有类型和这些类型的成员的细节)的技术。

4.4 并行编程:新的并行编程功能提供了一个新的Task Parallel Library和PLINQ Execution Engine。

5. .NET Framework类:.NET基类是一个内容丰富的托管代码类集合。它的一个主要优点是非常直观和易用。

6. 名称空间:是.NET避免类名冲突的一种方式。

7. 用C#创建.NET应用程序

(1)创建ASP.NET应用程序:主要目标是使用最少的代码建立强大、安全、动态的应用程序.

(2) 创建Windows窗体

(3) 使用WPF

(4) Windows控件

(5) Windows 服务

(6) WCF

(7) Windows WF




小结:

1.C#和.NET的关系

(1).NET是一个平台,包括.NET Framework框架,提供了一个稳定的环境来保证我们基于.NET平台开发的各种应用的正常运行。.NET Framework框架中包括CLR(公共语言运行时)和.NET 类库。

(2)C#是一种语言。

2. .NET能开发Winfrom、ASP.NET、wp8、unity3D.

3.2种交互模式:C/S   B/S

4.两行代码:

Console.WriteLine("");

Console.Write("");

Console.ReadKey();

Console.ReadLine();













0 0
原创粉丝点击