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

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

托管代码是一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)——执行。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章