.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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM