PDA

View Full Version : [C++] Qualcuno conosce qualche buon framework?


sottovento
05-02-2009, 06:04
Ciao
devo "portare" ("ammodernizzare") una applicazione che gira su piu' computer connessi in LAN.
L'applicazione attualmente utilizza un framework proprietario che permette di controllare i processi (su quale macchina farli partire, ...) ed offre un sistema di IPC basato su eventi per poter sincronizzarli. Posso quindi spedire eventi da un processo (registrato nel framework) ad un altro senza preoccuparmi di individuare la macchina sulla quale sta girando.

Infine, questo framework puo' girare su Win/Linux-Unix/VMS (anche se l'ho visto girare il 90% delle volte su Win ed il 10% su HP-UX).

Sulla carta, questo framework e' bellissimo. In pratica, e' lento, e' macchinoso, e' pieno di bug che lo mandano in crash frequentemente. In piu', e' costoso.

Qualcuno conosce delle alternative? Magari free?

javaboy
05-02-2009, 09:37
Ciao
devo "portare" ("ammodernizzare") una applicazione che gira su piu' computer connessi in LAN.
L'applicazione attualmente utilizza un framework proprietario che permette di controllare i processi (su quale macchina farli partire, ...) ed offre un sistema di IPC basato su eventi per poter sincronizzarli. Posso quindi spedire eventi da un processo (registrato nel framework) ad un altro senza preoccuparmi di individuare la macchina sulla quale sta girando.

Infine, questo framework puo' girare su Win/Linux-Unix/VMS (anche se l'ho visto girare il 90% delle volte su Win ed il 10% su HP-UX).

Sulla carta, questo framework e' bellissimo. In pratica, e' lento, e' macchinoso, e' pieno di bug che lo mandano in crash frequentemente. In piu', e' costoso.

Qualcuno conosce delle alternative? Magari free?

Prova qt.
http://doc.trolltech.com/4.4/ipc.html

fero86
05-02-2009, 09:45
da quel poco che hai descritto non so se DCOM possa essere un'alternativa assennata: in DCOM puoi istanziare oggetti C++ che girano su altre macchine e chiamarne i metodi come se fossero oggetti all'interno del tuo processo. un sofisticato (e altamente controllabile) sistema di marshalling gestisce la trasmissione dei parametri e del valore di ritorno dei metodi, che possono essere praticamente di qualunque tipo, compresi puntatori ad altri oggetti remoti. chiaramente essendo una tecnologia molto matura soffre di pochissimi bug (io nella mia esperienza non ne ho mai incontrati). per finire non ho idea della situazione delle performance, ma oltre a ritenere che siano del tutto ragionevoli aggiungo che al limite é possibile scrivere il proprio codice di marshalling, questo lo so per certo.

purtroppo temo che non ci sia modo di farlo andare su Linux.

PS: scordati i luoghi comuni sulle difficoltá d'uso; tutte le volte che ho sentito di programmatori che impazzivano a causa di COM si é sempre trattato di superficialitá nel leggere la documentazione in MSDN, senza eccezioni.

cionci
05-02-2009, 10:57
Corba ???
http://www.codeproject.com/KB/IP/corba.aspx

Dovrebbe essere portabile un po' su tutti i SO. Non mi chiedere dove reperire le librerie perché lho studiato solo dal punto di vista teorico.
http://linas.org/linux/corba.html

cionci
05-02-2009, 11:03
Leggendo un po' ORBacus e ORBit sono i più adatti. ORBacus ha più un approccio C++, mentre ORBit un approccio C.

cionci
05-02-2009, 11:16
Guarda anche OmniORB ;) Ad un primo sguardo mi sembra lo stesso sul quale ho studiato Corba io.

nico159
05-02-2009, 13:47
Edit: no, mi sono sbagliato, dbus non credo supporti messaggi tra computer differenti

cionci
05-02-2009, 13:57
Hai preso in considerazione D-Bus (http://www.freedesktop.org/wiki/Software/dbus)? Gira pure su Windows :cool:
http://sourceforge.net/projects/windbus
D-Bus se non sbaglio ha bisogno di un demone. Senza contare che per Windows c'è un porting e non è garantita l'interoperabilità fra il porting Windows e Linux.

Imho una implementazione di Corba è più adatta perché di fatto non ha idea su quale SO il software potrà andare a girare.

sottovento
06-02-2009, 00:26
Grazie a tutti per i suggerimenti. Mi sembrano un buon punto di partenza.
Se vi viene in mente altro, valutero' volentieri anche altre piattaforme....