写点什么

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:002486

评论

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

更专业、安全的过等保,华为云等保合规解决方案值得选择

IT科技苏辞

如何利用人工智能的语言模型创造价值和收益

派大星

ChatGPT

Vue3 watch 与 watchEffect

程序员海军

Vue Vue 3 watch 三周年连更

新技术加持下前端开发工程师的未来在哪里?| 社区征文

No Silver Bullet

前端开发 新技术 三周年征文

Go 也能实现 “继承”?

陈明勇

Go golang 继承 三周年连更

在华为云构建多云跨云的容灾系统,真的很香

路过的憨憨

华为云等保方案,轻松满足企业等保合规要求

IT科技苏辞

布隆过滤器的设计之美,后端程序员一定要好好体会

程序员小毕

程序员 数据结构 面试 后端 布隆过滤器

跨平台应用开发进阶(四十四)一文走近应用层抓包工具:Charles

No Silver Bullet

应用层 抓包分析 抓包工具 三周年连更

Meetup 直播预告|助力企业数字化转型,8 大微服务&容器开源实践亮点抢先看

阿里巴巴云原生

阿里云 开源 容器 微服务 云原生

【Linux】之【网络】相关的命令及解析[ethtool、nload、nethogs、iftop、iptraf、ifstat]

A-刘晨阳

Linux 网络 三周年连更

基于 RocketMQ Connect 构建数据流转处理平台

阿里巴巴云原生

阿里云 RocketMQ 云原生

【体验有奖】 玩转 AIGC,Serverless 一键部署 AI 图像生成服务

阿里巴巴云原生

阿里云 Serverless 云原生

机器视觉公司,在玩一局玩不起的游戏

脑极体

CV

termius使用ssh教程 【XShell的神器Termius】

互联网搬砖工作者

华为云等保合规解决方案,助力企业轻松、省心、安全“上云”

秃头也爱科技

聊聊JavaScript和Scala的表达式 Expression

汪子熙

JavaScript scala 三周年连更

Exception和Error有什么区别吗 | 社区征文

共饮一杯无

Java Exception Error 三周年连更

Mac怎么创建txt文件?如何设置新建txt的快捷键?

互联网搬砖工作者

Spider实战系列-爬取鬼吹灯小说

浅辄

案例分享 三周年连更

MySQL数据文件被误删,如何进行恢复?

架构精进之路

MySQL 数据库 三周年连更

2023移动云大会重磅官宣,云改“新三年”强势开局引期待?

ToB行业头条

华为云等保合规解决方案,助力企业高效过等保

秃头也爱科技

助力企业网络安全建设,华为云等保合规解决方案值得拥有

路过的憨憨

华为云等保方案,为企业上云保驾护航

科技说

华为云等保合规方案,助力企业最快30天过等保

科技说

克隆远端项目,idea 自动生成了一个.idea 文件夹,怎么办?

bug菌

git IDEA .gitignore 三周年连更

跨平台应用开发进阶(四十五)uni-app集成企微客服实战

No Silver Bullet

uni-app 项目实战 三周年连更

连Hibernate技术都不清楚,你敢说你自己会ORM框架?

浅羽技术

Java hibernate 框架 ORM框架 三周年连更

云效AppStack--扫雷亲测

六月的雨在InfoQ

云效 AppStack 云效流水线 Flow 三周年连更

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