Consiglio realizzazione di applicazione java

di il
6 risposte

Consiglio realizzazione di applicazione java

Ciao ragazzi, devo realizzare un applicazione in java. In questa applicazione un utente deve poter caricare dei file su un server e ad ogni accesso,accedendo a questi file deve poter effettuare delle analisi che andrò a salvare in un database,che risiederà ovviamente su un server esterno. Premetto che ho già realizzato applicazioni che interagivano con il database, però su un database remoto.
Il mio problema è sulla gestione del file.... non avendo mai lavorato su questo vi chiedo:
1) Potrei salvare questo file(.wav o mp3) nel database e quindi effettuare upload e dowload dello stesso direttamente dal database?
2) Oppure potrei salvare nel database solamente i dati delle analisi e salvare il file in una cartella sul server?
3) Nel caso 2 è possibile in java accedere a una cartella del server esterno e scrivere,leggere file su/da questa cartella i vari file?

6 Risposte

  • Re: Consiglio realizzazione di applicazione java

    michele.c93 ha scritto:


    In questa applicazione un utente deve poter caricare dei file su un server e ad ogni accesso,accedendo a questi file deve poter effettuare delle analisi che andrò a salvare in un database,che risiederà ovviamente su un server esterno.
    Vediamo innanzitutto di chiarire il contesto: si tratterebbe di una applicazione "desktop" o di una web application (fruibile solitamente e principalmente dai browser)? Mi parrebbe più la seconda.
    Se anche fosse una applicazione desktop e tu volessi salvare qualcosa su un host remoto, ci dovrebbe comunque essere una controparte server, cioè una applicazione lato server, non necessariamente Java.

    michele.c93 ha scritto:


    1) Potrei salvare questo file(.wav o mp3) nel database e quindi effettuare upload e dowload dello stesso direttamente dal database?
    2) Oppure potrei salvare nel database solamente i dati delle analisi e salvare il file in una cartella sul server?
    I DBMS relazionali offrono solitamente un tipo di dato definito "BLOB" per salvare uno stream di byte arbitrario. La dimensione massima dello stream dipende dalla variante del BLOB e dal DBMS ma può raggiungere anche i 4 GByte se non di più.
    Quindi sì, tecnicamente è possibile salvare un file arbitrario in un campo di una tabella. Bisognerebbe però vedere bene di quali file si tratta, di quanti sono, quale lunghezza e soprattutto quanto è frequente doverli accedere e/o modificare.

    Generalmente si tende a NON salvare interi file su un database ma di tenerli sul file-system. In pratica la tua opzione 2). Sia per motivi di performance, sia per praticità (se un file è sul file-system, lo puoi vedere, leggere, copiare, backuppare ecc..; se invece è su una tabella è meno facile).

    michele.c93 ha scritto:


    3) Nel caso 2 è possibile in java accedere a una cartella del server esterno e scrivere,leggere file su/da questa cartella i vari file?
    Tutto dipende di nuovo dal contesto e da cosa si intende per "server". Un server HTTP? Su HTTP, non essendo un file-system, non si "scrive" nulla, si fanno delle request ad un url, che possono essere gestite da una applicazione server-side (in PHP, Perl, .NET, Java ecc...) che poi farà quello che vuole sul file-system locale del server (o comunque qualcosa sulla sua rete locale).

    Se fosse un server FTP, chiaramente è più orientato al trasferimento di file ma di norma non si espongono server FTP in modo arbitrario e usabili da chiunque ... tantomeno su internet.
  • Re: Consiglio realizzazione di applicazione java

    Grazie per aver risposto, do una risposta alle tue domande.
    1) Si tratta di un applicazione "desktop", ho optato per questa scelta avendo l'applicazione già sviluppata in versione "desktop" altrimenti mi toccherebbe reimplementarla tutta in versione web.
    2) Per la frequenza di upload/dowload dei file che saranno in formato .wav o mp3. non so dirti quanto sarà frequente,essendo un applicazione ancora in fase di sviluppo, però per esempio un utente dovrà caricare queste registrazioni della durata di massimo 1/2 minuti(sto esagerando) sul server o database e successivamente potrà accedere a queste registrazioni per effettuare le sue analisi attraverso l'applicazione. Non dovrà modificarli , al massimo sarà prevista un eliminazione.
    3) per quanto riguarda il server devo informarmi meglio perchè non ho mai avuto a che fare con cose simili,mi è stato solo detto che ho a diposizione il server. Quindi appena ho ulteriori informazioni magari lo scrivo.
  • Re: Consiglio realizzazione di applicazione java

    michele.c93 ha scritto:


    1) Si tratta di un applicazione "desktop", ho optato per questa scelta avendo l'applicazione già sviluppata in versione "desktop" altrimenti mi toccherebbe reimplementarla tutta in versione web.
    Ok

    michele.c93 ha scritto:


    2) Per la frequenza di upload/dowload dei file che saranno in formato .wav o mp3. non so dirti quanto sarà frequente,essendo un applicazione ancora in fase di sviluppo, però per esempio un utente dovrà caricare queste registrazioni della durata di massimo 1/2 minuti(sto esagerando) sul server o database e successivamente potrà accedere a queste registrazioni per effettuare le sue analisi attraverso l'applicazione. Non dovrà modificarli , al massimo sarà prevista un eliminazione.
    Ok. Mi pare uno scenario abbastanza "tranquillo" e ragionevole.

    michele.c93 ha scritto:


    3) per quanto riguarda il server devo informarmi meglio perchè non ho mai avuto a che fare con cose simili,mi è stato solo detto che ho a diposizione il server.
    Ma continui a parlare solo di "server". È proprio su questo punto che bisogna fare più valutazioni e precisazioni. Una macchina "server" in generale offre dei servizi di rete (attraverso le porte di networking) secondo determinati protocolli di rete.
    Quindi di che cosa si tratterebbe? Di un server HTTP? Offrirebbe supporto per applicazioni "dinamiche" (che vuol dire poter sviluppare applicazioni server-side in un certo linguaggio)?

    Insomma, per il momento non saprei cosa altro dirti.
  • Re: Consiglio realizzazione di applicazione java

    Ma continui a parlare solo di "server". È proprio su questo punto che bisogna fare più valutazioni e precisazioni. Una macchina "server" in generale offre dei servizi di rete (attraverso le porte di networking) secondo determinati protocolli di rete.
    Quindi di che cosa si tratterebbe? Di un server HTTP? Offrirebbe supporto per applicazioni "dinamiche" (che vuol dire poter sviluppare applicazioni server-side in un certo linguaggio)?

    Insomma, per il momento non saprei cosa altro dirti.
    Ok appena avrò informazioni le faccio sapere
  • Re: Consiglio realizzazione di applicazione java

    Ciao. Comunque parliamo di server http quindi ho la possibilità di creare applicazioni dinamiche. In poche parole la mia soluzione è la seguente. La mia applicazione "desktop" che comunica con una applicazione lato web che mi permette di caricare/salvare i file sul server. Ora l'applicazione lato web la realizzo in linguaggio java e quindi con l'uso di servlet. Credo sia questa la giusta soluzione?
    In poche parole ho la mia applicazione lato client che con una classe servlet comunica con un altra classe servlet(che poi sarebbe la mia applicazione web) lato server.
  • Re: Consiglio realizzazione di applicazione java

    michele.c93 ha scritto:


    Ora l'applicazione lato web la realizzo in linguaggio java e quindi con l'uso di servlet. Credo sia questa la giusta soluzione?
    Sì ma ... dovresti anche chiarire cosa/quanto devi trasferire, insomma quali dati e in che formato. Perché la API delle Servlet è ovviamente il livello "base" nelle web application Java ma gestire ad esempio upload di file (nel senso degli <input type="file"> dei <form> in HTML) o più in generale gestire dati nei formati XML o JSON, non è così immediato come pensi, perché con le Servlet hai accesso a request/response a livello davvero "basso".

    A seconda di cosa/quanto devi trasferire, potresti scegliere un framework di più alto livello, ad esempio per realizzare servizi in stile REST.
Devi accedere o registrarti per scrivere nel forum
6 risposte