• 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工作流

    

C#高级编程9-第1章.NET体系结构的更多相关文章

  1. 读《C#高级编程》第1章问题

    读<C#高级编程>第1章 .Net机构体系笔记 网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但是做事情很能坚持. 本章主要是了解.Net的结构,都是一些概念,并没 ...

  2. C#高级编程9 第18章 部署

    C#高级编程9 第18章 部署 使用 XCopy 进行部署 本主题演示如何通过将应用程序文件从一台计算机复制到另一台计算机来部署应用程序. 1.将项目中生成的程序集复制到目标计算机,生成的程序集位于项 ...

  3. C#高级编程9 第17章 使用VS2013-C#特性

    C#高级编程9 第17章 使用VS2013 编辑定位到 如果默认勾选了这项,请去掉勾选,因为勾选之后解决方案的目录会根据当前文件选中. 可以设置项目并行生成数 版本控制软件设置 所有文本编辑器行号显示 ...

  4. C#高级编程9 第16章 错误和异常

    C#高级编程9 第16章 错误和异常 了解这章可以学会如何处理系统异常以及错误信息. System.Exception类是.NET运行库抛出的异常,可以继承它定义自己的异常类. try块代码包含的代码 ...

  5. 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page13-20

    01 程序集 程序集是包含编译好的.基于.Net Framework的代码逻辑单元.一般来说,在Visual Studio中的一个项目即一个程序集,而一个项目中包含多种不同的代码文件.程序集分为可执行 ...

  6. 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page6-13

    01 中间语言(IL) .Net中间语言(IL)的特性,很大程度上来自于要支持多语言互操作性.要支持多语言互操作性,是因为微软想搞一个大事情,将它的老产品线VB和VC++,VJ++都装入.Net架构中 ...

  7. C#高级编程笔记之第二章:核心C#

    变量的初始化和作用域 C#的预定义数据类型 流控制 枚举 名称空间 预处理命令 C#编程的推荐规则和约定 变量的初始化和作用域 初始化 C#有两个方法可以一确保变量在使用前进行了初始化: 变量是字段, ...

  8. C#高级编程9 第14章 内存管理和指针

    C#高级编程9 内存管理和指针 后台内存管理 1) 值数据类型 在处理器的虚拟内存中有一个区域,称为栈,栈存储变量的浅副本数据,通过进入变量的作用域划分区域,通过离开变量的作用域释放. 栈的指针指向栈 ...

  9. 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page1-6

    前言 大家好.这是开通本号的第一篇文章.从事IT行业已经20年了,从使用PowerBuilder做企业信息系统开始,做了七八年开发,然后转型Java不是很成功,从07年之后,我转做产品经理,机缘巧合, ...

  10. Windows核心编程:第13章 内存体系结构

    Github https://github.com/gongluck/Windows-Core-Program.git //第13章 内存体系结构.cpp: 定义应用程序的入口点. // #inclu ...

随机推荐

  1. C#利用System.Net发送邮件

    啥也不说了,直接上干货 using System.Net.Mail;using System.Net; //使用发送邮件的邮箱 var emailAcount = "826217795@qq ...

  2. ASP.NET MVC 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁

    在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检 ...

  3. jmter提交图片

    jmter提交图片 https://www.cnblogs.com/linglingyuese/p/4514808.html

  4. Form 源码

    1. is_valid如果返回值如果为真 证明验证成功 意味着self.is_bound为True 和 self.errors为False def is_valid(self): return sel ...

  5. SQL中rownum和order by的执行顺序的问题

    在一个SQL中,如果同时使用rownum和order by,会有一个先后顺序的问题. 比如select id1,id2 from t_tablename where rownum<3 order ...

  6. 《精通Python设计模式》学习结构型之享元模式

    这个我日常当中也没有用到过, 真的是游戏行业用得多些? 学习一下, 有个印象. import random from enum import Enum TreeType = Enum('TreeTye ...

  7. day1作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...

  8. 【BZOJ】1152: [CTSC2006]歌唱王国Singleland

    题解 读错题了,是最后留下一个牛人首长歌颂他,和其他人没有关系,t就相当于数据组数 结论题,具体可看 https://www.zhihu.com/question/59895916/answer/19 ...

  9. Gitlab服务器维护

    一. 内容 Gitlab服务器的更新 Gitlab服务器备份与恢复 导入Git仓库 二. Gitlab服务器的更新 1. 使用SSH登陆Gitlab服务器 2. 停止后端的unicorn服务器 [ro ...

  10. MySQL 大数据量使用limit分页,随着页码的增大,查询效率越低下。

    数据表结构 CREATE TABLE `ad_keyword` ( `id` int(11) NOT NULL AUTO_INCREMENT, `plan_goods_id` int(11) DEFA ...