accesso a database remoto

Buongiorno a tutti,

per un’applicazione desktop qual’ il modo migliore per accedere a un database remoto?

Supponendo di avere un server chiamato X esposto a internet su cui gira mysql e un’app desktop in giro per il mondo che deve accedere al database: sul server X… come faccio a leggere i dati dal db? E’ corretto in termini di sicurezza e prestazioni accedere al db come fossi in locale? La password di accesso al db mysql sufficiente a garantire un minimo di sicurezza ? Oppure si usano due app una che gira sul server che passa i dati letti e scritti sul db locale all’altra sul client ? Oppure ci sono altri sistemi ancora? In genere come si fa?

Grazie molte a chiunque risponde

Nattando la porta di MySql (di default la 3306),rendendo quindi MySql accessibile via internet, puoi collegare l’applicazione desktop a Mysql come se fosse in locale. Puoi aumentare la sicurezza, restringendo gli la lista degli IP da cui consentita la connessione.
L’alternativa un webservice, ovvero come accennavi tu, una app che gira sul server su cui attivo MySql e che offre l’accesso ai dati in lettura/scrittura attraverso una serie di metodi personalizzati. Questa seconda opzione, offre un’accesso “standardizzato” attraverso richieste http, utilizzando sintassi JSON e/o XML. L’applicazione quindi che parla con il webservice, puoi essere scritta in qualunque linguaggio e girare su qualunque piattaforma (anche mobile) e l’accesso ai dati ulteriormente ridotto alle sole attivit richieste dall’applicazione, senza aprire un canale di accesso diretto a MySql. La soluzione webservice ha lo svantaggio iniziale di dover essere sviluppata, a differenza della pubblicazione di MySql che subito pronta.

Grazie Pietro,

ma, secondo la tua esperienza, in genere come si preferisce fare?

Di default la connessione al login tra mysql e l’applicazione criptato, quindi i dati di login dovrebbero essere (relativamente) al sicuro. In alternativa si pu far configurare mysql con connessione ssl ed in questo caso la connessione totalmente protetta (login e dati).
Io personalmente uso la prima soluzione da pi di dieci anni e non ho mai avuto problemi; ovviamente va tenuta in considerazione la ridotta velocit della connessione,
Il vero vantaggio della soluzione web service che anche accessibile senza problemi da devices mobili.

[quote=355035:@Marco Cagnasso]Grazie Pietro,

ma, secondo la tua esperienza, in genere come si preferisce fare?[/quote]
Mi accodo al post di Antonio; la connessione diretta a MySql offre vari strumenti per elevare il livello di sicurezza, che sono adeguati a garantirti “sogni tranquilli”. L’approccio ad un webservice si giustifica solo se c’è un’esigenza di connessione al db da dispositivi mobile o piattaforme che non possano “dialogare” direttamente con MySql tramite ODBC, JDBC, ecc.

Dipende molto da quello che vuoi fare.
L’approccio diretto, con tutte le cautele di sicurezza gi descritte, ti permette di avere completamente il database a disposizione.

Spesso, non solo per app mobile, devi compiere azioni precise e non genericamente “accedere” al db per cui farlo via JSON/XML pu essere pi consono (ovviamente anche in questo caso sovrapporre uno strato di sicurezza altamente consigliabile)
Tieni presente che non sempre puoi pubblicare direttamente il tuo db per cui se vuoi avere un progetto trasportabile in altre situazioni che non controlli direttamente, l’uso di una applicazione che fa da “ponte” consigliabile.

Se scrivo un programma con xojo per ios, posso accedere al db direttamente? Se non si pu, Monkey Bread Software ha qualche sistema? Grazie a tutti…

Con Xojo no, ma MBS offre un kit apposta: http://www.monkeybreadsoftware.de/xojo/EncryptionKit/

Grazie a tutti.