【转载】“菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)

【转载】“菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)

 既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容。

<span>【转载】“菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)</span>

  最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基础。.NET Framework不是凭空出来的,实际上API,COM+,和一些相关驱动依然是它的基石。.NET Framework只不过是对这些前辈们进行了系统的封装和扩充,在这个过程中,吸取了Java框架的很多经验。关于Win32 API与.NET Framework API的对应关系,可以参考Microsoft Win32 to Microsoft .NET Framework API Map

菜谱:除了蓝色部分以外,其他均为.NET Framework的主体。它是基于通用语言基础架构(Common Language Infrastructure,CLI)。它就像一本江湖上失传已久的菜谱。

厨师通用语言运行平台(Common Language Runtime,CLR),是对CLI这个架构在Windows平台的实现。简单地理解就是CLR这个厨师,让CLI这本菜谱发挥了其真正的作用。

  下面我们来尝尝这些佳肴:

食物类库(Framework Class Library,FCL),所有在.NET能够使用的类库。分为两部分,一部分为原料,另一部分为成品菜

  • 原料基类库Base Class Library(BCL) ,顾名思义,其中包含一些基础的类,如:IO,String,Net等等。它们是做菜所必需的原料,当然也可以直接吃。
  • 成品菜FCL中的其他类。这些类库基本上都是引用BCL,在这些类库的基础上做的扩充。如:ADO.NET,ASP.NET,Windows.Forms等等,它们是我们编写程序更加方便,专一。

餐具公共语言规范Common Language Specification (CLS)公共类型系统Common Type System (CTS) ,是CLI的一部分内容,它们的目的是保证各种语言与.NET Framework的兼容性的。就好像有的食客习惯用筷子,有的则喜欢用叉子,像八戒就用九齿钉耙。有了CLSCTS,各路食客就能使用自己喜欢用的餐具吃上可口的食物了。例如:把C#中的int和VB中的Integer统一映射到System.Int32。

食客:各种语言,C#,VB,等等。

  至于食客们是怎么吃这些东西的,可以参考深入探索.NET框架内部了解CLR如何创建运行时对象,这篇文章详细的解释了,.NET是如何运行的,涉及一些底层的东西,大家了解就行,不必深究。

  好了,这是我自己对.NET Framework的一点理解,可能比喻有不恰当的地方,甚至有概念性的错误,希望大家指出来。我毕竟是初学者,大家的批评会帮助我成长。谢谢!

 

【转自】https://www.cnblogs.com/eshizhan/archive/2010/01/26/1657041.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119346.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 身份管理系统与解决方案[通俗易懂]

    身份管理系统与解决方案[通俗易懂]身份管理的进化式发展身份管理的需求来自于不同部门安全服务解决方案框架身份管理解决方案整体架构典型企业安全身份管理逻辑架构新员工入职帐号创建员工入职服务–基于策略身份供应实现统一认证

    2022年8月4日
    6
  • Servlet.service() for servlet [dispatcherServlet] in context with path [] th

    Servlet.service() for servlet [dispatcherServlet] in context with path [] th控制台报错信息Servlet.service()forservlet[dispatcherServlet]incontextwithpath[]threwexception[Requestprocessingfailed;nestedexceptionisjava.lang.NullPointerException]withrootcausee1.controller层没有加@ResponseBody2.Service层实现类未添加注解@Autowired记

    2022年5月8日
    326
  • java输出值取后两位小数,Java输出结果保留两位小数

    java输出值取后两位小数,Java输出结果保留两位小数今天在做PAT007-六度空间,输出结果需要保留两位小数,所以在网上找了相关资料。一共有四种方法,代码如下:importjava.math.BigDecimal;importjava.text.DecimalFormat;importjava.text.NumberFormat;publicclassDecimals{doublef=111231.5585;publicvoi…

    2022年7月8日
    26
  • 浏览器到服务器端进行通信的简单理解

    浏览器到服务器端进行通信的简单理解

    2021年8月15日
    53
  • pycharm django环境搭建_IDEA如何创建项目

    pycharm django环境搭建_IDEA如何创建项目Django是比较经典的Pythonweb框架,最近刚好在项目中用到了Django,临阵磨枪学了下,这里先总结下如何用Pycharm创建一个Django项目。1首先来说下和Javaweb框架的一些不同个人感觉:使用Javaweb框架的时候,在与数据库进行数据交互时,其实需要写一些SQL语句的,但是使用Django框架,直接通过配置,以及models中的getfilter方法调用,就…

    2022年8月29日
    3
  • Android Hook技术实践

    Android Hook技术实践一、hook简介hook俗称钩子,主要作用是替换系统内存中的对象,在上层调用此对象的方法的时候可以修改传入参数或者返回值,达到欺骗上层的目的,就像小红帽故事里的大灰狼,通过扮演小红帽的外婆的角色来达到欺骗小红帽的目的。其实hook就是一种中间人劫持的思想,如图所示:在安卓中实现hook主要通过两种方式:1.反射技术和代理实现,当然代理不管是动态还是静态的都是可以实现的,但是只能ho

    2022年5月26日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号