La migliore architettura basata su eventi per Linux in GUI

6

Mi sono guardato intorno a bit appositamente adattato e probabilmente non ho trovato il supporto giusto per questa domanda, quindi fammi sapere se c'è un forum diverso che dovrei disturbare.

Innanzitutto, esiste un'applicazione gestita da un altro gruppo che esegue alcune simulazioni e comunica al nostro sistema tramite Ethernet. Chiamiamo questa app.

Ora, abbiamo la seguente configurazione su un sistema Red Hat Enterprise Linux:

  1. Codice Ada legacy (utilizzato per comunicare con l'app seguendo un predefinito standard)
  2. Script di Linux csh / sh (chiamate le attività Ada per comunicare con l'app o scrivi i file per aggiornare Flash - chiamati da attività Ada o costantemente in linea con il programma per monitorare lo stato)
  3. Actionscript 2 Flash Movie nella finestra di Firefox (GUI - esegue il polling dei file su vedere se gli aggiornamenti sono necessari e carica le variabili in PHP chiamate di sistema, chiamate script Linux o eseguite attività Ada)
  4. PHP (utilizzato da Flash per chiamare gli script di Linux e le attività di Ada su comunicare con l'app)

Sto cercando miglioramenti architettonici. Ovviamente il guazzabuglio delle lingue è un incubo. Oltre a ciò, è difficile lavorare con Flash perché non siamo stati in grado di ottenere un'architettura basata su interrupt. Ho provato a utilizzare la classe ExternalInterface di Flash per un flusso più basato sugli eventi, ma chiunque abbia configurato l'ambiente Flash lo ha fatto in modo che non ci sia ExternalInterface disponibile. "Finalmente" (per questo post), il nostro programma viene eseguito su una macchina locale, quindi l'esecuzione di un file .swf in una finestra di Firefox non è necessaria.

Grazie per il feedback! Lasciatemi rispondere ai primi tre commenti che vedo:

  1. Sarebbe un sogno assoluto ottenere tempo e denaro per riscrivere il intero sistema in modo più coerente. Mi aspetto una resistenza significativa (perché ho già provato un paio di volte), ma farò di più ricercare e tentare di raccogliere casi più stringenti e comunicare la "debolezza" della sola parte di aggiornamento del "design".
  2. Hai ragione - mi stavo affrettando troppo a pensare che fosse necessario conosci il coraggio. Fondamentalmente speravo in cose del tipo "Il mio preferito lingue / strumenti / modelli / paradigmi / ecc per un'architettura che ha bisogno di avere una GUI e interagire con Linux è blah "o" An l'architettura basata su interrupt per AS2 esiste, è blah "o "ExternalInterface non è disponibile? Hai fatto in modo che blah?". Ho aggiornato quanto sopra con informazioni forse più utili. Lasciami sapere se questo non ha effettivamente chiarito nulla.
  3. Speriamo che la risposta precedente aiuti a spiegare a cosa servono i pezzi in qualche misura.

EDIT: Non lavoro più su questo progetto, ma possiamo mantenere il filo aperto se qualcun altro pensa che sarà utile per gli altri (dubbioso come spero che nessuno si imbatta in questa imbarazzante situazione). Quello che è successo è stato <whine> nonostante i ripetuti tentativi da parte mia e altri due sviluppatori di suggerire di riscrivere l'intera applicazione in Java / Python, non abbiamo mai convinto nessuno. Poi un altro sviluppatore (non sul progetto) si è offerto volontario per riscrivere tutto in Java e tutti sono saltati a bordo all'improvviso, quindi ora tutto è in Java (non su App, ma tutto in 3 e 4 è ora Java). </whine>

    
posta Mark Lodato 19.12.2016 - 18:47
fonte

2 risposte

1

Assumendo quanto segue:

  1. Non cambierai App, poiché è gestita da un altro gruppo
  2. Non è necessario modificare o interagire con il film AS, basta controllare gli aggiornamenti flash

Farei quanto segue per migliorare la configurazione generale:

  1. Il codice legacy della porta che utilizza Ethernet, con un linguaggio di livello più elevato di tua scelta, andrei con Python;
  2. Rimuovi GUI; usa invece Python (o qualcos'altro) per chiamare il file .swf, controllare gli aggiornamenti ed effettuare chiamate di sistema;
  3. Crea una dimostrazione del concetto con i passaggi precedenti; questo aiuterà a diffondere l'idea di miglioramento del sistema ai tuoi colleghi.
risposta data 22.08.2017 - 15:31
fonte
0

Sarebbe possibile:

  1. Introdurre un database MySQL o qualsiasi altro database leggero nel sistema
  2. sostituisci la scrittura sui file con l'aggiornamento di questo database
  3. Aggiungi un server delle applicazioni jBOSS per leggere da questo database e renderizzare i dati in pagine jsp?
risposta data 22.08.2017 - 15:46
fonte

Leggi altre domande sui tag