私はErlangで作られたサーバーアプリケーションを持っています。その中に私は写真に関するいくつかの情報を保存するmnesiaテーブルを持っています。「すべてがプロセスである」という精神で、私はそのテーブルをgen_server
モジュールでラップすることにしました。そのため、
gen_server
モジュールはテーブルに直接アクセスする唯一のモジュールです。そのテーブルへの情報のクエリと追加は、そのプロセス(登録された名前を持つ)にメッセージを送信することによって行われます。アイデアは、そのテーブルから情報をクエリするいくつかのクライアントプロセスがあるということです。
これは問題なく機能しますが、そのgen_server
モジュールには状態がありません。必要なものはすべてmnesiaテーブルに保存されます。それで、私gen_server
はおそらくそのテーブルをカプセル化するための最良のモデルではないのだろうか?
単にプロセスにするのではなく、そのモジュールの関数を介してテーブルをカプセル化するだけでよいのでしょうか。gen_server
そのモジュールにバグがあると、呼び出しプロセスがクラッシュします。これは、プロセスがクラッシュして全員が残る現在とは対照的に、単一のクライアントにのみ影響するため、より良いと思います。
テーブルにアクセスせずに(スーパーバイザがテーブルを再起動するまで)。
どんな入力でも大歓迎です。