9

プロセスがどのように機能するかを理解しています。また、gen-server などの OTP 動作を実装する方法も理解しています。

しかし、いつどちらのアプローチを選択するかは明確ではありません。

たとえば、Cesarini et。al., in Erlang Programming, p 240 でデータベース サーバーを実装するには、プロセスの生成、ループ関数の作成などを行います。Erlang のプログラミングの p 196 にある Joe Armstrong のチャット クライアントもプロセスを生成します。

これらを OTP 生成サーバーとしてより適切に実装しないのはなぜですか? 教育目的ですか?それとも、適切な技術的理由がありますか?

言い換えれば、あるアプローチを他のアプローチよりも優先して実装するには、どの経験則が私を導くでしょうか?

どうもありがとう。

4

1 に答える 1

7

上記の 2 つの例では、単純な生成されたプロセスが教育目的で好まれています。これは説明が簡単であり、これらの作成者は教えたいことを伝えるために OTP を説明する必要はありません。とにかくプロセスの概念を理解することが重要です。アーラン。OTP ルールに従う実際のアプリケーションでも、すべてのプロセスが OTP 動作で実装され、監視ツリーに挿入されるわけではありません。

経験則は非常に単純です。OTPがもたらすもの (コードの変更、フォールト トレランスなど) を確認してOTP の設計原則に従うかどうか、または OTP 準拠のコードと統合する予定があるかどうかを判断します。OTP がもたらす機能のいずれかが必要な場合は、OTP の原則に従い、車輪の再発明を避けてください。

OTP の原則に固執し、したがってビヘイビアを使用する場合は、監視またはコードのアップグレードが不要な短命のプロセスgen_*に対して単純なスポーンを行う必要があります。リリースを展開する時間よりも長く存続することはありません (そうでなければ、とにかく必要になります)。他のすべてのプロセスは監視ツリーに挿入する必要があり、おそらく gen_* 動作を実装します。soft_purge

于 2013-10-02T20:26:53.713 に答える