为什么要将代码托管

Z, ZLW 585

为什么要将代码托管?代码托管的原因是:1、平台无关性;2、提高性能;3、语言的互操作性;4、可协同性;5、可集成性;6、安全可靠。其中,平台无关性意味着包含字节代码指令的同一个文件可以放在任一个平台中,运行时编译过程的最后阶段可以很容易完成。

1、平台无关性

这意味着包含字节代码指令的同一个文件可以放在任一个平台中,运行时编译过程的最后阶段可以很容易完成,这样代码就可以运行在该特定的平台上。也就是说编译为中间语言就可以获得.NET平台无关性,这与编译为Java字节代码就会得到Java平台无关性是一样的。

2、提高性能

IL比Java字节代码的作用还要大。IL总是即时编译的(称为JIT编译),而Java字节代码常常是解释性的,JIT编译器并不是把整个应用程序一次编译完(这样会有很长的启动时间),而是只编译它调用的那部分代码(这是其名称由来)。代码编译过一次后,得到的内部可执行代码就存储起来,直到退出该应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了。Microsoft认为这个过程要比一开始就编译整个应用程序代码的效率高得多,因为任何应用程序的大部分代码实际上并不是在每次运行过程中都执行。

这解释了托管IL代码的执行几乎和内部机器代码的执行速度一样快,编译过程的最后一部分是在运行时进行的,JIT编译器确切地知道程序运行在什么类型的处理器上,利用该处理器提供的任何特性或特定的机器代码指令来优化最后的可执行代码。

JIT编译器不仅可以进行Visual Studio 6所能完成的优化工作,还可以优化代码所运行的特定处理器。

3、语言的互操作性

使用IL不仅支持平台无关性,还支持语言的互操作性。简言之,就是能将任何一种语言编译为中间代码,编译好的代码可以与从其他语言编译过来的代码进行交互操作。
那么除了C#之外,还有以下语言可以通过.NET进行交互操作:

  • VB.NET
  • Visual C++ .NET
  • Visual J#
  • 脚本语言
  • COM和COM+

4、可协同性

在功能层面要包含仓库管理、分支管理、权限管理、提交管理、代码评审等代码存储和版本管理等功能,让开发者更好的协同工作。

5、可集成性

好的代码托管服务应该具备灵活和简易的三方工具集成能力, 有些甚至直接提供了Built-in的CI/CD能力, 降低DevOps的实施落地成本。

6、安全可靠

这是最重要的一点,尤其是对于企业而言, 代码的安全性、服务的稳定性,、数据是否存在丢失的风险, 是会最被优先考量的点。

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

拓展阅读

代码托管是什么

托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的语言共享统一的类库集合,并能被编码成为中间语言(IL)。运行库编译器(runtime-aware compiler)在托管执行环境下编译中间语言(IL)使之成为本地可执行的代码,并使用数组边界和索引检查,异常处理,垃圾回收等手段确保类型的安全。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部