写点什么

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

评论

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

云审计与大数据审计:区别、优势与应用场景

天翼云开发者社区

云计算 大数据 数据处理 云审计 大数据审计

【论文速读】| MOCK:上下文依赖引导的内核模糊测试

云起无垠

陌陌技术分享:陌陌IM在后端KV缓存架构上的技术实践

JackJiang

即时通讯;IM;网络编程

面试官:你还有什么想问我的?

老张

面试 面试经验

欢迎来到 Mint Forest:Mint Your Tree,兑换你的 $MINT!

NFT Research

blockchain web3、

深入了解美国数据库服务器的特点与使用方法,助你更高效地管理网站数据

一只扑棱蛾子

美国服务器 美国数据库服务器 数据库服务器

AutoMQ 携手阿里云共同发布新一代云原生 Kafka,帮助得物有效压缩 85% Kafka 云支出!

AutoMQ

Java 云计算 大数据 kafka

研发日记|一次 Java 乌龙“内存泄露”排查之旅

AutoMQ

Java 大数据 kafka 云原生 AutoMQ

为什么Python语言那么受欢迎呢?

小齐写代码

Pytest参数化用例(单参数,多参数,用例重命名,笛卡尔积)

测试人

软件测试 测试开发 pytest

面试官:说说反射的底层实现原理?

王磊

Java 面试

设计原则 — LOD 最小知识原则

Lemoon Can

设计原则 LOD 迪米特法则 最小知识原则

知识|基于混合模式的多余度飞控全数字仿真系统研究

DevOps和数字孪生

航空航天 飞控全数字仿真系统

获取1688商品详情API:步骤与代码示例

Noah

从自媒体小白到优质KOL,你只差这些个人IP提效神器了!

飞桨PaddlePaddle

百度 BAIDU 自媒体 百度飞桨 飞桨星河社区

AutoMQ 社区双周精选第八期(2024.02.26~2024.03.08)

AutoMQ

Java 云计算 大数据 kafka AutoMQ

武汉LUG报名开启!这次我们来到了华中科技大学,3月23日(周六)来见面吧!

nn-30

从基础到代码实战,带你进阶正则表达式的全方位应用

华为云开发者联盟

开发 华为云 华为云开发者联盟

观测云产品更新 | 监控器新增组合检测、新增跨工作空间 ServiceMap 等

观测云

APM 监控

基于仿真的飞机ICD工具测试

DevOps和数字孪生

航空航天 飞机 ICD

让LED显示屏更加节能,刻不容缓!

Dylan

环境 性能损耗 LED显示屏 全彩LED显示屏 led显示屏厂家

阿里巴巴中国站获得联系方式 API(1688.item_get_contact)

技术冰糖葫芦

API API 编排 API 测试 pinduoduo API

全新特征平台 FeatInsight 测试平台上线,现已开放抢先体验!

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

线上机器 swap 过高导致告警

不在线第一只蜗牛

开发 swap

实例带你了解GaussDB的索引管理

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

日活3kw下,如何应对实际业务场景中SQL过慢的优化挑战?

派大星

SQL优化 Java 面试题 互联网大厂面试

新质生产力发展正当时,华为云开年采购季助中小企业“弯道超车”

YG科技

后端搞 Cocos 小游戏开发的三点避坑指北

北桥苏

游戏开发 Cocos 小游戏 CocosCreator

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