- C#与NET的关系
C#编写的所有代码必须使用.NET FrameWork运行
C#是一种语言,但它本身不是.NET的一部分
C#一些特性,.NET不支持,.NET一些特性,C#不支持
- 公共语言运行库
.NET核心是运行库CLR,CLR运行的代码称为托管代码
CLR编译的步骤是:将源代码编译成IL,然后将IL编译为平台专用代码
- 平台
C#完整实现只能在Windows平台下,部分已经实现了跨平台
1)性能
IL是即时编译的,Java是解释性的,IL编译时只编译修改的部分
2)互操作性
IL编译的中间语言代码,可以与其他语言进行交互操作
其他语言有VB语言、VC++、VF#还包含了Windows运行库
- 中间语言
- 面向对象和接口,不同语言可以互相继承,调用其方法,使用Com运行库进行实例化
- 值类型和引用类型,引用类型存在内存的托管堆中,值类型存在堆栈中
- 通用语言系统CTS定义了基本数据类型,还有类型层次结构,允许定义自己的类型
- 公共语言规范CLS所有.NET编译器必须支持它,使用CLS兼容特性限制只适用的公共和受保护的类成员和公共类
- 垃圾回收器用于清理内存,Java也使用此类似系统,所有动态的内存都分配在堆上,当检测到托管堆已满,则调用垃圾回收器,垃圾回收器将没有引用的变量从托管堆上删除。
- 安全性
- 代码访问安全性弥补了Windows的安全机制,降低了来自Internet上下载的来历不明的代码有关风险
- 应用程序域
- 减少应用开销,程序与程序之间分离,进程之间传递数据不会产生性能问题,每个应用程序域对应一个应用程序,线程运行在一个具体的应用应用程序域中.运行的不同应用程序域的应用程序之间互相通信和共享数据,需要调用.NET远程服务
- 异常错误处理
- COm运行库中不同语言的异常处理是一样的,通过返回异常对象来处理错误信息
- 特性的使用
- .NET和C#都支持特性,可以在代码中自定义特性,自定义特性和数据类型、方法元数据放在一起,方便标记使用,可以和反射一起配合使用
- 程序集
- 就是编译后的结果,表现为·dll或者是·exe的格式,程序集必须依靠CLR才能顺利执行
- 程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合。
-
元数据,提供有关程序集中定义的类型的信息,包括类型的名称,可见性,基类和类型所实现的接口。注意:程序集清单和元数据说明了程序集是自我描述的。
-
实现这些类型的MSIL代码
-
程序集有私有和共享的,私有的只能在该应用程序里面使用,共享程序集可以是其他程序的公共库,共享程序集会有名称冲突、版本兼容问题
-
程序集里面定义了元数据,所以可以通过代码访问这些元数据,这个技术就是反射
-
并行编程,即代码促进在同一时间执行多个任务的性能
- 异步编程,当一个异步过程调用发出后,调用者不能立刻得到结果,基于事件机制,实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
-
进程 是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。
- 线程 是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程。主执行线程终止了,进程也就随之终止。
- .NET FrameWork
- .NET基类类库,支持常用的业务流程
- IL提供CTS基本数据类型
- Windows UI和控件
- ASP.NET Web和MVC
- ADO.NET和Xml数据访问
- 文件系统和注册表
- 网络和Web浏览
- .NET特性和反射
- COM互操作性
- 名称空间
- 命名空间,数据类型的组合,.NET中定义所有的类都在命名空间中,命名空间一般2部分组成,前部分是公司名,后部分是技术名称或项目名称.
- 使用C#创建.NET应用
- ASP.NET程序,简易的HTML页面和后台C#处理
- ASP.NETWeb窗体程序,图形化构建了ASP.NET页面,所有页面继承了Page类,后台C#处理类与设计类为分部类
- Web服务器控件,一种C#可以访问的页面XML标记,当请求时,Web浏览器会将他们转换为HTML标签和客户端脚本,C#能处理HTML标签的显示以及相关事件
- ASP.NET MVC将ASP.NET WEB进行了分离,由模型和控制器处理服务器端代码
- WPF 用于创建桌面应用程序,还有一种是Windows窗体,Windows窗体封装了Windows控件,基于像素图形,WPF基于矢量图(面向对象图形),WPF使用XAML声明,表示程序可视化操作.
- Windows Store应用程序,用于WIndows8以上系统,提供用户与内容交互所需的任务.用户根据内容记住程序的用途
- Windows服务程序,电脑系统后台运行的服务程序,
- WCF实现了多种通信方式,WebAPI也能实现客户端和服务端通信但是不如SOAP协议丰富.
- Web API基于ASP.NET MVC使用控制器和路由,进行简易的REST通信
- Windows WF工作流