跨平台UI模块,可与C#/Mono后端配合使用

跨平台UI模块,可与C#/Mono后端配合使用,c#,mono,cross-platform,electron,eto,C#,Mono,Cross Platform,Electron,Eto,编辑12017/01/29-目前,我们的选择已经与npm的所有功能和包/资源结合在一起。。对于我们来说,没有更好的选择来为所有三家供应商(macOS、linux和windows)创建跨平台应用程序。谢谢大家的意见 原始问题: TL;DR-用C#(.Net/Mono)编写的后端代码。编写需要低级别访问系统的桌面应用程序(跨平台OSX、Linux、Windows 7到10)。搜索一站式跨平台UI工具/框架,该工具/框架可以通过轮询/消息传递或调用后端代码的代码与后端代码的状态交互。此“后端”包括扫

编辑12017/01/29-目前,我们的选择已经与npm的所有功能和包/资源结合在一起。。对于我们来说,没有更好的选择来为所有三家供应商(macOS、linux和windows)创建跨平台应用程序。谢谢大家的意见


原始问题
TL;DR-用C#(.Net/Mono)编写的后端代码。编写需要低级别访问系统的桌面应用程序(跨平台OSX、Linux、Windows 7到10)。搜索一站式跨平台UI工具/框架,该工具/框架可以通过轮询/消息传递或调用后端代码的代码与后端代码的状态交互。此“后端”包括扫描和列出流程信息、截图等。。发送网络信息(访问了哪些网站等)本质上是学生在课堂上进行在线考试时的考试监视器**

我们正在探讨的选择:

  • 看起来不错,但我们不知道它是否可以互操作/调用/kickstart C#/Mono应用程序。在他们的官方论坛上也发布了这个反馈,以及它是否是electron的一个好用例。在理想情况下,我们希望充分利用电子,但不幸的是,我认为我们需要特定于平台的逻辑(现在我们用C#w/.net和mono处理)
  • 这是我们现在使用的,但它的UI功能受到限制——因为有时它在不同平台上仍然呈现不同的效果(窗口大小)。它还有一个与用户平台相关的不同的外观和感觉,这是一个很好的特性,但它使专用控件难以可视化状态,这在html/css中更容易实现

  • 另一种方法是混合使用Eto.Forms(或其他)来引导本地UI,该UI在其窗口中承载跨平台且不依赖于本地安装的浏览器的浏览器,例如。这仍然需要Eto.Forms或任何其他引导程序来启动应用程序,但所有其他导航都将通过Awesomium呈现的html

谢谢,
Yves

Xamarin表单是我选择的框架。它是为移动设备而设计的,但也扩展到了桌面。如果您熟悉WPF,那么它(用于.NET Framework、.NET Core和Mono的跨平台XAML框架)将是一个完美的选择


还有许多其他框架可以开发跨平台桌面应用程序。您可以签出my
github repo以获得更多跨平台桌面开发选项。

Electron可以通过Edge.js项目与.NET/Mono完美配合。由于Electron使用的节点版本稍有不同,因此需要在此处找到Electron edge:。我自己做了一个小POC项目,将HTML/JS绑定到C#here。它似乎工作得很好。也许是Xojo()?它为OSX/Lin/Win创建本机桌面应用程序,并可以直接与系统API接口。@YvesSchelpe如果确实需要HTML接口,请使用awesomium路由,但根据我的经验,为应用程序创建HTML接口不是一个好主意。也许有一天Xamarin会将Xamarin.Forms移植到Linux/Mac,那将是一个伟大的日子:D@YvesSchelpe当您切换到.NET/Mono对象时,您创建的对象会在调用之间保持其状态,您通常可以访问的所有对象都应该可用。@MichaelWayne-再次阅读问题/更新,它应该会告诉您:-)。。。但简而言之:是的!对于一个非常具体的用例,我认为electron是有用的,尽管如果每个应用都用它来编写,那就太过分了。。它需要优化和更多的铬元素。当没有linux或mac UI的支持时,这不是真正的跨平台,我很抱歉。也许不是linux,但mac是的,这是一个开始,谢谢。然而,就目前而言,当我们做这样的项目时,这是电子的方式。很遗憾,我已经看到了电子的优点。Xamarin也有很大的学习曲线。如果需要,它将使用特定于平台的API调用执行本机代码。大多数情况下可能不需要。我希望x-plat Forms支持现在会更进一步,但由于没有macOS/Linux上MS的开发支持,macOS上缺少或损坏了很多东西,Essentials也没有得到任何macOS/Linux支持(甚至不接受PRs),我认为在.NET5发布和Mono被弃用之前,这一切都不会发生。