2010-09-23 13 views

risposta

3

MochiWeb segue base OTP Design Principles: si utilizza supervisor(3) comportamento di riavviare i processi dopo incidente (modulo mochiweb_sup.erl), e gen_server(3) comportamento. Tuttavia implementa molte routine per elaborare i dati, come ad esempio quelle che si trovano in mochinum.erl per una più rapida floating numeri in virgola serializzazione e mochijson[2].erl per elaborare JSON ecc

La cosa brutta con mochiweb (ho messo in chiaro il motivo per cui here) IMHO è che usa tecnica discutibile e ufficialmente priva di documenti (dal 2003!) di modules parameterizing (modulo mochiweb_request.erl, avviso -module(mochiweb_request, [Socket, Method, RawPath, Version, Headers]). nella testa del file). Lo stesso vale per un'altra libreria HTTP Erlang misultin().

Correggimi se sbaglio.

+1

moduli parametrizzate sono ora documentati. Non mi piacciono ancora, ma sono cose ufficiali ora. –

+0

La cosa brutta con mochiweb è che usa 'exit (normal)' troppo e quindi nasconde problemi reali. –

3

CouchDB ha avuto molti problemi con questo, ma le più recenti fonti pubblicate da Cloudant mostrano CouchDB in rebar, quindi deve essere otp compatibile.

Riak - lo stesso, su barra di armatura (btw. Lo stesso devs rebar e riak). Btw2. è un'app molto ben scritta, un buon posto per apprendere le buone pratiche.

Il codice sorgente Zotonic sembra un pasticcio. Posso vedere lì 'applicazione' ecc. Ma la struttura delle directory non sembra un vero nodo OTP. Btw. anche la licenza non viene aggiunta nella parte superiore di tutti i moduli:?

ejabberd è pieno di sups e app, ma ha anche alcune interessanti opzioni di progettazione, quindi forse non imparare Erlang su questo esempio.

3

L'app di database Hibari è decisamente basata su OTP. Il server è suddiviso in diverse app OTP, inclusa una piccola per la gestione di configurazione e logging (gmt), una grande per il server stesso (gdss), una piccola per i client nativi di Erlang (gdss_client) e app OTP separate per ogni dei gestori di protocollo lato server (ad es. JSON-RPC, UBF, EBF/BERT).

A volte un'immagine vale almeno alcune centinaia di parole. Ho alcune catture di schermate dall'app di Erlang "appmon" (monitor dell'applicazione) che mostra la struttura del processo supervisore e lavoratore. Spiacenti, le app del gestore del protocollo non sono mostrate nell'immagine n. 01, ma lo sarebbero se le avessi scattate quando ho catturato l'immagine.

il link è qui: OTP 'appmon' screen shots

-Scott

Problemi correlati