14

Joe Armstrong の本を読み、Kevin Smith のスクリーンキャストを見た後、OTP アプリケーションとしてバンドルされた単一の gen_server と単一のスーパーバイザで構成される単純な OTP アプリケーションを作成しました。

今、mochiweb を見て、new_mochiweb.erl スクリプトを使用してサンプル プロジェクト [helloworld] を作成しました。ソース コードを参照すると、サンプル OTP アプリ [OTP アプリケーションが存在し、スーパーバイザーが存在する] と似ていないことがわかりますが、重要な違いが 1 つあります。生成された helloworld.erl および helloworld_web.erl ファイルは gen_server の動作を実装していません。標準の Erlang モジュールです。

OTP アプリケーション コンポーネントを構築する場合、gen_server の使用が推奨される方法であるという印象を受けました。mochiweb が OTP アプリケーションとスーパーバイザーの動作を使用し、 gen_server を避けるのはなぜですか?

4

2 に答える 2

11

再起動戦略の下にあるプロセスには OTP/gen_servers を使用します。つまり、それらの再起動はあなたの管理下にあります

これは、Web ブラウザーへの接続を表すプロセスには当てはまりません。そのプロセスが停止した場合、サーバーが再起動する方法はありません。したがって、OTP で実行しても意味がありません。

Mochiweb (および Yaws) はどちらも gen_servers を使用してリッスン ポートにバインドし、監視されていないプロセスを生成して新しい接続を処理します。

于 2009-08-31T21:48:17.293 に答える
5

mochiweb_socket_server と呼ばれる gen_server があります。生成されたモジュールは、着信要求を受信したときに呼び出される gen_server の「コールバック モジュール」にすぎません。

于 2009-08-31T20:32:41.017 に答える