Appena iniziato a leggere il capitolo OTP sul grande libro di Erlang di Francesco Cesarini. La maggior parte delle applicazioni di Erlang come le applicazioni MochiWeb, Riak, RabbitMQ, Zotonic, ejabberd e CouchDB OTP?La maggior parte delle applicazioni di Erlang come le applicazioni MochiWeb, Riak, RabbitMQ, Zotonic, ejabberd e CouchDB OTP?
risposta
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.
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.
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
- 1. Quando utilizzare gen_server nelle applicazioni Erlang/OTP
- 2. CouchBase mescolato con Memcached, perdita della maggior parte delle filosofie e delle funzionalità di CouchDB?
- 3. Come gestire le applicazioni di erlang di terze parti?
- 4. ERLANG - Applicazioni di temporizzazione
- 5. Erlang OTP supervisione Java applicazione
- 6. Iniziare con mochiweb e Webmachine?
- 7. Come trovare la porta viola per la maggior parte delle applicazioni frontali in IOS 5 e versioni successive?
- 8. Erlang - Client Riak
- 9. Erlang, come caricare le applicazioni con le loro dipendenze
- 10. Test delle applicazioni VSTO?
- 11. Esecuzione di più applicazioni Erlang. Una o più macchine virtuali?
- 12. Erlang: OTP vs spawn
- 13. Le applicazioni Web sono più portatili delle applicazioni desktop?
- 14. Come profilo le applicazioni Akka?
- 15. Dimensioni ottimali per le applicazioni per le applicazioni mobili
- 16. Erlang OTP rilascia la compilazione con HiPE?
- 17. Profilatura delle applicazioni Linux
- 18. Come spostare la barra delle applicazioni di Windows (due)
- 19. Siti Web e applicazioni Web Utilizzo di Erlang
- 20. Differenze tra server applicazioni .NET e server applicazioni Java
- 21. "Erlang" vs "zeromq + qualsiasi lingua" per applicazioni integrate
- 22. I migliori progetti open source in Erlang/OTP per l'apprendimento
- 23. RabbitMQ Impossibile inizializzare la distribuzione Erlang
- 24. CouchDB Erlang View
- 25. Ritardo di analisi delle applicazioni?
- 26. Come distribuire le applicazioni VB6?
- 27. Come rilevare le modifiche alla barra delle applicazioni di Windows?
- 28. PhoneGap dimensioni delle applicazioni IOS
- 29. Haskell Snap: La distribuzione delle applicazioni e run-time dipendenze
- 30. Coprire la barra delle applicazioni con VB
moduli parametrizzate sono ora documentati. Non mi piacciono ancora, ma sono cose ufficiali ora. –
La cosa brutta con mochiweb è che usa 'exit (normal)' troppo e quindi nasconde problemi reali. –