通过最近一段时间对C#的复习,发现当初学习的C#开发WinForm应用程序,只是为了当初的项目并没有真正去理解C#、.Net、.Net Frameworke、托管和非托管代码等一系列知识点的具体含义和运作过程。最近又开始返回来慢慢理解,本文提供了一种好理解这些含义的路线。

具体总结如下:

注意:我觉得这几个名词如果理解的话应该是从托管代码->非托管代码->.Net->.Net Framework ->C#这个顺序理解的话比较容易理解。

1、托管代码和非托管代码

在说托管代码前应提前说说CLR(公共语言运行库)它和Java的虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离

为了提高平台的可靠性,以及为了达到面向事务的所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。比如,在CLR监视之下运行的程序属于“托管的”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管的”(unmanaged)的代码也称为机器码。 .NET提供的公共语言运行库是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。但是其存在10%的性能降低。

这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现,依靠一种以运行时为目标的编译器开发的代码叫做可操控代码。

 托管代码:由公共语言运行库环境(CLR)而不是直接由操作系统执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如内存的分配、栈的操作、自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。

在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全漏洞和不稳定程序的编程错误。同样,许多不可靠的设计也自动的被增强了安全性,例如 类型安全检查,内存管理和释放无效对象。程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。这就意味着更短的开发时间和更健壮的程序。

托管代码是一Microsoft的中间语言,他主要的作用是在.NET FRAMEWORK的CLR执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段:
过程:源代码- >托管代码->可执行文件或者生成的库文件
.Net: .NET就是微软用来实现 XML,Web ,Services,SOA(面向服务的体系结构service-oriented architecture)和敏捷性的技术。一个.NET应用是一个运行于.NET Framework之上的应用程序,如果一个应用程序跟.NET Framework无关,它就不能叫做.NET程序。

组成..net软件技术的组件,组件之一,“智能”客户端应用软件和操作系统,包括PC、PA、手机或其他移动设备通过互联网、借助Web Services技术,用户能够在任何时间、任何地点都可以得到需要的信息和服务。例如:可以在手机上阅读新闻、定购机票、浏览在线相册等等。CRM系统,应用了.NET的解决方案后所有的业务人员便可以通过手机或PDA直接访问客户信息了。

.Net Framework:Microsoft .NET Framework是用于Windows的新托管代码编程模型。它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。在当下.Net Framework就是作为安全模型。

.NET Framework安全解决方案基于管理代码的概念,以及由通用语言运行时(CLR)加强的安全规则。大部分管理代码需要进行验证以确保类型安全及预先定义好的其它属性的行为的安全。例如,在验证的代码中,声明为接收4字节值的访问将拒绝提供8字节参数的调用,因为不是类型安全的。验证过程还确保了执行流只传送到已知的位置,如方法入口点--这个过程去除了跳转到任意位置执行的能力。

组合是.NET Framework应用程序的构件。它们组成了部署,版本控制,重用,激活作用域,安全认证的基本单元。应用程序的组合是从网站上下载到客户端的。

C#:C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。

最后说明一下C#语言运行过程:

C#通过编译器被编译成为托管代码->然后通过.NET Framework的虚拟机——被称之为通用语言运行库(CLR)——执行。

对C#、.Net、.Net Frameworke、托管和非托管代码的具体理解相关推荐

  1. .NET Framework 托管与非托管代码

    可以理解为所有.net程序的环境支持,或说运行环境. 详细解释: NET Framework 是一种新的计算平台,它简化了在高度分布式 Internet 环境中的应用程序开发..NET Framewo ...

  2. 您也使用托管C++吗?

    转向.NET后,手头上往往仍有旧的模块要重用.也许这些模块是Delphi写的,也许是C/C++写的,或者是其它编程语言--为了能把它们移植到.NET下,或者是在.NET中调用,To be or not ...

  3. VC++ 非托管代码 托管代码

    为什么80%的码农都做不了架构师?>>>    #pragma managed #pragma unmanaged 看了好多好多非托管代码和托管代码之间相互调用,感觉都没有说在重点上 ...

  4. c语言如何编写截屏程序_截屏视频:为Optimus Mini三键盘编写托管的.NET插件

    c语言如何编写截屏程序 Here's a screencast demoing writing Managed .NET Plugins for the Optimus Mini Three Keyb ...

  5. 托管代码与非托管代码之间的交互

    基础知识:如下所示: 1.在运行时控制下执行的代码叫做托管代码:在运行时之外执行的代码叫做非托管代码. 2.可以使用vs提供的dumpbin工具来获取动态链接库中提供的所有函数.如:dumpbin / ...

  6. 托管代码和非托管代码的介绍,以及在这区别下的混合调试方法

    什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托 ...

  7. ArcGIS Enterprise托管服务/托管服务器/托管数据库-之“托管”理解

    ArcGIS Enterprise之"托管"理解-托管服务/托管服务器/托管数据库 1.arcgis enterprise之"托管"理解 1.1托管服务器的作用 ...

  8. 在 C# 中通过 P/Invoke 调用Win32 DLL

    ,.NET Framework 1.0 或 1.1 版类库中存在任何 Windows 所没有的功能限制都不足为怪.毕竟,32 位的 Windows(不管何种版本)是一个成熟的操作系统,为广大客户服务了 ...

  9. 《CLR via C#》笔记——CLR的执行模型

    一.将源代码编译成托管代码 1, CLR(Common Language Runtime)公共语言运行时是一个可由多种语言使用的"运行时",CLR的核心功能(比如内存管理,程序集加 ...

最新文章

  1. Javascript中的Callback方法浅析
  2. Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...
  3. 深入BCB理解VCL的消息机制
  4. 工业项目,用MCU还是PLC?
  5. c语言用数组实现栈的插入,用数组实现栈的功能的C语言代码?
  6. WebFlux02 SpringBoot WebFlux项目骨架搭建
  7. python具有伪代码的本质吗_Python的优点之一是具有伪代码的本质。( )_学小易找答案...
  8. python中textinput_python – 在Kivy应用程序中获取textinput值
  9. 前端设定项目奖金有多少_【系列二】建筑工程项目激励模式探讨
  10. Win10显示此应用无法在你的电脑上运行 此应用无法在你的电脑上运行处理办法
  11. Python笔记-方差分析之多因素方差分析
  12. python flask高级编程之restful_flask-restful使用总结
  13. JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
  14. 未能加载文件或程序集或它的某一个依赖项。参数不正确
  15. 201771010102 常惠琢 《面向对象程序设计(java)》第十三周学习总结
  16. 数据库建模——概念模型、逻辑模型、物理模型
  17. vc 热键、组合键的用法 MFC c++ hotkey WM_HOTKEY
  18. 小米5s Plus安装类原生系统
  19. python利用中误差检验影像精度
  20. UICC 之 USIM 详解全系列——USIM Demo详解

热门文章

  1. 原来,PPTV是在筹划国内上市呐!
  2. Netty(八) Netty心跳检测机制
  3. 一次脑残的记录: Linux 中实时任务调度与优先级
  4. 福州大学计算机考研要准备多久,福州大学(专业学位)计算机技术考研难吗
  5. 弥勒“甘丝蜜朵”旅游地产策划规划方案
  6. select 多选之 xm-select
  7. 零基础学习java第一课(适合无基础的非科班生)
  8. Android-向手机模拟器添加图片
  9. python收音机_FM收音机入门,以及Python实现FM调制解调
  10. Oracle EBS财务模块(二)基本组成模块