0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

.NET应用程序可以直接调用WebAssembly模块了

汽车玩家 来源:开源中国 作者:局长 2019-12-10 11:35 次阅读

WebAssembly Runtime现已添加.NET Core API开发者可直接在.NET应用程序中调用WebAssembly模块。

Mozilla宣布由Bytecode Alliance创建的Wasmtime(WebAssembly runtime)现已添加处于早期预览版状态的.NET Core API,这就意味着开发者可以直接在.NET应用程序中调用WebAssembly代码。

Bytecode Alliance(字节码联盟)是由Mozilla、Fastly、Intel与Red Hat联合成立的组织,该联盟旨在通过协作实施标准和提出新标准,以完善WebAssembly在浏览器之外的生态。Mozilla提到,.NET Core作为一个跨平台的Runtime,仍提供对WebAssembly的支持主要三个好处,除了可跨平台共享更多代码之外,还能安全地隔离不受信任的代码,同时凭借着WebAssembly的接口类型(WebAssembly Interface Types),WebAssembly和.NET可相互传递复杂类型。

虽然我们能够使用.NET Core构建跨平台应用,但如果要使用诸如C或是Rust等原生函数库,这仍然是十分不方便的操作,因为需要函数库为每个平台发布特定函数库版本。不过有了WebAssembly之后,我们可以将其作为桥梁以简单满足上面的需求。原生函数库可以先编译成WebAssembly,然后包括.NET Core在内的许多平台就能使用这些WebAssembly模块,这将简化函数库的发布以及应用程序对这些函数库的依赖方式。

由于WebAssembly是面向网页设计的,网页是一种每次访问网站(读/写数据)都会执行不受信任代码的环境,WebAssembly模块只能调用从主机环境明确输入的外部函数,而且只能在主机分配的内存区域进行读写数据,这种沙盒设计方式也能被应用在.NET Core中,以增加安全性。通过支持WebAssembly,.NET Core也能使用沙盒以执行不信任代码。

另外,Bytecode Alliance力推的WebAssembly接口类型增加了WebAssembly与其他语言的互通性,.NET Core也能从中受益。Mozilla表示,WebAssembly接口类型简化了应用程序与WebAssembly模块间来回传递复杂类型所需的“胶水代码”。当Wasmtime的.NET API最终可以对接口类型进行操作,WebAssembly和.NET之间就能够无缝地传递复杂类型。

最后,Wasmtime新增加的这个.NET Core API尚处于预览阶段,Bytecode Alliance成员仍在对其积极开发中,更新将不保证向后兼容。当前目标是让Wasmtime更为稳定,因此不建议开发者将Wasmtime的.NET Core API用于正式产品开发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • net
    net
    +关注

    关注

    0

    文章

    123

    浏览量

    55725
  • 应用程序
    +关注

    关注

    37

    文章

    3133

    浏览量

    56373
