Sto scrivendo un'applicazione Web utilizzando Catalyst framework. Sto anche usando una coda di lavoro chiamata TheSchwartz.Come dovrei strutturare meglio la mia applicazione web usando le code di lavoro [e Perl/Catalyst]?
Sto volendo usare una coda di lavoro perché sto volendo la maggior parte del codice specifico dell'applicazione disaccoppiata dal codice dell'interfaccia dell'applicazione web.
In sostanza l'intero sistema è costituito da tre componenti principali:
- GUI (Catalyst interfaccia web)
- Un crawler
- Un "attacco componente" (l'applicazione è in fase di scrittura alla ricerca di XSS e Vulnerabilità SQLi in altre applicazioni/siti web)
Quindi in teoria la GUI crea lavori per il crawler che a sua volta crea lavori per il "componente di attacco".
Attualmente ho un modello in Catalyst che crea un'istanza di un oggetto TheSchwartz in modo che i controllori nell'app Web possano aggiungere lavori alla coda di lavoro.
Devo anche creare alcuni script di job worker che ascoltino continuamente (/ controllano il database) per i nuovi lavori in modo che possano eseguire le azioni richieste. Attualmente il materiale specifico per DB per TheSchwartz è nel modello in Catalyst e non penso di poterlo accedere facilmente al di fuori di Catalyst?
Non voglio duplicare i dati di connessione DB per la coda di lavoro di TheSchwartz nel modello e quindi nei miei script di Job Job. Dovrei racchiudere la creazione dell'oggetto TheSchwartz in un'altra classe che si trova all'esterno di Catalyst e chiamare nel modello che attualmente crea un'istanza dell'oggetto TheSchwartz? Quindi potrei anche usarlo negli script di lavoro. O dovrei avere i dati del DB in un file di configurazione e istanziare nuovi oggetti TheSchwartz come e quando ne ho bisogno (all'interno di Catalyst/all'interno degli script di Job Job)?
O mi sto solo pensando?
Alcuni collegamenti ad articoli di architettura di app web carnosi possono anche essere utili (non ho mai costruito uno di complessità moderata prima ..).
Acclamazioni
Un buon numero di modelli non funzionerà se lo fai. Lascia la classe dell'app vuota e config non inizializzata, e non chiama ACCEPT_CONTEXT, quindi i modelli scritti in base al modello di adattatore * raccomandato * non funzioneranno affatto. – hobbs