10

Haskell には大きなコンソール アプリケーションがあり、クロス プラットフォームの作成と GUI の追加を担当しています。

要件は次のとおりです。

  1. 可能な限りネイティブなルック アンド フィール。
  2. 可能であれば、Windows および Mac OS X、Linux 用のクライアント。
  3. 個別のランタイムをインストールする必要はありません。
  4. ネットワーク通信不要。Haskell コードは、ネットワーク経由で送信できない非常に機密性の高い情報を扱います。これが、これが Web アプリケーションではない唯一の理由です。

さて、この質問の本当の理由は、私が現在研究している 1 つの解決策を説明し、私が考えていない理由を求めて、これを悪い考えにすることです。

私の解決策はネイティブGUIです。Windows の Winforms、Mac OS X の Cocoa、および Linux の GTK/Glade は、単純にプレゼンテーションを処理します。次に、Haskell コードの上にレイヤーを作成し、ZeroMQ を使用してメッセージを処理し、場合によってはデータを前後にシリアル化するための protobuf を使用して、UI との間のメッセージのレスポンダーにします。したがって、ネイティブ アプリケーションが起動し、それ自体がすべての魔法が発生するデーモンを起動し、メッセージを送受信します。

デーモンがそれを開始したアプリケーションからの接続のみを受け入れるようにすることと、高度な GUI 要素 (テーブル ビュー、セルなどを考えています) に適切なデータを前後に提供するという課題は別として、私はしません。これには多くの欠点があります。

私が考えていないことは、これを悪い考えにしているのでしょうか?

一見したところ、すべてのプラットフォームで GTK を使用するつもりだったことに言及する必要があります。問題は、Haskell に対する GTK と Glade のサポートが近づいている一方で、結果が「正しく」見えないことです。それは近いですが、この作品の小切手をたまたま書いている人々にその解決策が受け入れられないようにする微妙な方法で十分にネイティブではありません。

また、複数のプラットフォームの問題、したがって gui の複数の言語の問題は問題ではないため、Haskell コードとの相互運用性について何かを単純化しない限り、その問題を解決する他の方法を必ずしも探しているわけではありません。

4

4 に答える 4

8

次に、Haskell コードの上にレイヤーを作成し、ZeroMQ を使用してメッセージを処理し、場合によってはデータを前後にシリアル化するための protobuf を使用して、UI との間のメッセージのレスポンダーにします。

これは合理的だと思います(クライアントがたまたまネイティブのルック アンド フィール デスクトップ アプリであるクライアント/サーバー モデル)。(protobufs と JSON、thrift などについて、私は強い見解を持っていません)。

Haskellのzeromq バインディングも現在使用されています。

私が考えていないことは、これを悪い考えにしているのでしょうか?

Windows と Mac で zeromq はどの程度テストされていますか? それはおそらく問題ありませんが、私が確認したいことがあります。

問題は、Haskell に対する GTK と Glade のサポートが近づいている一方で、結果が「正しく」見えないことです。

統合パッケージはそこで役立ちますか?

于 2011-04-29T17:28:10.657 に答える
4

ここに興味深い可能性があります: wai-handler-webkit。基本的に QtWebkit を Warp Web サーバーとパッケージ化して、Web アプリをデプロイ可能にします。集中的な使用は見られず、Mac でテストされたことはなく、Windows でコンパイルするのは難しいですが、Haskell で開発されているかなり豊富な Web エコシステムを使用できる、かなり単純なアプローチです。

近い将来、さらに多くの開発を行う予定です。使用に興味がある場合は、便利な追加機能を教えてください。特に。また、すべてのプラットフォームで QtWebkit に固執する必要があるとは確信していません。OS に応じて異なる Webkit バックエンドを使用したり、代わりに Gecko や (身震いする) Trident を使用したりする方が理にかなっているかもしれません。

于 2011-04-30T17:30:52.893 に答える
0

OSX の haskell で zeromq をうまく動作させるのにいくつか問題がありました (「o」ではなく dylib を探す際の問題だと思います)。ただし、プロトコル バッファと haskell は正常に動作しているようです。

于 2011-07-12T10:36:54.410 に答える
-1

Web アプリケーションを使用しない理由は、haskell プログラムの出力の機密性のためです。それが、暗号化されていないデータをすべてのクライアント マシンに吐き出す、同じ機密性の高いアプリケーションを配布している理由です。それは意味がありません。

アプリケーションが機密性の高いものである場合は、絶対にサーバーに配置し、可能な限り強力なTLSを使用する必要があります。

于 2011-04-30T03:48:43.503 に答える