Newsgroup: it.comp.lang.delphi
Titolo: da db paradox a internet

Ciao a tutti.
Da anni faccio manutenzione di un'applicazione in delphi2 che fa uso di 
database paradox tramite bde.
Ora , al fine di evitare la riscrittura della procedura anche piuttosto 
complessa e composta da circa una trentina di tabelle strettamente 
relazionate, come posso portare l'applicazione su internet?
In particolare ho bisogno di integrare funzionalita' almeno di 
consultazione (ma se si potesse anche operare modifiche in parte non 
sarebbe male) dei database da parte di utenti esterni?
Esiste un modo o dei tools per evitare troppo lavoro?
Grazie a tutti
Geppetto

sarebbe male) dei database da parte di utenti esterni?
E' una domanda? 

 E' una domanda? 
Hai ragione. Ho sbagliato :(  Era un'affermazione :))
In pratica non mi conviene nemmeno toccarla la vecchia applicazione ma 
inizire da zero con una nuova a questo punto !?
Grazie
Geppetto

inizire da zero con una nuova a questo punto !?
Non so che cosa puoi recuperare della vecchia, ma se sei intenzionato
a cambiare DB, la scelta che puoi fare è solo verso un RBDMS come
Firebird o MySQL.  In quel caso, l'applicazione devi praticamente
riscriverla.

 riscriverla.
Certo se penso che gia' per passarla da Delphi2 ad almeno Delphi7 c'e' 
un bel po' di lavoro .....
Forse e' il caso di considerare la riscrittura in PHP. Sara' un'impresa :((
Grazie del tuo tempo, Andrea.
Geppetto

 Forse e' il caso di considerare la riscrittura in PHP. Sara' un'impresa :((
Puoi anche riscrivere l'applicazione senza abbandonare Delphi 
(vedi l'uso di ISAPI oppure l'adozione di Delphi 2005 con la 
possibilità di sfruttare le potenzialità di .NET in questo senso), 
ma sicuramente l'architettura dei dati e dell'applicazione stessa 
è da rivedere.  Se ci fossero altre soluzioni meno traumatiche, te 
le proporrei ;-)


Senza stravolgere la tua applicazione potresti usare Terminal Server.
L'applicazione gira su un server e gli utenti si collegano tramite 
client e usano il server come se fossero li' davanti. Devi prevedere una 
robusta politica di permessi per evitare che l'utente remoto ti spenga 
il server, ma non e' troppo complesso. L'occupazione di banda e' minima 
perche' viaggiano solo le schermate. Tutta l'elaborazione e' a carico 
del server che deve, quindi, essere ben carrozzato.
Tutto questo partendo dal concetto che tu abbia a disposizione un server 
almeno W2K (2003 sarebbe meglio) e che i client siano collegati almeno 
tramite ISDN (ADSL sarebbe meglio).
Se non ricordo male sotto W2KSRV avevi 120 gg. di prova prima della 
disattivazione del servizio. Ti rimane una connessione sola come 
Administrator. Hai, quindi, 4 mesi in cui pensare a qualcosa di 
alternativo, soprattutto per le tabelle Paradox. Io uso IB/FB e mi trovo 
benissimo.

 Senza stravolgere la tua applicazione potresti usare Terminal Server.
Già, così gli utenti remoti si impiccheranno a un albero, dopo il 
terzo giorno di utilizzo del programma.


Ottima considerazione tecnica.

 Ottima considerazione tecnica.
La considerazione tecnica è sottintesa.  Immagino che tu non abbia 
mai lavorato da remoto con TS.  Non mi meraviglierei, visto che 
sei solito aprire bocca su ciò che non conosci.


Sono circa 4 anni che ho in piedi un'applicazione Delphi che gira su un 
server TS a cui sono collegati cinque client remoti tramite un router ISDN.
Le prestazioni sono dignitose, non eccelse, anche perche' il server, non 
nostro, non e' granche'.
Ho tirato fuori quest'ipotesi visto che geppetto aveva scarsa 
voglia/tempo di riscrivere l'applicazione. In questo modo da' la 
possibilita' ai suoi client remoti di lavorare.

 possibilita' ai suoi client remoti di lavorare.
In efftti non e' una cattiva idea.
Sempre che leprestazioni diano accettabili (ma credo di si per sola 
consultazione).
Ma scusami la domanda: TS funziona come VNC dove da server deve esserci 
l'appicazione che gira veramente (se fosse cosi sarebbe monoutente)?
Grazie
Geppetto

