7

私の理解では、IOLibusocketの抽象化レベルはほぼ同じです。IOLibはOSバックエンドソケットを使用しますが、usocketはLisp-runtime-backendソケットを使用します。

特定のユースケースにはどちらが良い選択かと思います。

たとえば、優れた同時実行性を必要とするサーバーや、移植性に重点を置いたクライアントなどです。

4

3 に答える 3

4

このブログ投稿はあなたの質問に答えていると思います。

要約すると、すべてのプラットフォームと実装 (「すべて」の合理的な定義) で動作する必要があるライブラリを作成している場合は、usocket を使用します。Unix プラットフォームでの他の使用例では、おそらく IOLib の方が用途が広いでしょう。たとえば、Unix ドメイン ソケットとノンブロッキング IO をサポートします。

ところで、私は cl-redis を usocket から IOLib に、またその逆に移植しました。API は非常に似ていますが、わずかに異なります。

于 2012-11-23T04:13:39.673 に答える
2

USOCCKET のコードは、依存関係を含め、IOLib よりもはるかに小さく単純です。IOLib は、たとえば一部の *BSD には存在しない Linux 機能への CFFI バインディングを使用します。

他のすべての条件が同じであれば、最小限のソース コードは常に望ましいものです。なぜなら、それはバグが少なく、理解しやすく、ハッキングしやすいからです。コードが単純なほど、デバッグが速くなり、デプロイがより簡単になります。

それ以外は、どちらもほぼ同じように機能するようです。どちらも、単一のスレッド内で複数の接続を処理するために kqueue/select を提供します。ソケットでUNIXファイル記述子を渡すなど、より高度な機能についてはわかりません。

Linux だけが好きな場合は IOLib または USOCKET を使用し、Linux および/または *BSD、またはその他の商用オペレーティング システムをターゲットにしている場合、またはシンプルで愚かな状態を保ちたい場合は USOCCKET を使用してください。

于 2012-12-15T14:05:45.477 に答える
1

あなたの主な目標が移植性である場合、このページに記載されているように、明らかに usockets がより良い選択です:

USOCCKET は、BSD スタイルのソケット用のネットワークポータビリティレイヤーです。

于 2012-11-22T22:31:04.193 に答える