对C#、.Net、.Net Frameworke、托管和非托管代码的具体理解
通过最近一段时间对C#的复习,发现当初学习的C#开发WinForm应用程序,只是为了当初的项目并没有真正去理解C#、.Net、.Net Frameworke、托管和非托管代码等一系列知识点的具体含义和运作过程。最近又开始返回来慢慢理解,本文提供了一种好理解这些含义的路线。
具体总结如下:
注意:我觉得这几个名词如果理解的话应该是从托管代码->非托管代码->.Net->.Net Framework ->C#这个顺序理解的话比较容易理解。
1、托管代码和非托管代码
在说托管代码前应提前说说CLR(公共语言运行库):它和Java的虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离。
为了提高平台的可靠性,以及为了达到面向事务的所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。比如,在CLR监视之下运行的程序属于“托管的”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管的”(unmanaged)的代码也称为机器码。 .NET提供的公共语言运行库是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。但是其存在10%的性能降低。
托管代码:由公共语言运行库环境(CLR)而不是直接由操作系统执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如内存的分配、栈的操作、自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全漏洞和不稳定程序的编程错误。同样,许多不可靠的设计也自动的被增强了安全性,例如 类型安全检查,内存管理和释放无效对象。程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。这就意味着更短的开发时间和更健壮的程序。
组成..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、托管和非托管代码的具体理解相关推荐
- .NET Framework 托管与非托管代码
可以理解为所有.net程序的环境支持,或说运行环境. 详细解释: NET Framework 是一种新的计算平台,它简化了在高度分布式 Internet 环境中的应用程序开发..NET Framewo ...
- 您也使用托管C++吗?
转向.NET后,手头上往往仍有旧的模块要重用.也许这些模块是Delphi写的,也许是C/C++写的,或者是其它编程语言--为了能把它们移植到.NET下,或者是在.NET中调用,To be or not ...
- VC++ 非托管代码 托管代码
为什么80%的码农都做不了架构师?>>> #pragma managed #pragma unmanaged 看了好多好多非托管代码和托管代码之间相互调用,感觉都没有说在重点上 ...
- c语言如何编写截屏程序_截屏视频:为Optimus Mini三键盘编写托管的.NET插件
c语言如何编写截屏程序 Here's a screencast demoing writing Managed .NET Plugins for the Optimus Mini Three Keyb ...
- 托管代码与非托管代码之间的交互
基础知识:如下所示: 1.在运行时控制下执行的代码叫做托管代码:在运行时之外执行的代码叫做非托管代码. 2.可以使用vs提供的dumpbin工具来获取动态链接库中提供的所有函数.如:dumpbin / ...
- 托管代码和非托管代码的介绍,以及在这区别下的混合调试方法
什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托 ...
- ArcGIS Enterprise托管服务/托管服务器/托管数据库-之“托管”理解
ArcGIS Enterprise之"托管"理解-托管服务/托管服务器/托管数据库 1.arcgis enterprise之"托管"理解 1.1托管服务器的作用 ...
- 在 C# 中通过 P/Invoke 调用Win32 DLL
,.NET Framework 1.0 或 1.1 版类库中存在任何 Windows 所没有的功能限制都不足为怪.毕竟,32 位的 Windows(不管何种版本)是一个成熟的操作系统,为广大客户服务了 ...
- 《CLR via C#》笔记——CLR的执行模型
一.将源代码编译成托管代码 1, CLR(Common Language Runtime)公共语言运行时是一个可由多种语言使用的"运行时",CLR的核心功能(比如内存管理,程序集加 ...
最新文章
- Javascript中的Callback方法浅析
- Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...
- 深入BCB理解VCL的消息机制
- 工业项目,用MCU还是PLC?
- c语言用数组实现栈的插入,用数组实现栈的功能的C语言代码?
- WebFlux02 SpringBoot WebFlux项目骨架搭建
- python具有伪代码的本质吗_Python的优点之一是具有伪代码的本质。( )_学小易找答案...
- python中textinput_python – 在Kivy应用程序中获取textinput值
- 前端设定项目奖金有多少_【系列二】建筑工程项目激励模式探讨
- Win10显示此应用无法在你的电脑上运行 此应用无法在你的电脑上运行处理办法
- Python笔记-方差分析之多因素方差分析
- python flask高级编程之restful_flask-restful使用总结
- JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
- 未能加载文件或程序集或它的某一个依赖项。参数不正确
- 201771010102 常惠琢 《面向对象程序设计(java)》第十三周学习总结
- 数据库建模——概念模型、逻辑模型、物理模型
- vc 热键、组合键的用法 MFC c++ hotkey WM_HOTKEY
- 小米5s Plus安装类原生系统
- python利用中误差检验影像精度
- UICC 之 USIM 详解全系列——USIM Demo详解