网站首页 > 技术文章 正文
IT之家讯 近日,微软在其Windows博客中通过一篇博文详细解释了.Net Native,这是用于开发Win10应用商店应用的全新框架,微软向开发者展示了为何.Net Native更优秀。
从事开发的朋友对托管代码与本地代码之间的争论应该都有见闻。微软从上个世纪90年代后期开始着手构建.Net开发框架,并于2000年发布了.Net 1.0。该框架的理念是,开发者不需要再为每个应用编写类似内存管理等基础操作的代码,这些职责都可以由“公共语言运行库(CLR)”来担任,开发者只需要将注意力集中在更高的层面,实现功能即可。而实际运行效果也非常不错,关键是还能够减少代码工作量。不过一直以来性能方面总是被诟病,因为从高级语言代码到CLR再到最终的CPU指令需要一个转换过程,这会降低程序运行效率。
现在微软已经想出了两全其美的方法,推出了全新编程框架.Net Native。.Net程序员可以继续使用他们所熟悉的语言和工具,比如C#或Visual Basic以及其他常见的.Net运行库。与以往不同的是,基于.Net Native编写的代码编译完成之后,运行速度会更快,也不要求用户在电脑中安装.Net框架。.Net Native优点:
? 冷启动性能可提升60%;
? 热启动性能可提升40%;
? 本地编译,应用占用内存会更少;
? 不再依赖桌面.NET运行库;
? 由于应用是被编译到本地代码的,因此能够得到本地代码的性能(类比C++程序)
? 你仍然可以使用业内先进的C#或VB编程语言及其配套工具
? 你仍然可以使用.Net编程模型,利用扩展的API编写业务逻辑、内置内存管理以及异常处理。
由于编译.Net Native应用需要耗费时间,因此在Visual Studio中微软加入的新“调试(Debug)模式”,允许开发者可以像编写传统.Net应用那样编写.Net Native应用,不需要完全编译为本低代码即可在Visual Studio中运行。如此便能够加快开发速度,不过微软也提醒开发者,在Release模式下测试代码或者完全编译到本地代码在开发过程中同样非常重要。
微软通用应用,即能够在桌面PC、平板、手机以及Xbox等Windows10设备中运行的通用应用都是基于.Net Native编写的。对开发者来说,.Net Native是熟悉但又更快的编程框架;对最终用户来说,不需要再安装.Net框架即可使用UWP通用应用。应用也将更加轻便,且运行速度更快(相比.Net应用)。
如果你想了解更多,可点此参考微软官方页面。(via:WinBeta)
- 上一篇: Hibernate 和 JPA
- 下一篇: 鸿蒙ArkUI-X已更新适配API13啦
猜你喜欢
- 2025-01-04 一次“败笔”之后,微信会否遭遇QQ的困境?
- 2025-01-04 鸿蒙ArkUI-X已更新适配API13啦
- 2025-01-04 Hibernate 和 JPA
- 2025-01-04 开发不同类型的App需要用到哪些技术?
- 2025-01-04 迅雷极速版v1.0.12 下载:批量下载磁力链接
- 2025-01-04 DevExpress v16.1新功能介绍
- 2025-01-04 Android native开发环境搭建
- 2025-01-04 基于C++音视频高手课-WebRTC远程桌面后台服务实战
- 2025-01-04 Electron简介
- 2025-01-04 WebApp与Native App再战一轮?
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)