zoukankan      html  css  js  c++  java
  • .Net与 WebAssembly 随笔

    WebAssembly 是啥

    • - WebAssembly 是一种浏览器支持的字节码格式,WebAssembly 字节码和底层机器码很相似可快速装载运行,因此性能相对于 JS 解释执行大大提升,需要放到 WebAssembly 虚拟机中才能运行, 浏览器厂商需要做的就是根据 WebAssembly 规范实现虚拟机。使用WebAssembly,我们可以在浏览器中运行一些高性能、低级别的编程语言,可用它将大型的C和C++代码库比如游戏、物理引擎甚至是桌面应用程序导入Web平台。
    • - 可以认为, WebAssembly 是传统浏览器插件的妥协结果。覆盖率最广的flash自己作死,因为性能和安全问题被apple拿下,其它的activeX/silverlight/javaApplet/ 又因浏览器或其它限制做不到全平台覆盖。那就用html5吧,但html5+js的性能又不行,那么大家就坐下来商量一个通用二进制插件,WebAssembly就横空出现了。
    • - WebAssembly现在限制还有很多,如不能用线程、无垃圾回收等。和html5一样,WebAssembly标准也会有一个耗时持久的扯皮过程。此外,WebAssembly 还有安全限制,它是运行在浏览器沙箱中的。另外,开发环境/调试等问题涵待慢慢解决。
    • - 现阶段 WebAssembly 适合做些依赖网络的应用(如视频播放、游戏、工具应用),不适合做操作系统相关的、操作硬件、并发线程的、体积庞大的类似的应用。
    • - WebAssembly的前世今生可以参考:https://blog.csdn.net/GarfieldEr007/article/details/68215694

    .Net与 WebAssembly

    (1)https://github.com/aspnet/Blazor  

    •     该项目支持在Web客户端运行.net代码,语法同razor。
    •     与silverlight不同,它不涉及UI部分,所有的UI都由Html标签呈现
    •     Blazor引擎将C#程序编译成WebAssembly,可以用c#代码来操作页面元素
    •     理论上加一个封装器,很容易改造成各种平台的客户端,可以这种方式做到跨平台。

    (2)Unity 3D 可以编译成WebAssembly

      这里有一个很酷的示例,原先Unity在web上是用UnityPlayer或flash插件实现的,现在用WebAssembly

          https://webassembly.github.io/demo

  • 相关阅读:
    Hadoop-03 基于Hadoop的JavaEE数据可视化简易案例(升级使用HBase存储结果集)
    Hadoop-02 基于Hadoop的JavaEE数据可视化简易案例
    Python03 变量
    Python01 VSCode开发环境和入门程序
    MyBatis01 Idea中搭建MyBatis开发环境
    Idea01 Idea2018中集成Tomcat9导致OutPut乱码
    MySQL-08 MySQL8.0新特性
    C11 C语言文件的读写
    C10 C语言数据结构
    C09 指针
  • 原文地址:https://www.cnblogs.com/surfsky/p/9298985.html
Copyright © 2011-2022 走看看