他们使用的技术都有问题

时间:2022-01-24 02:53:12

C#和.NET框架 在.NET之前

20世纪90年代,微软平台大都措施员使用VB、C或C++。他们使用的技术都有问题。

技术问题
纯Win32 API   不是面向东西,事情量比MFC大  
MFC(Microsoft Foundation Class,微软根本类库)   虽是面向东西,但是不一致,且过于古老  
COM(Component Object Model,组件东西模型)   虽然观点简单,但实际代码庞大丑恶  
通病   以上技术都针对桌面措施开发,,与Web编程大相径庭  

由此引出下一代平台的方针

他们使用的技术都有问题


他们使用的技术都有问题

.NET时代

.Net框架特点

多平台

给与行业标准的通信协议

供给更安适的执行环境

.NET框架的构成

他们使用的技术都有问题

他们使用的技术都有问题

CLR(Common Language Runtime,大众语言运行库)

内存打点和垃圾回收

代码安适验证

代码执行、线程打点及异常措置惩罚惩罚

编程工具涵盖编码和调试所需一切

Visual Studio IDE

.Net兼容编译器

调试器

网站开发处事器端技术,好比ASP.NET或WCF

BCL(Base Class Library,基类库):.NET框架使用的一个大类库

大大改造的编程环境

面向东西

自动垃圾回收 
CLR有GC(Garbage Collector,垃圾收集器),为你自动打点内存。(自动从内存中删除措施不再访谒的东西)

互操纵性

.NET语言允许差别.NET语言编写的软件模块无缝交互

一种.NET语言写的措施可以使用甚至担任用另一种.NET语言写得类,只需遵循必然法则

因为能容易的集成差别编程语言生成的模块,.NET框架有时被称为语言无关

.NET供给平台挪用(platform invoke,P/Invoke):允许.NET代码挪用并使用非.NET代码。它可以使用标准Win32 DLL导出的纯C函数代码,好比Windows API

.NET框架允许与COM互操纵:.NET框架组件能挪用COM组件,COM组件也能挪用.NET组件。

不需要COM 
开脱了COM也就能开脱下面这些对象,但系统中依然使用很多COM组件,所以偶尔还需要编写代码与这些组件交互,这将在25章讨论

IUnknown接口

类型库

手动引用计数

HRESULT

注册表

简化的部署

.NET措施无需注册表,意味着最简单情形下,复制过去就能用。

.NET供给并行执行的特性,允许一个DLL的差别版本在同一机器上存在。即每个措施都可访谒措施生成时使用的版本DLL

类型安适性 
CLR查抄并确保参数及其它数据东西的类型安适,差别编程语言编写的组件间也无问题

基类库 
.NET框架供给一个复杂的根本类库(Base Class Library,BCL)。在写措施时可以使用此中的类

通用根本类 : 一组强大的工具,好比文件操纵、字符串操纵、安适和加密。

调集类 : 列表、字典、散列表及位数组

线程和同步类 : 用于创建多线程措施

XML类 : 用于创建、读取及操纵XML文档

编译成CIL

措施集要么可执行,要么是DLL

措施集的代码不是本机代码,而是一种名为CIL(Common Intermediate Laguage,大众中间语言)的中间语言

措施集包罗以下内容

措施的CIL

措施中使用的类型的元数据

对其它措施集引用的元数据

CIL又叫IL(Intermediate Language)或MSIL(Microsoft Intermediate Language)

他们使用的技术都有问题


他们使用的技术都有问题

编译本钱机代码并执行

措施的CIL直到被挪用才会被编译本钱机代码。运行时,CLR执行下面的法式

查抄措施集安适特性

在内存中分配空间

把措施集中可执行代码发送给实时(Just-in-Time,JIT)编译器,把此中一部分编译本钱机代码

他们使用的技术都有问题

他们使用的技术都有问题

一旦CIL被编译本钱机代码,CLR就在它运行时打点它,执行释放无主内存、查抄数组界限、查抄参数类型、打点异常等任务。同时两个术语由此而生

托管代码:为.NET框架编写的代码,需要CLR

非托管代码:不在CLR控制下运行的代码,好比Win32 C/C++ DLL 
编译和执行

他们使用的技术都有问题

CLR Common Language Runtime

CLR 在操纵系统的顶层,卖力打点措施执行 
还供给下列处事

自动垃圾收集

安适和认证

通过访谒BCL(Base Class Livrary,基类库)得到广泛的编程成果,包孕如Web处事和数据处事之类的成果

他们使用的技术都有问题

他们使用的技术都有问题

CLI Common Language Infrastructure