收藏 人收藏

    评论

    相关推荐

    使用ADS .NET Framework构建一个应用程序,.s (汇编文件)文件无法编译的原因?

    我正在尝试使用 ADS .NET Framework 构建一个应用程序。 我遇到了以下错误,因为 .s (汇编文件)文件无法编译。
    发表于 03-04 06:58

    LabVIEW程序中包含.net和C++dll的注意事项简介

    LabVIEW的VI调用.NET程序集或者C++动态链接库时的关系图如下
    的头像 发表于 12-11 09:22 421次阅读
    LabVIEW<b class='flag-5'>程序</b>中包含.<b class='flag-5'>net</b>和C++dll的注意事项简介

    python调用windows命令

    Python是一种强大的编程语言,可以用于开发各种不同类型的应用程序。其中一个常见的用途是使用Python调用Windows命令来执行特定的任务。在本文中,我们将详细讨论如何使用Python
    的头像 发表于 11-29 14:34 474次阅读

    .NET 8.0中有哪些新的变化?

    发布容器映像,并且默认情况下是非 root 的。由于 .NET 基础映像更小,因此可以更快地部署容器化应用程序 - 包括我们映像的新实验变体,这些变体可为本机 AOT 提供真正最小的应用程序
    的头像 发表于 11-20 16:15 561次阅读
    .<b class='flag-5'>NET</b> 8.0中有哪些新的变化?

    .NET8为原生AOT改进 Linux上原生AOT应用程序大小最多减少50%

    .NET 7 首次引入了以原生 AOT (Native AOT) 发布应用程序的选项。基于此特性,开发者使用原生 AOT 发布应用程序可以创建一个完全独立 (self-containe
    的头像 发表于 11-14 11:53 832次阅读
    .<b class='flag-5'>NET</b>8为原生AOT改进 Linux上原生AOT<b class='flag-5'>应用程序</b>大小最多减少50%

    仿真测试2:全加器(模块调用

    做任何模块前,要确定输入输出端口有哪些,有一个整体的概念;方便以后模块调用
    的头像 发表于 10-10 14:10 377次阅读
    仿真测试2:全加器(<b class='flag-5'>模块</b><b class='flag-5'>调用</b>)

    如何使用Tokio 和 Tracing模块构建异步的网络应用程序

    在 Rust 语言中,Tokio 是一个非常流行的异步运行时,它提供了高效的异步 I/O 操作和任务调度。而 Tracing 则是一个用于应用程序跟踪的框架,它可以帮助我们理解应用程序的行为和性能
    的头像 发表于 09-19 15:29 340次阅读

    rt-smart应用程序系统调用实现过程是怎么样的?

    rt-smart应用程序系统调用实现过程是怎么样的? 比如open时候怎么一步一步切换到内核态的?
    发表于 09-08 17:00

    如何入门STM32CubeU5 TFM应用程序

    应用程序不能直接访问任何关键资产,但可以调用使用关键资产的安全服务:• 安全启动 (可信根服务)是不可变代码段,总是在系统复位后执行。在每次执行前,它检查 STM32U5 静态保护,激
    发表于 09-06 07:52

    .NET应用程序的性能测试

    WebLOAD通过轻松的测试脚本创建和基于深度服务器端分析的性能测试.NET应用程序提供了全面的解决方案。
    的头像 发表于 08-29 09:40 274次阅读

    Linux内核中系统调用详解

    Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序
    发表于 08-23 10:37 619次阅读
    Linux内核中系统<b class='flag-5'>调用</b>详解

    如何创建一个简单但完整的原生WoA WinUI3应用程序

    在本指南中,您可以学习如何创建一个简单但完整的原生WoA WinUI3应用程序。 微软最近发布WinUI3.0,它运行在.NET 5.0上,运行在配备AArch64处理器(ARM6
    发表于 08-02 09:57

    WebAssembly技术_编译ffmpeg(ubuntu20.04)

    WebAssembly并不是直接用汇编语言,而提供了抓换机制(LLVM IR),把高级别的语言(C,C++和Rust)编译为WebAssembly,以便有机会在浏览器中运行。主要是解决目前JS语言的效率问题,设计立足点为快速,内
    的头像 发表于 07-14 10:29 1643次阅读
    <b class='flag-5'>WebAssembly</b>技术_编译ffmpeg(ubuntu20.04)

    Openwrt开发指南 第20章 驱动开发之LED应用程序

    在前面的章节中, 我们成功的写出了我们自己的驱动程序, 并且向应用程序提供了 open、ioctl 两个接口,那么接下来我们就来编写应用程序调用这些接口。
    的头像 发表于 07-03 09:02 2124次阅读
    Openwrt开发指南 第20章 驱动开发之LED<b class='flag-5'>应用程序</b>

    Linux系统调用的实现与应用

    在计算机科学中,系统调用(System Call)是一种操作系统提供的服务,它允许应用程序通过软件中断的方式访问操作系统内核中的函数。这些函数提供了一系列与硬件相关的服务,例如文件系统访问、进程管理、网络通信等。应用程序通过系统
    发表于 06-14 11:46 361次阅读