Newsgroup: it.comp.lang.delphi
Titolo: Leggere dati da Server Remoto (non in Lan) - uso Indy  ?

e' stato eliminato il Server As400 + DB2 con vari Server Linux + Db 
Firebird.
 
In determinate circostanze sara' necessario accedere ad un Server Remoto
- Linux Server + Firebird;
leggere i dati e presentarli su una griglia (come si fa con un Db in Lan).
 
In realtà i server sono piu' di 1, ma l'accesso avverra' sempre uno alla 
volta, delle porte dei router se ne occuperanno i sistemisti.
 
Io dispongo di : indirizzo IP del server e porta in ascolto del Db, 
protocollo TCP/IP , e della struttura del Db stesso.
 
Il server (fisicamente a Km di sistanza) e' collegato alla linea ADSl 
disporrà di un proprio IP Statico, ma non ha un dominio, ne' servizi 
vari come quelli di Aruba (quindi non accessibile con 
http://www.
..)
 
La gestione sara' fatta con Delphi XE2 Win32.
 
Per prima cosa proverei a verificare con Indy TCPServer, se l'IP e' 
raggiungibile: ma equivale ad un Ping fatto sulla LAN ?
 
Problema 1 - scegliere il modo per accedere:
- un Client fa la richiesta ad un Server (potrebbe eseere i dati 
inseriti dopo una data ora o un dato giorno), sempre che si possa 
costruire una sorta di query.
- ed il Server inviera' i dati richiesti (n record).
 
- creo dei WebServices (componenti Indy ?)
- Indy distinguono tra Server e Client:
 
uso Indy Server per interrogare il Server Remoto
e Indy Client per leggerla ?
 
Problema 2 - i dati richiesti al server saranno disponibili sul client, 
quindi credo non sia necessario creare una pagina Web.
 
posso fare tutto con Indy Server e Client ?
o serve un WebServices (mai affrontato il problema e non sono documentato).

 La gestione sara' fatta con Delphi XE2 Win32.
 
Con quale edizione?
Professional? Enterprise? Architect? Ultimate?
 
-- 
MARCO BREVEGLIERI
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.net
 

>
Dimentico sempre qualcosa ... Professional.

 Dimentico sempre qualcosa ... Professional.
 
Peccato, perché con *DataSnap* avresti avuto chiavi in mano la soluzione più semplice, immediata e potente per realizzare tutte le cose che hai richiesto. :|


 
1) Uno dei clienti di qua usal'applicativo con connessioni a DB via
WAN
La app e' VERAMENTE mission critical, ma salvo qualche rallentamento,
va, ma sto parlando di Oracle, se nn ricordo male 10g.
 
2) Usare un  web service vuol dire che devi avere un web server che in
qualche modo ha accesso al database.
Quindi, ho installi un web server sullo stesso server dove gira il
motore db oppure ne metti un altro, ma cmq dovrebbero stare sulla
stessa rete.
A prescindere da IIS o altro, un web service non e' il max della
velocita'.
Esso e' pensato per standardizzare la comunicazione tra piattaforme
diverse.
cmq, vorrebbe dire RISCRIVERE la tua app.
 
 
A.
 
 
 

>
veramente non ho ancora ordinato l'upgrade da D2007 Pro, e se ne valesse 
veramente la pena potrei passare ad Architect (nonostante l'investimento 
pesante).
 
ho letto qualcosa su DataSnap ma non ne so piu' di tanto, anche perche' 
nella la Professional non ci sono.
 
usando datasnap come si potrebbe risolvere ?
 

 usando datasnap come si potrebbe risolvere ?
 
Puoi creare server DataSnap che condividano in pochi istanti un singolo dato o un intero DataSet, trasferendoli direttamente a un ClientDataSet tramite DataSetProvider. Oppure puoi creare applicazioni REST e accedervi con client Delphi o altri client, anche "mobile".
 
Le funzionalità comunque sono troppe per sintetizzarle qui.
 
Scarica i filmati dell'ultima CodeRage per un approfondimento più che esaustivo:
http://cc.embarcadero.com/results.aspx?keywords=CodeRage+6
 
 
Ciao,
  Marco.


