实验进行中:.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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果系统软件删了还是出现怎么办 钉钉检测到作弊怎么办 电脑麦说话声音小怎么办 穿越火线麦克风有杂音怎么办 手闲不住就抠东西怎么办 大便堵在肛门口怎么办 在外地流量不够用怎么办 电脑键盘数字键没反应怎么办 音响音量键坏了怎么办 摩托罗拉移动电话通话没声音怎么办 摩托罗拉对讲机充电座坏了怎么办 手机导航键太灵敏怎么办 经侦大队不立案怎么办 槐茂酱菜太咸怎么办 法院执法局执法不公怎么办 搞养殖卖不出去怎么办 孔雀吃了蚯蚓该怎么办 多肉幼苗长徒了怎么办 小鸵鸟嘴断了怎么办 武汉早谢怎么办博大直上 威猛先生伤手了怎么办 嗓子眼边条线下边长块肉怎么办 线长在肉里怎么办 北京买车没有号怎么办 租的车处理违章怎么办 以租代购车不要怎么办 订车的合同掉了怎么办 买车合同丢了怎么办 车的证件都丢了怎么办 桃树直立的徒长枝怎么办 月季花长了独枝怎么办? 6岁半B超没子宫怎么办 学生学籍号和身份证号不一致怎么办 学生学籍号和身份证号不一样怎么办 领导交代的任务完不成怎么办 洗衣机里的衣服有味道怎么办 新买的洗衣机有味道怎么办 模拟工业装置没有数据验证怎么办 民办学校的指标生学费怎么办 孩子上初中后成绩不好怎么办 孩子考最后一名怎么办