博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验进行中:.NET WebAssembly支持
阅读量:6078 次
发布时间:2019-06-20

本文共 1083 字,大约阅读时间需要 3 分钟。

目前,而.NET社区也在继续推动为.NET开发者提供相关能力,来将他们的代码编译成WebAssembly,然后在浏览器上运行。

\\

WebAssembly是一种二进制web格式,旨在以接近原生的性能运行不是用JavaScript语言编写的应用。目前,C、C++和Rust都可以通过基于LLVM的工具链来编译成wasm格式。这些语言编译成原生代码,然后可以在没有任何附加代码的情况下运行。当然,.NET通常需要一个运行时平台来执行代码,因此在浏览器中使用它在理论上是可行的,只是需要一些额外的工作来让它更高效地运行。

\\

其中一个非常可能实现.NET WebAssembly的项目,是被Steve Sanderson称作的项目,虽然它还只是一个进行中的实验,远远没有生产价值。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的内容。据所说,这个大小应该会随着时间推移而减少:

\\
\

一旦我们使用一种定制的概要文件,这个大小应该会明显减少。这种定制的概要文件基于移动端的概要配置文件,并且移除了许多不必要的功能。

\
\\

采用“基于LLVM的实验性的WebAssembly,LLVM连接器和二进制化工具来生成最终的.wasm代码”,但是在最近几个月还没有更新过。

\\

在官方的库中,也有WebAssembly支持原型。

\\

查看英文原文:

\\

感谢对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博(,),微信(微信号:)关注我们。

转载地址:http://gbagx.baihongyu.com/

你可能感兴趣的文章
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>