zoukankan      html  css  js  c++  java
  • C#图解教程第一章 C#和.NET框架

    1.1 在.NET之前
     C#发音:see shap
     1.1.1 20世纪90年代后期的Windows编程
      20世纪90年代后期各语言缺点:
       1.纯Win32 API不是面向对象的,而且工作量比MFC的更发
       2.MC是面向对象的,但是他却不一致,并逐渐变得陈旧
       3.COM虽然概念上简单。但实际代码复杂,而且需要更多丑陋的,不雅的底层代码
      共同缺点:
       主要针对桌面程序而不是Internet的开发
    1.2 进入Microsoft.NET
     .NET框架是一种比MFC或COM编程技术更一致并面向对象的环境
     特点
      多平台:可以在广泛的计算机上运行,包括从服务器,桌面机到PDA和移动电话
      行业标准:使用行业标准的通信协议,比如XML,HTTP,OAP和WSDL
      安全性:提供更加安全的执行环境(即使有来源可疑的代码存在)
     1.2.1 .NET框架的组成
      


       1.编程工具--产生可执行代码(code)-->公共语言运行库(CLR)--使用-->基类库(BCL)
       2.编程工具--使用-->基类库(BCL)
      CLR(执行环境):
       Common Language Runtime,公共语言运行库
       在运行期管理程序的执行,包括内容:
        内存管理
        代码安全验证
        代码执行
        垃圾收集
       编程工具涵盖了编码和调试需要的一起,包括:
        Visual Studio集成开发环境
        .NET兼容的编译器(例如:C#,VB.JScript和托管的C++)
        调速器
        服务器端改进,比如ASP.NET
      BCL(是.NET框架使用的一个大的类库):
       Base Class Library,基类库
       可以在程序中使用
     1.2.2 大大改进的编程环境
      1.面向对象的开发环境
       完全面向对象
       形成良好的集成环境
       为本地程序和分布式系统提供了一致的,面向对象的编程模型
       为桌面,移动,Web开发提供了软件开发接口,涉及的对象范围广
      2.自动垃圾收集
       CLR有一项服务为GC(Garbage Collector,垃圾收集),"自动管理内存"
       自动从内存中删除程序不再访问的对象
       释放内存和检查内存泄漏
      3.互操作性
       允许在不同的.NET语言编写的软件模块间无缝地交互
        一种.NET写的程序可以使用甚至继承用另外一种.NET语言写的类(只要遵循一定的规则)
        很容易地集成不同编程语言生成的模块(有时被称为:"语言无关的")
       平台调用(platfrom invake,P/Invoke)
        允许调用并使用非.NET的,但通过Win32 DLL导出的纯C函数的代码(比如Windows API)
       允许与COM的互操作
        互相调用
      4.不需要COM
       .NET框架摆脱了COM的束缚,不需要使用COM
      5.简化的部署
       更加容易
       不需要使用注册表注册,一个程序只需要被复制到目标机器便可以运行
       并行执行
        允许一个DLL的不同版本在同一台机器上存在
      6.类型的安全性
       CLR检查并确保及其他数据对象的类型安全,即使是在不同编程语言编写的组件之间
      7.基类库
       提供了一个人广泛的基础类库
       BCL/FCL
        通用基础类:一组极为强大的工具,比如字符串操作,安全和加密
        集合类:实现了列表,字典,散列表以及位数组
        线程和同步类:用于创建多线程程序
        XML类:创建,读取以及操作XML文档
     1.3 编译成CIL
      程序集代码:非本机代码,,,CIL(Common Intermediate Language,公共中间语言)
      程序集包含:
       CIL
       使用的类型的元数据
       对其他程序引用的元数据
       CIL术语:
        IL/MSIL
     1.4 编译成本机代码并执行
      程序的CIL调用时才会被编译
      CLR执行步骤:
       检查程序集的安全特性
       在内存中分配空间
       可执行代码发送给实时编译器,把其中一部分编译成本机代码
      不被调用的代码不会被编译成本机代码,被调用的代码只被编译一次
      CIL-->本机代码 CLR在它运行时进行管理(释放无主内存,检查数组边界,检查参数类型和管理异常等)
       术语:
        托管代码:
         为.NET框架编写的代码
         需要CLR
        非托管代码:
         不在CLR控制之下运行的代码,比如:Win32 C/C++ DLL
      本机映像生成器或Ngen:
       可以把一个程序集转换成当前处理器的本机代码(免除了运行时的JIT编译过程)
      编程的执行综述:
       


    1.5 CLR
     .NET框架的核心组件,在操作系统的顶层并管理程序的执行
     


     提供服务:
      自动垃圾收集
      安全和认证
      通过访问BCL得到广泛的编程功能
    1.6 CLI
     有序和协作:标准
     公共语言基础结构
     把所以.NET框架的组件连结成一个内聚的,一致的系统
     展示了系统的概念和架构
     必须坚持的规则和约定
      组成:

      


     开放的国际标准规范
     CLI的重要组成部分:
      1.公共类型系统(CTS)
       定义了那些托管代码中一定会使用的类型的特征:
        CTS定义了一组丰富的内置类型,以及每种类型确定的,详细的特性
        .NET兼容编程语言提供的类型通常映射到CTS中已定义的内置类型集的某一个特殊子集
        *CTS最重要的特征之一是所有类型都继承自公共的基类--object*
      2.公共语言规范(CTS)
       详细说明了一个.NET兼容编程语言的规范,属性和行为
       其主题包括数据类型,类结构和参数传递
    1.7 缩写
     1.程序集
      公共中间语言:
       CIL
       IL
       MSIL
     2.公共语言基础结构(CLI)
      公共类型系统:
       CTS
      公共语言规范:
       CLS
     3.公共语言运行库(CLR)
      垃圾收集:
       GC
      实时编译器:
       JIT
      基类库:
       BCL
     

  • 相关阅读:
    对图像边缘进行随机均匀采样的C#算法实现
    [淡藤]最近几年在Chinapub上买的书
    重新认识C#: 玩转指针
    又是一年春来到
    需求定律在起着作用
    haha, 愚人节听鱼人歌
    名字就叫奥格工作室!
    effective c++ 第六章
    com 名字对象(1)IBindCtx
    com 名字对象(2)创建名字对象(IMoniker)
  • 原文地址:https://www.cnblogs.com/zzp0320/p/8256945.html
Copyright © 2011-2022 走看看