实验进行中:.NET WebAssembly支持
来源:互联网 发布:复古照片相关软件 编辑:程序博客网 时间:2024/06/16 13:48
目前四大主流浏览器都默认支持WebAssembly,而.NET社区也在继续推动为.NET开发者提供相关能力,来将他们的代码编译成WebAssembly,然后在浏览器上运行。
WebAssembly是一种二进制web格式,旨在以接近原生的性能运行不是用JavaScript语言编写的应用。目前,C、C++和Rust都可以通过基于LLVM的工具链来编译成wasm格式。这些语言编译成原生代码,然后可以在没有任何附加代码的情况下运行。当然,.NET通常需要一个运行时平台来执行代码,因此在浏览器中使用它在理论上是可行的,只是需要一些额外的工作来让它更高效地运行。
其中一个非常可能实现.NET WebAssembly的项目,是被Steve Sanderson称作Blazor的项目,虽然它还只是一个进行中的实验,远远没有生产价值。Blazor在Mono运行时平台上,运行被编译成wasdm格式的.NET代码。目前,这导致一个“Hello World”应用的负载比预期中要大,Sanderson说:
自从迁移到Mono运行时平台,新的Blazor应用就变得很庞大(大约4MB)。这是因为Mono上的WASM还没有进行任何无效代码剥离和压缩,并且打包了一个非常大的运行时库。这个运行时库包括许多桌面相关的功能,但这些功能是与web无关的。我期望,一个面向web优化过的生产应用,能够减小到接近300KB的大小。
这个项目的混合编译模型,已经在2017年11月1日合并到Mono项目。
另外一种可能适合.NET的方法,类似于现有的原生代码编译方法,即静态编译组合成wasm的代码。这些代码包括Mono C 运行时平台和开发者的.NET代码。截至本文撰写时,一个使用这种方式的样本应用,会向用户计算机下载10MB代码。相比之下,加载一次最近的Twitter.com完整页面会下载超过7MB的内容,而访问一次最近的Amazon.com会下载8.9MB的内容。据Miguel de Icaza所说,这个大小应该会随着时间推移而减少:
一旦我们使用一种定制的概要文件,这个大小应该会明显减少。这种定制的概要文件基于移动端的概要配置文件,并且移除了许多不必要的功能。
这个项目采用“基于LLVM的实验性的WebAssembly,LLVM连接器和二进制化工具来生成最终的.wasm代码”,但是在最近几个月还没有更新过。
在官方的CoreRT库中,也有WebAssembly支持原型。
相关文章:
WebAssembly,开发者赢了
WebAssembly:随风潜入夜
Mono的新解释器
原文:http://www.infoq.com/cn/news/2017/12/dotnet-webassembly-support
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
- 实验进行中:.NET WebAssembly支持
- WebAssembly
- WebAssembly已支持所有主流浏览器
- 如何在浏览器中使用WebAssembly特性
- 在 NodeJS 中体验 WebAssembly技术
- 探究webassembly(2):性能探究和实验分析
- 业界资讯:白鹭引擎5.0发布,支持webassembly
- 实验进行中,已经见到曙光
- Javascript支持3D游戏,asm.js 和 Emscripten工具,以及和WebAssembly的区别
- WebAssembly基础
- Emscripten-WebAssembly
- .net中进行时间对比
- 在Apache中配置ASP.NET支持
- 在.NET中,将竖表变横表(支持固定列)
- 让C代码在浏览器中运行——WebAssembly入门介绍
- 在ASP.NET中进行文件处理
- 在VB.NET中进行抓屏
- .net中用户域帐号进行验证
- Flink源码阅读:如何使用FlinkKafkaProducer将数据在Kafka的多个partition中均匀分布
- [DP-完全背包] HDU 1114
- JVM
- Problem G: 字符统计
- 微软人工智能和对话平台--知识商城体验
- 实验进行中:.NET WebAssembly支持
- 有趣的开源软件:语音识别工具Kaldi (二)
- php 获取pointer 类型的数据 leanclude
- 在施工中三级配电箱一级配电箱经常跳闸分析
- 171215---LAMP介绍之http安装
- wregesth
- 技术人必备的碎片化时间学习神器
- Spring之IOC的实现
- reshgrtsh