>
mi studiero' filamti ed altro materiale presente in Rete, e Delphi2010 
HandBook che tratta datasnap.
 
altro dubbio i test:
 
se creo un server Linux + motore DB Firebird, lo aggancio alla LAN, e lo 
rendo "visibile" solo tramite IP e porta 3050.
 
quello che posso testare utilizzando DataSnap, conessioni Server e 
Client, saranno poi eqauivalenti nel Server Remoto ?
 
non e' detto che mi mettano a disposizione un Server per fare le prove.
 
ciao Maurizio
 
 
 

 Client, saranno poi eqauivalenti nel Server Remoto ?
 
Io non ho ancora capito l'architettura.
 
Tu hai un server Linux su cui gira FireBird e un server che legge dati e li presenta a un client?


>
e' un po' articolata:
 
tutti i client usano Windows XP o Seven.
 
diciamo cosi' aree A, B, C, D sono LAN con un Server Linux + Firebird
e vari client che leggono e scrivono sul server della loro LAN,
e fin qui tutto normale.
 
a volte un client dell'Aerea A ha necessita' di interrogare uno dei 
server dell'aerea B, C, o D e questa volta non sono in LAN
 
riepilogando
LAN A (Server + vari Client) in LAN
cosi' per le LAN B, C, D
le varie LAN non sono fisicamente connesse tra loro
 
un Client della LAN A deve leggere i dati nel Server della LAN B, C, o D
via TCP/IP.
 
 
 

 via TCP/IP.
 
Hai scritto cose in contraddizione: come è possibile che clienti nella rete "A" debbano interrogare server nelle LAN "B", "C", "D" senza che queste siano fisicamente connesse tra loro?


>
per fisicamnete intendevo via LAN, sono raggiungibili tramite ADSL, ogni 
server vi e' connesso, ma non hannoun dominio web.
 
pensa ad un Comune : Anagrafe sede Centrale (A) e Anagrafe sede 
Decentrata (B) (distante Km o solo in un diverso edificio),
ad un certo punto A deve leggere i dati di B.
 
L'unica connessione e' ADSL, e quindi protocollo TCP/IP.
 

 server vi e' connesso
 
Ok, quindi in realtà virtualmente è come se facessero parte tutti della stessa rete, perché in qualche modo queste LAN devono contattarsi in qualche modo.
 
Tralasciando l'architettura, tu avrai a disposizione per ciascun client e server un indirizzo IP assegnato che li identifichi univocamente, per cui non capisco il problema che devi risolvere o il ruolo di Delphi in questo frangente, nel senso che non mi sembra un problema di programmazione quanto più di networking.
 
Per quanto riguarda Delphi è sufficiente dire che puoi creare un server, installabile su una macchina Windows, raggiungibile a un indirizzo IP, che può ricevere comandi dai client e restituirvi dati.
 
Il problema è quello che deve essere trasferito tra queste due macchine, poi il modo con cui vengono fatti viaggiare i pacchetti nella rete è indifferente (dal punto di vista dell'indirizzamento), cambierà solamente la velocità nel caso dell'ADSL rispetto alla rete locale.
 
Ciao,
  Marco.


> Per quanto riguarda Delphi è sufficiente dire che puoi creare un server, installabile su una macchina Windows, raggiungibile a un indirizzo IP, che può ricevere comandi dai client e restituirvi dati.
non mi e' chiaro cosa intendi, all'inizio hai accennato a DataSnap per 
risolvere.
 
non posso creare una porzione di applicativo DataSnap Server, perche' il 
server usa Linux a riga di comando (non e' installata l'interfaccia 
grafica).
 
 
 

 protocollo TCP/IP , e della struttura del Db stesso.
 
Hai quasi tutto quello che ti serve.
 
Il "quasi" è dovuto al fatto che deve essere aperta la porta 3050 (o 
quella definita nel firebird.conf dei vari server) negli eventuali 
firewall sparsi per la rete.
 
Sbatti N TIBDatabase (IBX) o N TZConnection (Zeos) in un datamodule, uno 
per ogni server dal quale devi leggere i dati, e li configuri con l'IP 
del server ed il percorso fisico o alias del db. Non hai bisogno 
d'altro. Il lavoro sporco lo fa il client FireBird per te, altrimenti 
che ci sta a fare?
 
Questa è la teoria e funziona.
 
La pratica è che i collegamenti potrebbe essere lenti per svariati 
motivi (server maldimensionati, linee telefoniche arcaiche, PC 
inadeguati), ma lì tu non puoi farci niente.

 quindi credo non sia necessario creare una pagina Web.
 
Appunto, direi che non serva :)
 
