Sono un po 'confuso riguardo alle scelte architettoniche per le web- applicazioni / java / python mondo. Per c / c ++ mondo le scelte disponibili (open source) per implementare le applicazioni web sono piuttosto limitate a zero, coinvolgendo java o python le scelte esplodono in un, - difficile da risolvere, - disordine di "quadri" disponibili e approcci applicativi. Voglio ordinare un modello MVC pulito, in cui M sta per un tipo completamente soffiato (POCO, POJO driven) modello di dominio (secondo lo schema EAA di M.Fowler) utilizzando un linguaggio OO maturo (Java, C ++) per l'implementazione.
Lo sfondo è: ho un sistema con determinati componenti hardware (che introducono un comportamento attivo immanente del sistema) e un database di configurazione per i dati di configurazione dei meta di sistema e dei componenti HW (anche questi sono di solito autonomi, poiché i componenti HW sono in grado di mantenere comunque i loro dati di configurazione).
Per la realizzazione del protocollo di scambio dati di configurazione / stato con i componenti HW abbiamo scelto il formato Google Protobuf , che funziona bene per la comunicazione direttamente cablata con questi componenti.
Questo protocollo è già utilizzato con successo con un'applicazione GUI basata su Java tramite connessione TCP / IP al sistema principale che controlla il componente HW. Questa applicazione presenta alcuni inconvenienti e difetti di progettazione per ragioni storiche.
Ora vogliamo sviluppare un modello astratto (modello di dominio) per la configurazione e il monitoraggio di quei componenti HW, che rappresenta una vista orientata al caso più orientata al comportamento generale del sistema. Ho la sensazione che un semplice modello di classe Java si adatti meglio a questo (l'implementazione di c ++ sembra avere troppa implementazione / integrazione di overhead con interfacce di bridge linguistiche valide).
Le definizioni dei messaggi di Google Protobuf potrebbero ancora essere utili per descrivere gli oggetti DTO utilizzati per interagire con un'API del modello di dominio. Ma integrando il lato client dei messaggi di Google Protobuf per es. l'associazione dei dati nella visualizzazione corrente non sembra essere una buona scelta. Sto pensando ad alcune funzionalità di serializzazione extra, ad es. per lo scambio di dati basato su JSON con le viste / i controller.
La maggior parte delle soluzioni leggere sembra implicare uno strato di presentazione basato su Python che utilizza il trasferimento di dati basato su WSGI o JSON (almeno non sono sicuro di esserne pienamente informato).
Qualcuno può dare un buon consiglio sulle migliori pratiche o un'infrastruttura semplice da integrare per questo caso?
UPDATE:
Secondo le mie recenti ricerche e commenti dei colleghi, ho notato che usare Java (e alcuni JVM) potrebbe non essere la scelta preferibile per l'integrazione con il titolo python su un sistema Linux limitato come abbiamo (in esecuzione su ARM9 con costi di memoria e MCU difficili da discutere), ma i moduli C / C ++ farebbero bene a questo (poiché questo forma l'interfaccia nativa per le estensioni python, vero?).
Per esempio. una soluzione basata su piramide sembra fornire un framework leggero, che consente di integrare un modello di dominio utilizzando una facciata in python appropriata. Protobuf fornisce anche il supporto per la generazione di classi python, qualcuno ha esperienza con l'integrazione di messaggi protobuf come DTO con python?
Posso immaginare di fornire un modello di dominio da un'apposita API C / C ++ (sebbene ritenga che siano ancora più sforzi e requisiti di competenze più elevati per gli sviluppatori coinvolti a fare con questi linguaggi). Sto ancora cercando un buon approccio che supporti tale architettura. Apprezzerò qualsiasi suggerimento!