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

    文章

    125

    浏览量

    56137
  • 应用程序
    +关注

    关注

    37

    文章

    3243

    浏览量

    57600
收藏 人收藏

    评论

    相关推荐

    labview调用bartender .NET封装成EXE后加载报错

    labview调用bartender .NET在源代码运行没有问题,但封装成EXE后加载.net就报错这事什么问题。 (注:用ActiveX封装成EXE也没问题,可以运行) 以下是ba
    发表于 10-19 10:14

    Anthropic推出iPhone应用程序和业务层

    Anthropic 推出 iPhone 应用程序和业务层,支持使用Claude 3 Opus、Sonnet 和 Haiku 模型
    的头像 发表于 05-07 10:22 403次阅读

    将STM32的App应用程序用MDK直接仿真,MDK下载后无法正常仿真的原因?

    如题,尝试了下将STM32的App应用程序用MDK直接仿真,发现MDK下载后无法正常仿真,程序起始地址和中断偏移都设置。以前用IAR是可以
    发表于 04-12 08:00

    三星Good Lock应用程序Lockstar模块现存预览与实际效果不符的BUG

    据报道,三星社区管理员日前回应网友反映,Good Lock应用程序中的Lockstar模块的确存在技术漏洞:用户在自定义锁屏界面时,预览样式与实际效果不相符。
    的头像 发表于 04-09 15:16 612次阅读

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 5762次阅读

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

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

    在蓝牙模块CYW20706上下载应用程序到串行闪存失败的原因?

    我尝试在蓝牙模块CYBT-343026-01(CYW20706)上下载应用程序到串行闪存,但失败。 第一步是按照 AIROC™ HCI UART 控制协议文档(见下文)的指示向模块
    发表于 03-01 11:59

    verilog如何调用其他module

    。 1.2 为什么要调用其他模块? 在复杂的设计中,我们通常需要实现各种不同的功能,并且这些功能往往可以通过不同的模块来实现。通过调用其他
    的头像 发表于 02-22 15:56 5416次阅读

    LTE MQTT通信应用程序说明

    电子发烧友网站提供《LTE MQTT通信应用程序说明.pdf》资料免费下载
    发表于 02-21 10:47 0次下载
    LTE MQTT通信<b class='flag-5'>应用程序</b>说明

    在Hbird SDK中能否直接调用newlib的头文件?

    请问书上这里写的“实现newlib的移植和支持”,是指可以在SDK中直接include这个newlib库里的所有头文件吗?有大佬调用过吗
    发表于 01-10 07:35

    谷歌发布新的AI SDK,简化Gemini模型与Android应用程序的集成

    对于 Android 应用程序,Google 提供 Google AI Client SDK for Android,它将 Gemini REST API 封装为惯用的 Kotlin API
    的头像 发表于 01-03 16:29 903次阅读

    RTC第二个功能和应用程序

    一般RTC模块设备管理时间日历、计时器等。从年到二。一些爱普生RTC模块可以通过使用来自32768 Hz的分割频率来管理次第二功能。本文件描述RTC
    发表于 01-03 15:45 0次下载

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

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

    python调用windows命令

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

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序。在开发Java应用程序时,有一些基本步骤需要遵循,以确保应用程序的正确性和可靠性。 1.确定需求:这是开发任何应用程序
    的头像 发表于 11-28 16:52 1524次阅读