Enrico

 remota e non locale
 
Non c'è nessuna differenza.
 
Al posto di 127.0.0.1 o localhost nella stringa di connessione metti 
l'IP del server dove c'è FB che deve essere raggiungibile dal PC dove 
gira il software.
 
Ora che ci penso un ulteriore problema potrebbe essere l'autenticazione 
al server FB, ma per quello non abbiamo informazioni in merito per poter 
dire qualcosa.
 

 al server FB
 
Da quel punto di vista non vedo problemi, crei l'utente e dai le credenziali 
allo sviluppatore
 
Enrico

 Maurizio wrote:
 
Dimenticavo: tutta questa roba va *parametrizzata*, altrimenti ogni volta 
che cambia qualcosa (e cambia) dovrai ricompilare e ridistribuire tutta 
l'applicazione
 
Enrico

 grafica).
 
Se devi creare un server che giri su Linux, allora non puoi usare Delphi in quanto tale, almeno per il momento.



E secondo te il passaggio di questa informazione non potrebbe essere una 
potenziale fonte di problemi? :)
 


 
Ma il passaggio di user e password al server è necessario per 
l'autenticazione.
 
Ci sono modi "sicuri" di passare queste informazioni su connessioni adsl?
 
Grazie, ciao.

>
E' del tutto ininfluente, nel server Linux c'e' solo il motore Firebird, 
il database stesso, e la modifica del file Firebird.conf.
Non c'e' nessun applicativo
 

 Non c'e' nessun applicativo
 
Tu hai detto questo: "non posso creare una porzione di applicativo DataSnap Server, perche' il server usa Linux a riga di comando (non e' installata l'interfaccia grafica)".
 
In pratica, tu mi dici che non puoi creare un applicativo DataSnap perché il server usa Linux, poi dici che questa applicazione non la devi creare perché su Linux c'è solo il database.
 
Secondo me, dovresti evitare di farti tirare fuori dettagli con il cavatappi e cercare di chiarire un minimo come è fatta in modo definitivo questa architettura di rete, quali sono i software che devi realizzare, cosa devono fare, dove è collocato il database, quali dati devono scambiarsi, su quali sistemi, ecc. altrimenti risulta del tutto impossibile risponderti, e quando lo si fa immediatamente ogni suggerimento diventa inutile perché segue una indicazione fornita da te che poi viene smentita o cambiata.


 non puoi farci niente.
 
Per eventuale lentezza via adsl mi ero documentato qualche tempo fa e 
trovai zebedee. Non ho fatto prove sul campo, visto che poi non mi è 
servito, quindi non ti so dare informazioni migliori.
un saluto
 
-- 
Emanuele Desideri
 
 


Non so come avvenga la comunicazione tra client e server FB per questi 
dati, quindi non so darti informazioni in merito.
 

>
E' una normale applicazione DataBase, Client/Server su LAN , l'unica 
differenza e' che ci sono Server connessi solo tramnite ADSL.
 
Architettura:
n Server Linux + Firebird :
aggiunto FTP server per scambio file (es. documenti OpenOffice)
tutti con IP Statico e connessi via ADSL tramite Router
 
Client : tutti con Windows XP o successivo - IPV4 statico , connessi in LAN
 
Software:  un normale Client / Server
 
Dati :
Tutti i client leggono e scrivono sul DB Firebird presente sul Server 
della loro LAN (quindi 1 Server + vari Client)
 