Sento molto parlare di Web Application Server o cose del genere tipo 
Corba in ambito delphi o altro.
Cosa ne pensate. Sono troppo costose?
Sono difficili da implementare?
Geppetto


Tramite TS tu hai un server che permette agli utenti remoti di eseguire 
applicazioni che siano installate su di esso come se questi utenti 
fossero seduti davanti al server.
Quanti utenti possono accedere contemporaneamente? Dipende dal numero di 
licenze attive sul server. Ogni utente puo' avere una propria copia 
dell'applicazione attiva indipendentemente dagli altri. Ogni client vede 
il server come se ci stesse lavorando solo lui.
Se tu guardi il monitor del server, pero', non vedi l'applicazione 
girare. Il client non prende il controllo del server, ma ne sfrutta le 
applicazioni installate.
Ai tempi di W2K si parlava di un'occupazione di banda di circa 12K per 
connessione. Ricorda che viaggiano solo movimenti del mouse del client e 
schermate di risposta del server e niente altro.

geppetto wrote:

Un application server è quella parte dei sistemi cosiddetti 
"three-tier" che conserva la "business logic" dell'applicazione.
Gli altri "tier" si occupano, tipicamente, della presentazione dei 
dati e dell'accesso fisico al database.  Ad esempio, il primo tier 
potrebbe essere il web browser, il secondo l'app server vero e 
proprio interfacciato dal client e il terzo il database.  Un 
application server lavora quasi sempre con un web server e 
l'intero sistema prende il nome di "Web application server".
Il web server si occupa di accogliere le richieste lato client, 
interfacciare in modo adeguato l'app server e restituire i dati 
formattati al client.  I Web app server supportano spesso anche il 
protocollo di brokering di CORBA.
CORBA è un'architettura studiata dall'Object Management Group (un 
consorzio costituito da molte aziende), per la creazione di 
software distribuito (in termini semplici: mediante oggetti che 
viaggiano in rete).  Un antagonista per CORBA è DCOM di Microsoft, 
ma ha sempre avuto problemi piuttosto seri e, nel tempo, è stato 
di fatto abbandonato.
Sia CORBA che DCOM sono stati superati a favore di SOAP, che ha il 
vantaggio di sfruttare il protocollo HTTP e il linguaggio XML per 
la formattazione delle informazioni.  Su di esso si basano i 
moderni WebServices.

 WebServices.
Diciamo che mi complico molto la vita?
Nel senso che per riscrivere il tutto vale la pena cambiare in questa 
direzione?

 direzione?
No.

 applicazioni installate.
Ottimo. Questo e' proprio la sostanziale differenza con VNC: con vnc
l'utento prende il controllo dell'intero server, mentre in TS il server in
se' rimane sempre libero.
ciao
-- 
Morde. 
ICLDweb: 
http://www2.samatel.com/icld/

 Ottimo. 
In fin dei conti, non hanno inventato nulla.  E' il concetto di 
"terminale", vecchio 50 anni.

Andrea Laforgia ha scritto:

Beh. Allora perche' tanto impegno a sviluppare architetture 
client/server se bastava trasportare solo mouse.actions e framebuffers 
vari ?

 vari ?
Eh?!

Andrea Laforgia ha scritto:

Scusa per la genericita'.
Nel senso che se Terminal Server (con il solo uso di mouse e schermate 
trasportate su rete, in parole povere) e' una soluzione stravecchia e 
conosciuta per interagire con un server, perche' la necessita' di creare 
  Application Server e Aplicazioni Distribuite ?

  Application Server e Aplicazioni Distribuite ?
Perché il processo tecnologico ha fatto sì che questo tipo di 
applicazioni fossero necessarie.  I concetti legati al terminale 
non sono poi cambiati, se consideri l'uso del browser.  Un browser 
si adatta benissimo alla funzione del terminale, perché, di fatto, 
è un thin client, non fa alcuna operazione in locale (se non 
richiamare funzioni Javascript/VBScript) rimanda tutto al server.
E' lato server, poi, che esisterà l'application server.
In quanto alle applicazioni distribuite, la loro esistenza è 
dettata da altre esigenze.

 WebServices.
