菜鸟之旅——初识.NET

news/2024/7/20 15:59:42 标签: 操作系统, c#, 内存管理

  入坑.Net 也已经两年多了,既然在微软.Net 体系下混,对.Net 体系也需要了解一下,当然这些知识也都是查阅资料都能够查到的,这里主要是对自己所学的整理,况且最近的学习有些闭门造车的味道,现在想写出来和大家分享一下,如果理解有偏差,欢迎园友指正!

  .Net Framework经历了很多版本的变更,但是它的框架没有太大的变化,包括了公共语言运行时(CLR)、基类库和.Net Framework类库、公共语言规范和支持的语言;

        

  公共语言运行时(CLR

  CLR是.Net Framework的基础内容,也是.Net程序的运行环境,可以将其看作一个在执行时管理代码的代理,它提供了内存管理、线程管理、代码执行、垃圾收集(GC)和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。

  C#或者其它各种语言编写的源代码通过编译器生成IL代码托管(IL也称托管代码),最后得到一个托管模块,一个或多个托管模块组成程序集(assembly)交给CLR运行,但是CLR还是不能直接和操作系统(OS)直接交互,还需要JIT引擎来进行“翻译”,变成计算机可以识别的二进制代码交给操作系统执行。

  对了这里提到了CLR就不得不提到托管代码非托管代码:

  托管代码 (managed code)是由CLR(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全黑洞和不稳定程序的编程错误。同样,许多不可靠的设计也自动的被增强了安全 性,例如 类型安全检查,内存管理和释放无效对象。程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。这就意味着更短的开发时间和更健壮的程序。

  非托管代码 (unmanaged code)是指在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。

  基类库和.Net Framework

  基类库(NET Standard Library)包含支持底层操作的一系列通用功能,覆盖了集合操作、线程支持、代码生成、输入输出(IO)、映射和安全等领域的内容。另外,.Net Core也是基类库的实现,当然也有自己独特的实现,并且与.Net Framework不同,它是支持跨平台的,详细学习会在后续的博客中分享。

  .Net Framework是基类库在windows操作系统下的实现,包含类库:数据库访问(ADO .NET等)、XML支持、目录服务(LDAP等)、正则表达式和消息支持;并且还实现很多我们开发人员平常使用的应用程序开发技术:ASP .NET技术、WinFroms技术和WPF技术等高级编程技术。

  公共语言规范

  很遗憾,我对这公共语言规范(CLS)也不了解,也只能说说大概。

  .Net支持很多语言,有C#、VB等,每种语言必定带着自己的特性但是大家都能够通过编译在CLR上面跑,并且都可以与其他语言进行互操作,这都是因为所有语言都遵守了CLS;.NET Framework将CLS定义为一组规则,所有.NET语言都应该遵循此规则才能创建与其他语言可互操作的应用程序,但要注意的是为了使各语言可以互操作,只能使用CLS所列出的功能对象,这些功能统称为与CLS兼容的功能。再往下的细节实现就不知道了,把这个也列在今后的学习计划当中吧。

  总结

  本篇博客就写到这吧,内容也大都是园子里内容,也希望能够帮助到想入坑.Net的朋友们。

转载于:https://www.cnblogs.com/nbclw/p/8214377.html


http://www.niftyadmin.cn/n/1120811.html

相关文章

nodejs如果npm install express -g远程安装费时

npm install -g cnpm --registry https://registry.npm.taobao.org转载于:https://www.cnblogs.com/wicub/p/4895422.html

解决IE6 下背景不透明的问题

2019独角兽企业重金招聘Python工程师标准>>> 应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的“存在”,虽然IE7已经支持都是IE6还是不行。查了一些资料&#xff0…

Apache修改127.0.0.1的指向并解决修改后无法访问的问题

打开Apache配置文件httpd.conf,找到DocumentRoot,将原来的路径那一行用#注释掉,再在下面写上自已的路径,比如这里我用的是DocumentRoot "C:/MyFiles". 改好后如下图所示: 改完可能会出现You dont have permi…

P2015 二叉苹果树

题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1。 我们用一根树枝两端连接的结点的编号…

c# 属于自己封装的类库(静态页面生成三种方式、导出文件类)

源代码完全公开,欢迎大家灌水!部分代码如下 1. //Response.ContentType是输出流的 HTTP MIME 类型 //Response.ContentType --- word文件 //application/vnd.ms-excel --- excel文件 //更多格式请参考http://walle…

在VS中打开.ui,几秒后退出

在VS中 拓展->QT VS Tools->options 将false改成true

Oracle12c Release1 安装图解(详解)

Oracle12c Release1 安装图解(详解)Oracle12c 终于发布了,代号为 c,即为 Cloud(云),替代了网格(Grid)运算。我的机器基础环境:Windows8(x64) Oracle11g Rele…