cli*_*ntm 10 user-interface haskell cross-platform zeromq
我们在Haskell中有一个大型控制台应用程序,我负责制作跨平台并添加一个gui.
要求是:
现在,这个问题的真正原因是解释我正在研究的一个解决方案,并且由于我没有想到的原因而征求这个问题.
我的解决方案是原生的gui.Windows上的Winforms,Mac OS X上的Cocoa和Linux上的GTK/Glade,它们只处理演示文稿.然后我会在Haskell代码之上编写一个层,使用ZeroMQ来处理消息以及用于来回序列化数据的protobuf,将它转换为来自UI的消息的响应者.因此本机应用程序将启动,它本身将启动所有魔法发生的守护进程,并来回发送消息.
除了确保守护进程只接受来自启动它的应用程序的连接,以及为高级gui元素(我正在考虑表视图,单元格等)来回提供正确数据的挑战,我不知道看到许多缺点.
我没想到的是什么让这个坏主意?
我应该提一下,乍一看我将在所有平台上使用GTK.问题在于,虽然它很接近,并且对Haskell的GTK和Glade支持很好用,但结果看起来并不"正确".它很接近,但只是不能以微妙的方式本地化,这使得该解决方案对于正在为这项工作编写支票的人来说是不可接受的.
此外,多个平台的问题,因此gui的多种语言不是问题所以我不一定寻找其他方法来解决这个问题,除非它简化了与haskell代码的互操作.
然后我会在Haskell代码之上编写一个层,使用ZeroMQ来处理消息以及用于来回序列化数据的protobuf,将它转换为来自UI的消息的响应者.
我认为这是合理的(客户端/服务器模型,客户端恰好是一个原生的外观桌面应用程序).(我对protobufs与例如JSON,thrift没有强烈的看法).
该哈斯克尔zeromq绑定现在得到了一些使用过.
我没想到的是什么让这个坏主意?
zeromq在Windows和Mac上的测试结果如何?这可能很好,但我要检查一下.
问题在于,虽然它很接近,并且对Haskell的GTK和Glade支持很好用,但结果看起来并不"正确".
集成包是否有帮助?