托管执行环境的介绍.ppt_第1页
托管执行环境的介绍.ppt_第2页
托管执行环境的介绍.ppt_第3页
托管执行环境的介绍.ppt_第4页
托管执行环境的介绍.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于 C# 的 .NET Framework 程序设计,第1章 Microsoft .NET Framework概述 第2章 托管执行环境的介绍 第3章 使用组件 第4章 部署与版本控制 第5章 通用类型系统 第6章 类型的使用 第7章 字符串、数组和集合 第8章 委托和事件 第9章 内存和资源管理,第10章 数据流和文件 第11章 Internet访问 第12章 序列化 第13章 远程处理和XML Web Service 第14章 线程和异步编程 第15章 托管代码与非托管代码之间的互操作 第16章 使用Microsoft ADO.NET 访问数据 第17章 属性,第2章 托管执行环境介绍,编写 .NET 应用程序 编译和运行 .NET 应用程序,编写 .NET 应用程序,2.1 编写 .NET 应用程序,使用命名空间 定义命名空间和类 入口点、作用范围和声明 控制台输入和输出 区分大小写,使用命名空间,类可以全路径引用 或者引用命名空间 不需要全部限定包含该类的名称,/ 声明 FileStream 对象 System.IO.FileStream aFileStream;,using System.IO; . FileStream aFileStream;,2.1.1 使用命名空间,定义命名空间和类,C# 支持自定义命名空间和在这些命名空间下的类 所有的类都要定义在某个命名空间下 如果没有明确提供命名空间,类就添加到一个没有名称的全局命名空间中 命名空间可以嵌套,namespace CompCS public class StringComponent ,2.1.2 定义命名空间和类,入口点、作用范围和声明,在 C# 中,应用程序入口点是一个类的公有的 main() 函数 入口点函数可以带string数组类型的参数,2.1.3 入口点、作用范围和声明,class MainApp public static void Main() . . . ,class MainApp public static void Main(string agrs) if(agrs.Length0) . . . ,入口点、作用范围和声明(续),C# 支持以点号作为范围解析符 在 C# 中,在用一个变量之前一定先声明它,2.1.3 入口点、作用范围和声明,Console.WriteLine (“First String“);,Lib.Comp myComp = new Lib.Comp();,控制台输入和输出,控制台输入方法 Read,ReadLine() 控制台输出方法 Write,WriteLine(),Console.WriteLine(“Hello World”);,String s = Console.ReadLine();,2.1.4 控制台输入和输出,区分大小写,不要用需要区分大小写的名字 保证区分大小写和不区分大小写的语言都可充分调用组件 在单一名称范围,不要用大小写来区分标识符 应避免下列用法,class customer . class Customer . void foo(int X, int x),2.1.5 区分大小写,第2章 托管执行环境介绍,编写 .NET 应用程序 编译和运行 .NET 应用程序,编译和运行.NET Framework应用程序,编译器选项 托管执行的过程 元数据 Microsoft 中间语言(MSIL) 程序集,2.2 编译和运行.NET Framework应用程序,公共语言运行库工具 实时(JIT, Just-In-Time)编译 应用程序域 垃圾回收,编译器选项,直接从命令行窗口中编译 用 /target 或 /t 指定编译目标 用 /reference 或 /r 来引用程序集,2.2.1 编译器选项,csc HelloDemoCS.cs,csc /t:exe HelloDemoCS.cs,csc /t:exe /r:assemb1.dll HelloDemoVB.vb,托管执行的过程,类装载器,JIT 编译器,执行,安全检查,EXE/DLL (MSIL 和元数据),类库 (MSIL 和元数据 ),可信任的 预编译 JIT代码,调用 未编译 方法,运行时引擎,托管 本地 代码,编译器,源代码,2.2.2 托管执行的过程,元数据,元数据是在编译时嵌入的声明性信息 应用程序版本、区域、公钥信息 类型成员(方法、字段、属性、事件、嵌套的类型) 安全许可证信息 该程序集所依赖的其他程序集 包括所有 .NET Framework文件和资源文件 如文本(txt、xml)、声音图像等资源文件,2.2.3 元数据,元数据的作用 加载和定位类 增强代码安全性 解析方法调用 提供反射支持 可利用特性扩展元数据,2.2.3 元数据,元数据(续),Microsoft 中间语言(MSIL),可被任何支持中间语言的编译器产生 任何兼容公共类型系统(CTS)的编译器(如:cobol、perl、pascal、smarttalk)都可以产生中间语言代码 可被公共语言运行库JIT编译器转变成本地代码 在可以执行代码前,必须将 MSIL 转换为 CPU 特定的本地代码,这通常是通过实时(JIT)编译完成的,2.2.4 Microsoft 中间语言(MSIL),程序集,程序集,清单,多个托管模块 和资源文件被 编译到一个程 序集,托管模块 (MSIL 和元数据),托管模块 (MSIL 和元数据),资源文件,2.2.5 程序集,公共语言运行库工具,和MSIL一起工作的运行时实用工具 MSIL 编译器 (ilasm.exe) 从Microsoft中间语言 (MSIL) 生成最终可执行二进制代码。 MSIL 反编译器 (ildasm.exe) 检查元数据和托管二进制代码,利用包含 MSI 代码的 PE 文件,创建适合输入到 MSI 汇编程序 (Ilasm.exe) 的文本文件。 强名称工具 (sn.exe) 帮助创建带强名称的程序集。sn.exe 提供用于密钥管理、签名生成和签名验证的选项。,2.2.6 公共语言运行库工具,实时(JIT, Just-In-Time)编译,JIT 编译器提供针对特定 CPU 的优化 由于公共语言运行库为每种受支持的CPU结构都提供了 JIT编译器,开发人员可以编写一组可在不同结构的计算机上进行JIT编译和执行的MSIL 。 代码执行过程 MSIL 按需生成本地代码 为后面的调用保存已编译的本地代码,2.2.7 实时(JIT, Just-In-Time)编译,应用程序域,过去进程边界用来隔离应用程序 在 CLR 中, 应用程序域提供应用程序之间的隔离 以极小的性能损失进行代码类型安全检查来隔离应用程序 多个应用程序域可并存于同一个应用程序中 能够在不停止整个进程的情况下停止单个应用程序 在一个应用程序中运行的代码不能直接访问其他应用程序中的代码或资源 在一个应用程序中的错误不会影响其他的应用程序,2.2.8 应用程序域,多媒体演示 应用程序加载和单文件程序集执行,垃圾回收,垃圾回收在.NET Framework中自动进行对象内存管理 垃圾回收优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收执行回收过程时,它检查托管堆中不再被应用程序使用的对象来回收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论