C#温故而知新—闲话.Net

在Java搞得如火如荼时,微软为了巩固自己的霸主地位,自然要来分一杯羹,于是.NET应运而生。

  1. .Net的战略。

NET是一种面向网络、支持各种用户终端的开发平台环境。.NET的特点:

  • 软件即服务(SaaS)

微软的.NET战略意味着:微软公司以及在微软平台上的开发者将会制造服务,而不是制造软件。在未来几年之内,微软将陆续发布有关.Net的平台和工具,用于在因特网上开发web服务。那时,工作在.Net上的用户、开发人员和ET工作人员都不再购买软件、安装软件和维护软件。取而代之的是,他们将定制服务,软件会自动安装,所有的维护和升级也会通过互联网进行

  • 基于XML的共同语言

XML是一种标记语言。作为元语言,它可以定义不同种类应用的数据交换语言。在.NET体系结构中,XML作为一种应用间无缝接合的手段,用于多种应用之间的数据采集与合并.用于不同应用之间的互操作和协同工作。

  • 融合多种设备和平台

随着Internet逐渐成为一个信息和数据的中心,各种设备和服务已经或正在接入和融入Internet,成为其中的一部分。.Net谋求与各种Internet接入设备和平台的一体化,主要关注在无线设备和家庭网络设备及相关软件、平台方面。

  • 新一代的人机界面

新一代人机界面主要体现在"智能与互动"两个方面。.Net包括通过自然语音、视觉、手写等多种模式的输入和表现方法;基于XML的可编辑复合信息架构——通用画布;个性化的信息代理服务:使机器能够更好地进行自动处理的智能标记等技术。

  1. CLI

    微软给.NET绘制了一幅美好的蓝图,提出了一套公共语言架构(CLI)。先来看看CLI到底为何物。

CLI包含了CTS (Common type system, 通用类型系统), CIL (Common Intermediate Language, 公共中间语言)。图中的CLS (Common Language Specification, 公共语言规范)是 CTS的子集, 所有与CLI兼容的编程语言都必须遵守它

微软是这么解释CLS的:

CLS 规则定义了通用类型系统的子集,即所有适用于公共类型系统的规则都适用于 CLS,除非 CLS 中定义了更严格的规则。CLS 通过定义一组开发人员可以确信在多种语言中都可用的功能来增强和确保语言互用性。CLS 还建立了 CLS 遵从性要求,这帮助您确定您的托管代码是否符合 CLS 以及一个给定的工具对托管代码(该代码是使用 CLS 功能的)开发的支持程度。

CLI公共语言架构的核心是什么呢?这里包含了微软的野心,MS想通过这个架构实现向上无关性(跟具体语言无关)和向下无关性(与具体平台无关)。

只要遵从CLI,可以使用任何语言来开发程序(例如c#,c++),当然,这些语言需要符合CLS。程序开发好后编译器会将其编译为CIL(通用中间语言)。这个中间语言就牛X了,不管是什么语言开发的程序,编译后的CIL都是一样的,所以这也为不同语言的协作提供了方便。比如c++用来做数学运算比较方便,效率较高,大可以使用c++来编写数学计算的类库,然后在c#里调用这个类库。这便是向上无关性。

再来看看ms怎么实现向下无关性的。上面说了,程序编译的结果是CIL,那么在运行时,更具不同的平台,编译器只需要将CIL装换为相应的本地代码就能运行了。

  1. CLR

微软是靠Windows起家的,自然而然的,微软在Windows平台实现了CLI,结果就是我们今天的.NetFrameWork,包含.NET类库与CLR。

让我们来揭开CLR的面纱。

CLR (Common Language Runtime, 公共语言运行库) : MS用于Windows 的CLI实现

.NetFrameWork提供了一个运行时环境,叫做公共语言运行时(CLR),它管理着代码的执行,并使得开发过程变得更加简单。可以将它想象为一个虚拟机,它为各种.NET应用提供了一个高性能的、抽象于底层操作系统和硬件环境的运行时环境。

CLR的主要功能 :

  • 管理代码的执行
  • 提供通用类型系统
  • 提供系统服务

NetFrameWork程序的运行过程

编写代码à编译成中间语言MSIL(Microsoft Intermediate Language,微软中间语言)à执行时被即时(JIT)编译器编译成为本地代码à运行在CLR (Common Language Runtime, 公共语言运行库)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏星流全栈

2016年十大顶级开源项目

4063
来自专栏walterlv - 吕毅的博客

极限压缩 PNG

2017-11-29 12:17

1032
来自专栏申龙斌的程序人生

搞定GTD - 掌控流程之三:组织整理

在明确意义那一步,只能去掉没有意义的项目和事情,在这一步才是GTD最复杂和最核心的流程,有人将第二步和第三步合在一起。对于OmniFocus来说,经过这个步骤后...

3229
来自专栏SDNLAB

解决方案提供商关注的5大顶级IoT网关

物联网网关 尽管有了数据分析工具,云计算和连接的设备仍然是构成物联网产品的关键,但网关也至关重要。 ? 网关具备设备连通性、协议转换、数据过滤和处理以及安全性等...

2873
来自专栏块链

Elixir vs. Ruby和Phoenix vs. Rails:选择什么和为什么

几年来,Web开发人员一直在积极讨论一种名为Elixir的新编程语言及其最受欢迎的Phoenix框架。 Elixir与Ruby和Phoenix vs. Rail...

2050
来自专栏不止思考

移动设备(手机)的唯一ID有哪些

对于APP自身产品而言,使用设备唯一ID可以追踪到用户从下载到激活、注册、使用、流失、回归的全流程数据,对产品运营工作非常有帮助。

1972
来自专栏老九学堂

新手程序员编程必不可少的八大工具

对于程序员来说,编程是一个相当耗费时间和经历的过程,而在这个过程中,一个称手而高效的工具就显得非常重要。 加上近期有不少小伙伴在问一些方方面面的工具,所以今天就...

4748
来自专栏程序员互动联盟

程序员都用什么编写程序?

说到编写代码的工具说多了多如牛毛,经典的来回也就是几个,现在笔者根据多年的经验列举下常见的编写程序工具。 vim+emacs vim是在linux编写代码的利器...

2967
来自专栏张善友的专栏

微软修改了Managed Extensibility Framework(MEF)的协议

      Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(D...

21210
来自专栏杨建荣的学习笔记

几款文本编辑器的试用体验

一直以来文本编辑器用了不少,一旦习惯了就不愿意轻易改动了。从emeditor,ultraeditor,notepad++这些工具用到如今,似乎已经习惯了...

45410

扫码关注云+社区