Tutti sono indipendenti, ma se necessario possono chiedere (con una 
Query) al Server che non fa parte della loro LAN alcuni dati.
 
L'esempio dell'Anagrafe Centrale e Decentrata di un Comune e' 
perfettamente calzante con cio' che devo fare.
 
Se i vari Server Remoti sono raggiungibili tramite IP e Porta 3050, come 
se fossero nella stessa LAN, non capisco perche' usare DataSnap.
 
Ad ora con TSQLConnection + TClientDataSet + TDataSetProvider + 
TSQLDataSet, i record vengono spediti e ricevuti verso il Server Linux 
della LAN.
 
Rispetto alla normale gestione del DB , vi e' in piu' la necessita' di 
traferire File binari (OpenOffice, Pdf, etc), e qui penso che l'uso dei 
componenti Indy sia utile.
 
Verso quello Remoto, non so, ho provato a fare il Ping da un Client 
Windows, ma non ha risposto, da qui e' nato il dubbio, se fosse 
possibile gestire un Server non fisicamnete in LAN, come se si trattasse 
di uno che fa parte della stessa LAN.
 
credo che questo schema chiarisca in modo efficace.
 
L'architettura non e' complicata:
 
LAN A
Server 1  -------------->!  invia richiesta Server LAN B
---------<--> Client1    !
---------<--> Client2    !  accesso dl db Firebird
---------<--> Clientn    !
                          // -- Router + ADSL --
LAN B
Server 2 ----------------!  riceve richiesta da Server 1 LAN A
------------------------->  invia risposta a Server 1 LAN A
---------<--> Client1
---------<--> Client2
---------<--> Clientn
 
LAN A e LAN B comunicano sempre tramite IPV4 ma non sono connesse via Cavo.

 Ci sono modi "sicuri" di passare queste informazioni su connessioni adsl?
 
Per quanto ne so firebird non è progettato per funzionare bene su una 
rete geografica. I problemi possono essere:
 
* Sicurezza - non so le password ma gli altri dati passano sicuramente 
in chiaro
* Velocità - anche se nelle ultime versioni ci sono state delle 
ottimizzazioni la comunicazione tra client e server richiede parecchi 
"roundtrip" che su una rete lenta sono un problema
* Accessibilità - firewall e proxy possono rendere problematica la 
connessione al dbserver
 
Possibili soluzioni sono scriversi un application server (datasnap o 
altro), usare una vpn o strumenti tipo zeebedee.

 Server 2 ----------------!  riceve richiesta da Server 1 LAN A
 
Se per "Server" identifichiamo sempre un "FireBird Server" che gira su Linux, non è chiaro come possa - da server - inviare richieste a un altro server.
 
Un server è un server, e riceve richieste, non le invia.


..e' da un po' che arrivano qua persone che fanno richieste generiche,
aspettano le risposte, e quando le ricevono cambiano progressivamente
le carte in tavola.
In piu' su questi th scrivono persone che magicamente spariscono
appena il th si "raffredda".
 
Percio', ribadisco il "don't feed the troll".
 
A.

 Percio', ribadisco il "don't feed the troll".
 
Dubito che ci siano persone che hanno interesse nel venire su 
it.comp.lang.delphi, frequentato da una decina di programmatori che si 
conoscono tutti, e inventarsi tutta la tiritera per dar vita ad un 
presunto trolling "morbido"..
 
Secondo me si tratta semplicemente di far capire che questo è un ng 
tecnico e che bisogna abituarsi a porre le domande nel modo opportuno.
Poi, se uno non la capisce, basta smettere di seguire il thread.
 
Non vedo tutta questa intenzionalità di trolleggiare, vedo più che altro 
difficoltà nell'esprimersi in termini tecnici, sintetici e chiari.
 
-- 
morde
QT 4.7
Delphi (5,6,7.. expired)
Firebird Database
 

 presunto trolling "morbido"..
 
Io invece concordo con Alberto che si tratti proprio di questo. :)


 le carte in tavola. [...]
 
Sono assolutamente d'accordo con te.
 
