Domanda

Vorrei sapere come posso collegare uffici remoti a un database centrale.

Ecco lo scenario:

Ufficio con più utenti lavorare su un'applicazione desktop di Windows

Questa applicazione ottenerlo di dati dal database del server dell'ufficio.

Ora 1 o più remoto (uffici, negozi, a prescindere) necessità di avere accesso agli stessi dati.

Come possiamo raggiungere questo obiettivo?

A volte abbiamo bisogno in tempo reale

A volte non è così importante.

È stato utile?

Soluzione

Si potrebbe facilmente utilizzare DataSnap o RemObjects per avvolgere ed esporre il database esistente come server middle tier poi i clienti di scrittura contro di essa. Per il collegamento a questa Vorrei suggerire una connessione VPN tra i telecomandi e la vostra livello intermedio. In questo modo non c'è bisogno di preoccuparsi tanto per garantire le comunicazioni link ... a meno che i dati che si stanno trasferendo i dati è a basso rischio (non vale nulla).

Si vuole diventare molto familiare con TClientDataset . Ti dà la possibilità di operare i sistemi remoti senza avere accesso al database master, oltre a ridurre la quantità di traffico che viene spedito attraverso il filo (è possibile filtrare e ordinare in loco).

Aggiorna Gran parte della performance sarà in base alla velocità del server back-end e il tipo e la quantità di dati il ??vostro trasferimento. E 'abbastanza veloce per la maggior parte degli scopi, e se vi trovate a dover inviare un sacco di dati giù per il tubo, ho trovato che valga la pena di fare un po' il caching del client. Con l'aggiunta di un trigger di aggiornamento per impostare un timestamp aggiornato su ogni record, è possibile aggiornare la cache da solo chiedendo record più recente rispetto a quello ultimo che hai ricevuto.

Altri suggerimenti

A causa della sicurezza è necessario un qualche tipo di strato intermedio tra il client e il database. E 'molto pericoloso esporre il database direttamente a Internet. Molte applicazioni utilizzano SOAP in questo scenario, perché è ampiamente adottato. Si effettua un servizio SOAP, definiscono il protocollo e le funzioni e il client poi chiamate. Altre opzioni sono, che si effettua un servizio / server basato su REST che fa lo stesso, o anche fare uno strato TCP / IP plain. Quindi le opzioni sono:

  1. servizio SOAP come strato intermedio
  2. REST HTTP basato strato intermedio
  3. RPC basato su XML strato intermedio
  4. TCP Pure / IP strato intermedio
  5. connessione VPN per i clienti

Se si effettua una connessione VPN dal client allora si può avere un accesso diretto al database, ma questo è probabilmente quello di acward per i clienti specialy se non sono dalla vostra azienda. Io personalmente probabilmente andare con 2 o 3, ma solo perché non mi piace SOAP a molto. La maggior parte, se richiesto preferirebbe SOAP immagino.

EDIT:

Da quando ho visto questi sono gli uffici remoti, si può considerare una connessione VPN permanente. La maggior parte dei router in questi giorni sono in grado di quelli. Quindi l'applicazione può lavorare nello stesso modo a distanza come fa localy.

Ci sono 3 possibili vie di soluzione:

  1. Scrivi un'applicazione desktop normale e pubblicare questa applicazione con Terminal Services (Servizi Desktop remoto) o Citrix XenApp (o renderlo web di base)
  2. (Ri) progettare l'applicazione per funzionare sopra (possibile lento e / o inaffidabili) connessione WAN)
  3. Implementare una sorta di replica di database e implementare un database separato (server) in ogni ufficio

Un criterio di scegliere ciò di adottare è la velocità di connessione, la sua affidabilità e di costo tra uffici remoti e il server centrale. Se la velocità è adeguata, l'affidabilità è ok e costi sono piatte VPN è la strada da percorrere. Non richiede modifiche alla vostra applicazione (se non è scritto per scaricare l'intero database ...) Sarà anche gestire l'autenticazione e la crittografia dei dati. Se VPN non è una scelta, è possibile utilizzare una delle tecniche remoti nella risposta Runner, ma di solito richiede di ridisegnare (e riscrivere) l'applicazione, che modello è un po 'diverso rispetto a un'applicazione client / server "classico". HTTP (S) quelli a base di solito non hanno problemi con i firewall, ma di solito hanno bisogno di essere apolidi e non supportano i callback, la sicurezza ha bisogno di generazione e la distribuzione dei certificati. Altro lavoro con altri protocolli (cioè DCOM, dbExpress DataSnap) sono più flessibili, ma può essere più complessa da installare e / o sicure. Se la connessione non è abbastanza veloce e affidabile, o troppo costoso, potrebbe essere necessario cache locali sincronizzate con il server remoto correttamente -. E che potrebbe non essere facile da raggiungere, a seconda delle esigenze di applicazione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top