Scusa ma , non potrebbe essere una soluzione quella di aggiornare 
costantemente un database in MYSQL (posto sul server web interno) dal 
database Paradox e usarlo per la consultazione da internet?

 database Paradox e usarlo per la consultazione da internet?
"Aggiornare costantemente" è un'espressione che mi fa paura.
Che intendi esattamente? eseguire una query ogni tot su Paradox e 
compiere update ogni tot sulla base dati MySQL ? E' una porcata 
che, forse, funzionerebbe.

 altre esigenze.
Molto chiaro .
Thank you so much.

 forse, funzionerebbe.
No. Intendo che , almeno per le table sottoposte a consultazione da 
utenti esterni, si scrivano cntemporaneamente i record sia in paradox 
che in MYSQL ;)

 che in MYSQL ;)
Sě, puň essere un compromesso, ma tieni presente che per la 
presentazione dei dati via web, č necessario (ovviamente) scrivere 
delle ISAPI o dei moduli Apache di accesso al DB.


La tecnologia alla base di TS e' molto simile a quella di Citrix 
Metaframe o Winframe (non mi ricordo). Penso che sia stata "acquistata" 
da M$ ma non ne sono certo.
La prima prova che avevamo fatto per testare Citrix era con una scheda 
proprietaria Citrix che ha trasformato un arcaico 286 in un PC nuovo 
fiammante (per l'epoca) in grado di far girare Office97 su W2K. Il mouse 
andava un po' a scatti ma ci avevano assicurato che usando un PC dal 386 
in su non ci sarebbe piu' stato quel difetto. Le prestazioni erano, 
ovviamente, quelle del server e non del 286.
Quella scheda prendeva totale possesso del PC su cui era installata. 
Entravi nel suo BIOS, settavi i parametri del server Citrix a cui 
connettersi, come accreditarsi al server, quale applicazione lanciare 
una volta connesso (volendo) e se spegnere il PC locale una volta 
disconnesso. Un'esatta replica di un terminale "stupido".
L'esperimento tramite scheda non e' andato a buon fine perche' dal PC 
remoto non potevano giocare a Solitario. Non sto scherzando, e' andata 
proprio cosi' ed allora abbiamo optato per TS.

 proprio cosi' ed allora abbiamo optato per TS.
AHAHAH Incredibile :))

 ISAPI o dei moduli Apache di accesso al DB.
Perche' ? Non va bene scrivere pagine dinamiche in php che interroga 
MYSQL (quello popolato dal client Delphi) ?


Geppetto, mi sono trovato anch'io nella tua stessa situazione.
Alla fine ho convertito le tabelle Paradox in un database IB e riscritto 
l'applicazione da Delphi in JSP (Java Server Pages).
E' stato un lavoraccio, l'ammetto, ma penso sia l'unica strada 
percorribile alla lunga distanza. Anche la soluzione TS che ho proposto 
e' un palliativo, non una soluzione definitiva perche' ha pur sempre 
bisogno di un client (a meno che non usi XP sui client remoti).
Forse potresti valutare Intraweb anche se sono il primo (non l'unico in 
questo NG) a dirti di pensarci attentamente.
Il primo passo che devi compiere e', pero', la ristrutturazione delle 
tabelle Paradox in un unico database sotto un RDBMS robusto (IB/FB, 
MySQL o altro sta a te decidere).


No, no... reale :(

 MySQL o altro sta a te decidere).
Gia' . Penso che ormai il mio destino sia quello, anche se mi secca 
enormemente non poter distribuire la mia applicazione con un semplice 
cdrom con annesso bde. Ma pazienza mi mettero' a lavorare come un mulo :((
Sara' un casino fare il deploying dell'applicazione :(


Hai tutto il mio affetto e non ti sto prendendo in giro...
Prendila come un'esperienza, un modo di conoscere altre cose. Imparerai 
molto una volta che avrai finito.

 molto una volta che avrai finito.
Ok. Lo faro' ;)
Grazie ti tutto a te ed Andrea.
Scusate se uso il NG per augurarvi anche un veloce Buon Natale ma dopo 
una mano cosi' ci vuole.

 MYSQL (quello popolato dal client Delphi) ?
Usare PHP è comunque una soluzione (il supporto per MySQL da PHP è 
ottimo).  Io ti consigliavo un'ISAPI o un modulo Apache per avere 
tutti i "pezzi" dell'applicazione scritti in Delphi.

 
Ok. Mi devo documentare ;)
Grazie mille Andrea.