看新闻很累? 看技术新闻更累? 试试 下载 InfoQ 手机客户端 https://time.geekbang.org/?utm_source=website&utm_medium=infoq&utm_campaign=news&utm_content=app , 每天上下班路上听新闻, 有趣还有料!
在过去数年中, 桌面应用开发人员一直处境艰难, 因为人们的主要关注点聚焦于 Web 和移动应用. 由于 Microsoft 未来 Windows 平台的计划未定, 并且 UWP 应用也没有突破性进展, 因此技术落伍的责任也不应由. NET 开发人员来承担. 当前迫切需要解决的挑战, 是提供一种可运用这些开发人员在 C# 上知识积累的新方式.
这正是近期一些在浏览器上使用 C# 的工作吸引关注之处. 今年早期, Microsoft 宣布他们对 Blazor 的支持. 最近, Frank A. Krueger 宣布开发完成 Ooui 软件库. Ooui 支持将 C# 或 F# 用于编写可运行在浏览器中的应用. Ooui 支持以 WASM https://github.com/praeclarum/Ooui/wiki/Xamarin.Forms-with-Web-Assembly 为编译目标, 这样 Xamarin.Forms 应用就可以部署到 WebAssemly 中, 无需应用服务器即可完全运行在浏览器中.
据 Krueger 介绍, WASM 并非唯一受支持的平台, 其它可用的编译目标还包括使用 ASP.NET Core 的 Web DOM,WebAssembly 以及 Ooui 内建的 Web 服务器. 技术的底层工作机制如下: 对于 WebAssembly 项目, 所有的 Web 浏览器与应用间通信发生在进程内. 对于其它项目, 则使用 WebSockets 进行 "浏览器 - 应用" 间通信, 以保持 UI 和应用状态的同步.
Krueger 还给出了一些概念验证演示, 有效地展示了上述理念. 其中包括一个基本的 XAML 编辑器 https://s3.amazonaws.com/praeclarum.org/wasm/index.html , 演示了如何实现浏览器内的 XAML 编辑, 并实时显示更改情况. 此外, 演示中还提供了一组 样例代码 http://ooui.mecha.parts/ , 展示了 Xamarin.Forms 和基本 Web 控件的使用.
上手 Ooui 开发非常简单. 你首先需要在. NET Core 中新建一个 Console 应用, 并将引用添加到 Ooui.Wasm 和 Ooui.Forms 中. 然后使用通常使用的 dotnet 去构建应用, 就可以部署应用了. 进而, 通过使用 dotnet-server , 或是将 dist 目录中的文件拷贝到任何一种可提供静态文件的 Web 服务器, 你就可以测试所用的代码.
来源: http://www.tuicool.com/articles/Nnai2m6