2013-10-02 7 views
6

私はプロセスの仕組みを理解しています。そして、私はジェンサーバーなどのOTPの振る舞いを実装する方法を理解しています。Erlang:OTP対スポーン

しかし、私はもう一方のアプローチを選択すると私には分かりません。

例えば、Cesarini et。 Erlangプログラミングでは、プロセスの作成、ループ関数の作成などによってデータベースサーバを実装しています(P 240).Joe ArmstrongのProgramming Erlangの196ページのチャットクライアントもプロセスを生成します。

これらがOTPジェネラルサーバとしてうまく実装されないのはなぜですか?教育目的ですか?それとも、技術的な理由がありますか?

言い換えれば、1つのアプローチを他のものよりも実装する際のガイドラインは何ですか?

多くのありがとうございます。上記の2つの例で

答えて

7

シンプルなプロセスが教育目的のために好ましい生み出さ:これは説明するのが簡単です、これらの著者は、彼らが教えたいものを伝えるためにOTPを説明する必要はありません、それは理解することがとにかく重要ですErlangでのプロセスの概念。 OTPルールに従った現実のアプリケーションであっても、すべてのプロセスがOTPビヘイビアで実装されず、監督ツリーに挿入されるわけではありません。

経験則は非常に簡単です。 OTP設計原則に従うかどうか(コード変更、フォールトトレランスなど)、またはOTP準拠コードとの統合を検討するかどうかを決定します。あなたが持っている機能のいずれかが必要な場合は、OTPの原則に従い、ホイールの再発明を避けてください。

あなたはOTPの原則を堅持し、したがってgen_*ビヘイビアを使用する場合は、監督やをコードは、アップグレードする必要はありません任意の短命のプロセスのための簡単な産卵を行う必要があります。リリースを展開する時間よりも長生きしてはなりません(それ以外の場合は、とにかくsoft_purgeが必要です)。他のすべてのプロセスは監視ツリーに挿入され、おそらくgen_ *の動作を実装する必要があります。

関連する問題