Personalmente, dedico a queste discussioni il minor tempo possibile, oppure semplicemente mi limito a un paio di suggerimenti spartani, così si rimane nel sicuro, ma di certo non mi metto ad approfondire più di tanto la problematica, visto che comunque l'approfondimento dovrebbe farlo più l'autore della discussione, poi quando lo scenario è cambiato un paio di volte lascio perdere.
 
Ciao!
  Marco.


 Io invece concordo con Alberto che si tratti proprio di questo. :)
 
 
Uhm...devo quindi sciogliere le briglie e scatenare i miei killfiles? E' 
un pò che non gli dò da mangiare e sono affamati..
 
:-D


>
eppure la versione e' sempre stata la stessa (n Server non connessi tra 
loro via cavo, ma via ADSL), con la necessità di scambiarsi dati (record).
 
pero' se non avevi capito, perche' ti sei affrettato a dire
 
 >Peccato, perché con *DataSnap* avresti avuto chiavi in mano la 
 >soluzione più semplice, immediata e potente per realizzare tutte le 
 >cose che hai richiesto. :|
 
sembrava piu' di un suggerimento spartano.
 
per le tue idee sul Troll, ciascuno e' libero di pensare.
 
Inutile continuare a perdere tempo su questa discussione.
 
ciao Maurizio
 
 
 

 Inutile continuare a perdere tempo su questa discussione.
 
E' l'unica cosa attualmente chiara di questo thread. :)
E concordo pienamente.


 Dubito che ci siano persone
 
 
..secondo me e' una sola persona che poi fa morphing a manetta.
 
A.

>
 
almeno su questo siano d'accordo.
non ci siamo capiti, ma si e' discusso e qualcosa in piu' ho capito;
almeno lo spirito del ng e' stato rispettato, mica sempre si deve 
chiedere un'esempio di codice.
 
ciao Maurizio

> ma secondo te cosa ci dovrei mai fare con un Server Database ?
 
Visti i "penso", i "credo" etc, magari usi un server database come
portarotoli in cucina....
 
 
 
A.

>
... non credo meglio al posto della Moka.
 

 appena il th si "raffredda".
 
Mi viene il dubbio di aver contribuito a questo... io sono un antico
lurker di questo gruppo, che qualche volta e` pure intervenuto
[perlopiu` su questioni assolutamente OT come il quoting bizzarro di
G2 e l'open source e... cose come questa :-)... o meno OT come
Lazarus... ma normalmente me ne sto zitto semplicemente perche` non ho
la competenza minima per partecipare piu` attivamente]... Ricordo bene
il nick di Maurizio, anche perche` l'ho incontrato pure in gruppi su
linux e l'ho sempre trovato piuttosto coerente nelle sue problematiche
[nel senso che magari non erano immediati da capire, ma non sembravano
problemi inventati]... incidentalmente ultimamente sono proprio
intervenuto in un thread aperto da Maurizio per *sparire* subito
dopo... ma credo di essere abbastanza *riconoscibile* perche` in vari
gruppi e da molto tempo uso un indirizzo di posta valido e sempre
uguale e anche per questo ho la presunzione di non essere facilmente
scambiato per troll... E non lo dico per rimproverare il sospetto di
Alberto [imho i sospetti di per se` non offendono e possono aiutare a
capirsi], ma solo per fornire un *indizio* [nient'altro che questo] un
poco contrario alla sua ipotesi [ma non la posso certo *smentire* con
dati di fatto]...
 
Ciao ciao
Claudio, che torna a lurkare

 potenziale fonte di problemi? :)
 
Se intendi a livello di connessione, e` ovvio, in quanto Firebird non implementa 
alcun livello di criptazione dei dati. Ma, come ho gia` detto, bindare la 
connessione tramite firewall sul solo IP pubblico da cui si connettono i client, 
direi che gia` basta per garantire un livello minimo di sicurezza (in 
alternativa, si puo` implementare una VPN tra le due reti). Ma, secondo me, e` 
un problema di chi gestisce l'infrastruttura, non di chi sviluppa l'applicativo
 
Enrico


Ovvio.