我们在Haskell中有一个大型控制台应用程序,我负责制作跨平台和添加gui。
所需经费如下:
现在,提出这个问题的真正原因是为了解释我目前正在研究的一个解决方案,并为了我没有想到的理由来寻求理由,这使这成为一个糟糕的想法。
我的解决方案是一个土生土长的人。Windows上的Winforms,Mac上的Cocoa,Linux上的GTK/Glade,它们只处理演示。然后,我将在Haskell代码的基础上编写一个层,该层将其转换为消息的响应器,使用ZeroMQ来处理消息,并可能使用protobufs来来回序列化数据。因此,本机应用程序将启动它本身将启动所有魔术发生的守护进程,并来回发送消息。
除了确保守护进程只接受启动它的应用程序的连接,以及为高级gui元素(我在考虑表视图、单元格等)提供正确的数据这一挑战之外,我看不出有什么坏处。
我没在想什么这就成了个坏主意?
我可能应该提到,乍一看,我将在所有平台上使用GTK。问题是,虽然它很接近,而且GTK和Glade对Haskell的支持是很好的工作,但是结果看起来并不“正确”。这是很接近的,但在微妙的方式上还不够本土化,这使得为这项工作而写支票的人无法接受这个解决方案。
此外,gui的多个平台和多种语言的问题并不是一个问题,所以我不一定要寻找其他方法来解决这个问题,除非它简化了与haskell代码的互操作。
发布于 2011-04-29 17:28:10
然后,我将在Haskell代码的基础上编写一个层,该层将其转换为消息的响应器,使用ZeroMQ来处理消息,并可能使用protobufs来来回序列化数据。
我认为这是合理的(客户机/服务器模型,客户端恰好是一个本地的外观-n感觉桌面应用程序)。(我对protobufs和JSON、节俭没有很强的看法)。
Haskell zeromq绑定现在也有了一些用处。
我没在想什么这就成了个坏主意?
零在Windows和Mac上测试得有多好?可能很好,但我会检查一下。
问题是,虽然它很接近,而且GTK和Glade对Haskell的支持是很好的工作,但是结果看起来并不“正确”。
集成包在那里有帮助吗?
发布于 2011-04-30 17:30:52
这里有一个有趣的可能性:wai-处理程序-webkit。实际上,它将QtWebkit与Warp服务器打包,以使您的web应用程序可部署。它还没有得到密集的使用,从未在Mac上进行过测试,在Windows上编译也很棘手,但它是一种相当直截了当的方法,可以让您使用在Haskell开发的相当丰富的网络生态系统。
在不久的将来,我可能会在这方面做更多的开发,所以如果您有兴趣使用它,请告诉我哪些额外的功能会有用,如果您能在Mac方面提供任何帮助的话。我也不认为我们需要在所有平台上坚持使用QtWebkit :根据操作系统使用不同的Webkit后端可能更有意义,甚至可能使用壁虎或(颤抖)三叉戟。
发布于 2011-07-12 10:36:54
我在让zeromq在OSX上使用haskell时遇到了一些问题(我认为找一个dylib而不是"o“有问题)。不过,协议缓冲区和haskell似乎工作得很好。
https://stackoverflow.com/questions/5834552
复制相似问题