`
rcfalcon
  • 浏览: 228693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

.NET软件运行架构 之 打破编译器的界限

    博客分类:
  • .NET
阅读更多

之前在学校的时候,接触到的编程语言都是解释型(如basic)或者编译型(如C)。

其有严格的compile-time与run-time的界限,

基于该语言开发的程序员都不用关心底层的具体编译相关实现,最多也就调整一下编译设置,如linux下gcc的makefile等。

 

由于近些年的所谓“平台”越来越多,所以语言越来越强调跨平台性。

于是我们可以看到来自sun公司一个伟大的发明——JAVA。

其打破了平台绑定编译器的界限,“write once,run everywhere”。

具体实现是,其“编译”期生成的是一个统一的中间代码,然后在各个平台通过移植一套 JAVA虚拟机,屏蔽底层相关接口。在运行的时候,动态去解释该中间代码。

 

然后微软仿照其思想推出了.NET框架并在WINDOWS应用平台“封杀”了JAVA(将J#移出vs等),并推出了自诩更为强大的C#。(我承认C#确实很强大,微软也真的是完全具有技术实力,只是其过分的进行平台垄断所为业界不齿所以许多人说其反话,OK,这里我们不对该问题深入讨论)

.NET运行框架也类似JAVA,基于.NET的开发语言 编译生成一套称为LI的中间代码,其具有很多特性(如该代码是面向对象的等)

然后该套代码在具体某平台的运行的时候,进行部分编译,这一步的好处是可以动态针对不同平台进行优化。如之前由程序员开发的语言最多通过编译宏或者一些其他方式针对固定平台或者固定几种平台进行优化。而.NET将这一部分针对平台的优化做到了LI向下运行时期。

 

那么在用户的感觉可能就是 某个程序第一次运行时、或者启动时很慢,运行的时候还是很快的。(和JAVA基于中间语言“解释器”的方式不同,JAVA是运行时候也很慢。。貌似现在有新的机制可以提升JAVA的运行速度,这里也不进行具体讨论。)

 

.NET还有一个很复杂的功能是其运行时动态编译——它只编译当前运行的一部分LI。这可以节省很多运行其机器的资源,也很符合逻辑。

 

总之我个人觉得.NET这套运行机制是比较复杂的,这其中开发过程投入果然是让微软耗费了几年研发时间整起来的庞大工程。

 

那么我们整理一下程序运行架构的转移方向:

 

解释型 -> 编译型 -> 中间代码解释型 -> 中间代码编译型

 

今后可能会怎么发展呢?

我觉得在个人用户电脑发展越来越强大的趋势下,硬件性能已经不是客户端的大问题,所以我觉得今后可能在终端使用的多是 灵活、强大 的脚本解释型为主语言。

而在前端对性能要求高、需硬件操作能力强大,则使用编译型为主的语言。

 

 

 

分享到:
评论

相关推荐

    c#反编译器,asp.net反编译器,.net反编译器

    C#反编译器、ASP.NET反编译器和.NET反编译器是开发者在调试、学习或逆向工程.NET应用程序时使用的工具。这些工具能够将已编译的.NET程序集(如DLL或EXE文件)转换回源代码,帮助我们理解内部实现逻辑,修复错误,...

    .NET 程序集浏览器和反编译器

    .NET 程序集浏览器和反编译器是开发者在.NET平台上进行代码探索、学习和调试的重要工具。本文将深入探讨这些工具的功能、用途以及如何使用它们,特别是针对描述中提及的ILSpy。 ILSpy是一款开源的.NET程序集浏览器...

    .NET设计原理 Visual Studio.NET编译器的内部原理

    总的来说,理解.NET设计原理和Visual Studio.NET编译器的工作机制对于.NET开发者至关重要,这不仅涉及到代码的编写,还包括编译、运行和部署的全过程。通过深入学习这些概念,开发者可以更高效地利用.NET Framework...

    ASP.NET源码——简易c392编译器(附源代码).zip

    这个“ASP.NET源码——简易c392编译器(附源代码).zip”文件包含了一个简易的C#编译器的源代码,这对于理解编译器的工作原理、学习ASP.NET开发以及深入研究.NET框架的内部机制具有很高的价值。 首先,让我们了解一下...

    .NET 架构之美

    《.NET架构之美》是一本深入探讨.NET框架及其在软件开发中应用的书籍。这本书以PDF格式提供,旨在帮助读者理解和掌握.NET架构的核心概念、设计原则以及最佳实践。以下是本书可能涉及的一些关键知识点: 1. **.NET ...

    .net反编译器 .net反编译器

    .NET反编译器是开发人员和软件分析人员用于查看、理解和学习.NET框架下编译的程序集(assembly)内部工作原理的重要工具。这些工具能够将已编译的IL(Intermediate Language)代码转换回源代码,虽然无法完全恢复到...

    IL,VB.net,C#,Delphi反编译器 dll

    标题中的“IL,VB.net,C#,Delphi反编译器 dll”指的是与四种不同编程语言相关的反编译工具,这些语言包括中间语言(IL,全称Intermediate Language)、VB.NET(Visual Basic .NET)、C#(C Sharp)以及Delphi。...

    彻底征服.Net编译运行原理 - 02_软件概述_bs与cs.rar

    《彻底征服.Net编译运行原理 - 02_软件概述_bs与cs.rar》这个压缩包文件,主要聚焦于.Net框架的编译与运行机制,包括了.NET Framework的手动编译过程、公共语言运行时(Common Language Runtime, CLR)、类库规范...

    VB.net动态编译器

    综上所述,VB.NET动态编译器是一项强大的工具,允许开发者在运行时创建和执行代码,广泛应用于各种灵活和自适应的软件设计中。通过理解并熟练掌握这一技术,开发者可以极大地扩展.NET应用程序的能力。

    .NET Reactor 5.0混淆编译器

    .NET Reactor 5.0混淆编译器

    ASP.net版的百度HTML编译器

    采用三层架构: 1. 核心层: 为命令层提供底层API,如range/selection/domUtils类。 2. 命令插件层: 基于核心层开发command命令,命令之间相互独立。 3. 界面层: 为命令层提供用户使用界面。 满足不同层次用户的...

    VB.net 反编译器.zip

    反编译器是能够将已编译的.NET程序集(.dll或.exe)转换回源代码的工具,这对于软件调试、学习代码逻辑或者逆向工程等场景非常有用。"VB.NET 反编译器.zip"提供的显然就是这样一个工具,可能是为了帮助开发者查看和...

    轻量级的Dot Net编译器支持C#和VB.NET_.net 静态编译器.rar

    《轻量级Dot Net编译器:C#与VB.NET的静态编译探索》 在.NET框架中,编译器是开发过程中不可或缺的一部分,它...通过深入理解和熟练掌握这款编译器,开发者可以更好地发挥.NET平台的优势,创造出更加优秀的软件产品。

    .NET应用程序架构设计.原则.模式与实践.pdf

    .NET Framework是微软提供的一个全面的开发平台,包括了运行库、类库、编译器和工具,为开发者提供了构建各种类型的应用程序的能力。.NET Core是其最新的开源、跨平台版本,支持Windows、Linux和macOS。了解.NET的...

    ASP.NET MVC 项目架构

    【ASP.NET MVC 项目架构】是指使用ASP.NET MVC框架构建应用程序的一种设计模式,它结合了模型(Model)、视图(View)和控制器(Controller)这三个主要组件,旨在提高Web应用程序的可测试性和可维护性。ASP.NET MVC...

    解决某些Ghost安装版Win7系统无法运行.NET软件的问题.zip

    修改GAC的设置可能有助于解决.NET软件运行时的依赖问题。 "gacutil.exe"是全局程序集缓存实用工具,用于管理GAC中的程序集。它可以帮助我们查看、添加、删除和更新GAC中的程序集。在解决.NET软件运行问题时,可能...

    [其他类别]轻量级的Dot Net编译器支持C#和VB.NET v1.0_dynamic compile.zip

    轻量级的.NET编译器能够在这个框架内运行,利用其提供的服务和API进行编译工作。 7. **开发工具**:配合Visual Studio或其他.NET IDE,这些编译器源码可以被用作自定义构建系统的组件,提供定制化的编译解决方案。 ...

    asp.net_DLL文件反编译器

    8. **.bat文件**:下载请看.bat可能是一个批处理文件,通常用来自动化执行一系列命令,可能是为了帮助用户快速安装或运行反编译器。 总之,ASP.NET DLL文件反编译器是一个强大的工具,它允许开发者探索.NET框架下的...

    .net 实现的C#编译器

    通过学习和使用.NET实现的C#编译器,开发者不仅可以深入了解编译原理,还能掌握高级的编程技巧,从而提高软件开发的质量和效率。无论是构建自定义的开发工具还是提升个人的编程技能,Roslyn都是一个不可多得的资源。

Global site tag (gtag.js) - Google Analytics