• 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. docker stack 部署 mysql 5.6

    =============================================== 2018/7/1_第1次修改                       ccb_warlock === ...

  2. Go 1 Release Notes

    Go 1 Release Notes Introduction to Go 1 Changes to the language Append Close Composite literals Goro ...

  3. 02 How to Write Go Code 如何编写go语言代码

    How to Write Go Code   如何编写go语言代码 Introduction   介绍 Code organization  组织代码 Overview  概述 Workspaces  ...

  4. vue总结 01基础特性

    最近有时间来总结一下vue的知识: 一.vue.js 被定义成一个开发web界面的前端库,是一个非常轻量的工具.vue.js本身具有响应式和组件化的特点. 我们不需要在维护视图和数据的统一上花费大量的 ...

  5. 虚拟机 SUSE Linux Enterprise Server 12 SP2 64

    下载地址:https://www.suse.com/zh-cn/products/server/download/ 下载以后使用虚拟机安装即可

  6. IPC对象的持续性

    转载:http://book.51cto.com/art/201006/207275.htm <UNIX网络编程:第2版.第2卷,进程间通信>本书全面深入地讲解了各种进程间通信形式,包括消 ...

  7. sass问题

     用sass的minix定义一些代码片段,且可传参数 /** * @module 功能 * @description 生成全屏方法 * @method fullscreen * @version 1. ...

  8. OnClickListener接口

    package com.example.wang.testapp2; import android.support.v7.app.AppCompatActivity; import android.o ...

  9. CCF CSP 201703-2 学生排队

    博客中的文章均为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-2 学生排队 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排, ...

  10. HDU 4443 带环树形dp

    思路:如果只有一棵树这个问题很好解决,dp一次,然后再dfs一次往下压求答案就好啦,带环的话,考虑到环上的点不是 很多,可以暴力处理出环上的信息,然后最后一次dfs往下压求答案就好啦.细节比较多. # ...