写点什么

Wasmtime:终于可以在.NET 应用中运行 WebAssembly 了

  • 2020-01-10
  • 本文字数:973 字

    阅读完需:约 3 分钟

Wasmtime:终于可以在.NET应用中运行WebAssembly了

尽管围绕WebAssembly的势头一直在增长,WebAssembly 运行时Wasmtime才增加对.NET Core的支持,使得基于.NET Core 的应用程序可以运行 WebAssembly 代码。


WebAssembly是安全、可移植的低级代码格式,旨在提供高效执行和紧凑表示。WebAssembly 通过实现硬件无关、语言无关和平台无关,尽可能将可移植性做到极致。


根据来自 Mozilla 的工程师 Peter Huene 介绍,将WebAssembly和.NET集成,可以简化代码共享同时提供更好的未授信代码隔离。


Huene 表示,相较于共享类似 C 库这样的本地库,共享 WebAssembly 模块明显要容易很多,因为前者依赖特定平台构建。而 WebAssembly 模块可以在无需修改的情况下分发。


作为一个示例,Huene 展示了将 Rust 编写的一个库编译成 WebAssembly,然后集成到.NET 应用中。整个过程不需要考虑.NET 应用程序运行的实际处理器架构和操作系统。整个工作流尚未完美简化,因为开发者还需要处理许多诸如值转换等低级别细节。正如 Huene 所说,多亏了即将发布的WebAssembly接口类型提案,这些问题将来都会解决。这个提案将会提升 WebAssembly 和.NET 之间的交互性,简化二者之间复杂数据类型的交换,无需再编写太多胶水代码,可以将 WebAssembly 模块当成是.NET 的包。


WebAssembly 要求显示导入允许模块使用的所有外部函数,并且仅能访问主机平台上保留的内存区域,从而使隔离未受信代码成为可能。该功能让 WebAssembly 模块能够在沙箱环境中高效运行的同时,无需担心陌生插件任意访问主机平台。


Huene 在他的文章中为希望在.NET 应用程序中使用 WebAssembly 的开发者提供了很多有价值的信息,涵盖了整个流程中的所有方面。包括了创建 WebAssembly 代码来解决问题;检查模块需要从主机获得哪些内容,以及想主机提供什么功能;创建.NET 工程并导入 WebAssembly 模块,同时将.NET 函数暴露给 WebAssembly 模块。


浏览器外运行 WebAssembly 应用程序的运行时环境中,Wasmtime 不是唯一一个。这里尤其需要提一下的有,Wasmer,它也和 Wasmtime 一样是一个通用运行时环境;WebAssembly Micro Runtime,专注于小尺寸设备。多亏了 Miguel de Icaza 创建的项目Wasmer-sharp,Wasmer 也能够用于.NET 项目。Wasmtime 和 Wasmer 都处于活跃开发阶段,虽然它们的目标不是完全重合


这两个项目或多或少有些竞争。


原文链接:


Wasmtime Enables Running WebAssembly From .NET Programs


2020-01-10 09:002491

评论

发布
暂无评论
发现更多内容

week6 总结

不在调上

当我们在谈架构时,我们谈的是什么?

冯文辉

架构 企业架构 系统架构

nginx在重定向时端口出错的问题

烫烫烫个喵啊

nginx

程序员的时间管理

Kerwin

程序员

没内鬼,来点干货!volatile和synchronized

Kerwin

Java volatile synchronized

Hello!GitHub 好用好玩值得收藏的开源项目集合~

Kerwin

开源

设计模式总篇:从为什么需要原则到实际落地(附知识图谱)

Kerwin

Java 设计模式

疫情年逆风翻盘

Kerwin

程序员

秒懂云通信:通信圈黑话大盘点

阿里云Edge Plus

云通信 通信云

5万字、97 张图总结操作系统核心知识点

苹果看辽宁体育

操作系统 计算机

ARTS - Week 5

Khirye

ARTS 打卡计划

SpringBoot代码生成器

Kerwin

Java 开源

Elasticsearch从入门到放弃:再聊搜索

Jackey

elasticsearch

前端杂记-&&和||

阡陌r

JavaScript && ||

简述 CAP 原理

不在调上

日记一则

progyoung

关于如何判断一个list是否为空的思考

Leetao

Python Python基础知识 列表

Java8——方法引用

Java旅途

java8 方法引用

一张PDF了解JDK10 GC调优秘籍-附PDF下载

程序那些事

Java jdk JVM GC JDK10

因为 Django ORM update,我今天差点「从删库到跑路」

AlwaysBeta

数据库 django 编程 程序员

redis系列之——一致性hash算法

诸葛小猿

redis 一致性hash redis集群

Mybatis执行流程浅析(附深度文章推荐&面试题集锦)

Kerwin

Java mybatis

6 个珍藏已久 IDEA 小技巧,这一波全部分享给你!

楼下小黑哥

Java IDEA

开发框架文档体系化的思考

vivo互联网技术

框架开发

【计算机网络】你需要知道的链路层知识

烫烫烫个喵啊

计算机网络 链路层 交换机

没内鬼,来点干货!SQL优化和诊断

Kerwin

MySQL

30岁+程序员职场攻略:找到自己的“职业锚”乘风破浪

华为云开发者联盟

程序员 AI 开发者 职场

6种快速统计代码执行时间的方法,真香!

王磊

Java

Docker网络学习第一篇:Linux虚拟网络

Lazy

Docker Linux 网络

Docker网络学习第二篇-认识iptables

Lazy

Docker Linux 网络

纯CSS实现自定义单选框和复选框

爱嘤嘤嘤斯坦

CSS Java 编程语言 标签

Wasmtime:终于可以在.NET应用中运行WebAssembly了_大前端_Sergio De Simone_InfoQ精选文章