Java front-end, metodologia back-end PHP / MySQL

0

Sono praticamente uscito dal mondo della programmazione per circa 10 anni, con solo un po 'di diletto qua e là con piccole utility Java e un grande database Access che ho scritto per qualcuno, e alcuni macro VBA qua e là.

Ora sono tornato con un progetto su cui mi piacerebbe lavorare e sono molto confuso riguardo all'intera nuova scena di programmazione web. Sto cercando di scrivere un database multiutente basato sul web, e non ho molta familiarità con le tecnologie utilizzate.

Quindi ho pensato che dovrei andare con quello che mi è familiare. Conosco un po 'di PHP e molto SQL, quindi è un buon inizio per il back-end. E odio CSS e JavaScript, quindi cercherò di utilizzare un'applicazione desktop Java standard per il front-end (che è comunque più appropriato per questo database e quindi un front-end basato sul web). Non conosco affatto C # e non sono disposto a impararlo solo per questo progetto, anche se sono curioso di apprenderlo alla fine.

Ho passato molte ore su questo, e mi sono familiarizzato con l'elaborazione di Jackson per JSON, e ho persino creato una coda di comando fantasiosa che invia richieste e riceve risposte al server su un thread separato e si occupa piacevolmente degli errori.

Ma trovo l'intero processo piuttosto noioso. Per ogni piccola tabella che creo nel database, ho bisogno di fare uno Swing JFrame , quindi devo connettere l'interfaccia utente con la classe Java sottostante che contiene i dati, quindi devo fare le richieste che mettono i dati in il JSON appropriato, che spesso implica un po 'di manipolazione con le annotazioni di Jackson, quindi devo fare il PHP che prende i dati e li inserisce in una query SQL. E lo stesso vale per l'altra direzione, devo fare una richiesta al server che richiede i dati, ho bisogno di scrivere php per rendere appropriate le query SELECT, inserirle in JSON (almeno json_encode lo fa abbastanza bene, anche se è complicato se ci sono relazioni uno-a-molti coinvolte) riporta le informazioni nella mia classe java, e poi ottiene quella visualizzata nella GUI. E tutto il modo in cui i dati devono essere convalidati e gli errori risolti.

Mi sembra che sia troppo lavoro per una cosa così semplice. Sono abituato all'Accesso, dove si effettua una query e quindi si visualizzano i risultati e si consente all'utente di modificarli è solo una questione di eseguire una procedura guidata e spostando un po 'i controlli. E mi sembra che molto di quello che ho già fatto con la mia coda di elaborazione dei comandi stia probabilmente reinventando la ruota: ogni applicazione basata sul web ha bisogno di qualcosa del genere.

Mi manca qualcosa?

    
posta clum 23.04.2015 - 22:18
fonte

1 risposta

0

Dato che non stai sviluppando un sito Web o un'applicazione web, ma un'applicazione desktop che memorizza i suoi dati su un server, ci sono in effetti alcuni livelli che puoi saltare.

Un approccio comune, in questa situazione, è l'utilizzo dei servizi web .

Quando un servizio deve essere leggero e interoperabile (ovvero, è possibile utilizzarlo facilmente da praticamente tutti i linguaggi di programmazione), il servizio può assumere una forma di REST . Lo svantaggio è che non tutti i linguaggi sul lato server consentono di creare servizi REST in modo indolore, senza scrivere troppo codice.

Un altro modulo che un servizio web può assumere è SOAP . In .NET Framework, questa era un'opzione standard de facto per i servizi Web per un lungo periodo, anche se recentemente c'è stato un importante spostamento verso REST; ad esempio, SharePoint stesso si basa sempre di più su REST anziché su servizi WCF precedentemente diffusi. Potrei immaginare che la situazione sia simile a Java e PHP.

Il vantaggio di SOAP è che probabilmente non è necessario scrivere alcun codice. In .NET Framework dichiarate le vostre interfacce del servizio Web lato server e lasciate che il framework generi il WSDL (lo schema dettagliato del servizio) ed elabori le richieste e le risposte. Quindi importa il servizio lato client, senza la necessità di scrivere una singola riga di codice.

Lo svantaggio di SOAP è che di solito è molto più pesante rispetto a REST. Le risposte sono anche di solito più grandi, il che influisce sulla larghezza di banda.

Nel tuo caso, considera il servizio web come un'interfaccia per il tuo database . Dal momento che non vuoi che nessuno sia in grado di selezionare tutto dalla tabella dei tuoi utenti o eliminare tutti i tuoi tavoli, il servizio web è un modo per dire chi può accedere a cosa.

Questo è diverso dal semplice accesso a un database SQL con una configurazione di autorizzazioni a grana fine, in modo che un determinato utente possa accedere e fare solo una quantità molto limitata di cose. Con un servizio Web, puoi anche disinfettare gli input, controllare la quantità di risorse accessibile da un utente, utilizzare la cache per migliorare le prestazioni, accedere alle risorse al di fuori del database, ecc.

Ovviamente, puoi anche solo il passo di scrivere l'interfaccia di servizio se l'unica cosa che ti serve è associare il servizio al database. In .NET Framework vengono utilizzati i servizi dati WCF (il progetto è originariamente chiamato Microsoft Astoria; cerca questo nome se desideri articoli che non sono troppo tecnici). Sono sicuro che Java e PHP hanno qualcosa di simile.

    
risposta data 23.04.2015 - 23:17
fonte

Leggi altre domande sui tag