Newsgroup: it.comp.java
Titolo: Domanda architetturale

Premetto che le mie conoscenze di java sono piuttosto scarse. Cmq, il mio
problema è questo: devo creare un'applicazione a 2 livelli e mezzo del senso
che dovrà consistere in una parte client di interfaccia, una parte server e
dei dati su di un db. Non può essere definita a tre livelli perchè il server
si occupa sia di logiche business sia di interfaccia verso il db ed inoltre
il db andrà utilizzato al minimo delle sue potenzialità. In pratica tutti i
dati vengono caricati dal server allo startup il quale poi dovrà gestire le
concorrenze di accesso agli stessi e salvare periodicamente. Tutto questo
perchè il progetto è un elaborato per un esame e mi sono stati imposti
questi vincoli. Parte client e server devono ovviamente risiedere su
macchine diverse.
Ora vi dico quello che mi piacerebbe fare, come non lo posso fare e voi
dovreste essere così gentili da indicarmi quali strade posso seguire per
realizzare il tutto.
Mi piacerebbe che l'utente si collegasse tramite browser ad un sito web e
sempre tramite web avesse la possibilità di interagire con i dati. Non posso
utilizzare tecnologie come asp o jsp, non ho necessità di accedere a risorse
della macchina client e mi piacerebbe che il tutto funzionasse anche
attraverso firewall. Io avevo pensato ad un'applet che includesse la parte
di interfaccia da scaricare sul client tramite browser (il fatto di dover
aver un server internet tipo IIS lato server non è un problema se si tratta
di scaricare pagine html). L'applet dovrebbe poi comunicare con la parte
server tramite RMI (e qui mi sa che nascono i problemi con il firewall) e il
lato server comunica con il db tramite JDBC.
Ho sentito parlare di un sacco di tecnologie middleware tipo JEB, CORBA,
SOAP (so che sono livelli differenti), ecc.. e vorrei sapere quali sono al
momento le alternative possibili tenendo conto che si tratta di
un'applicazione giocattolo e che non ho a disposizione neppure una marea di
tempo ma che d'altro canto mi piacerebbe proporre qualcosa di
tecnologicamente valido e che cmq qualche cosa devo pure imparare, qualunque
sia la strad che sceglierò.
Grazie a tutti per i suggerimenti.

 Grazie a tutti per i suggerimenti.
Ciao
 Giuseppe

> server tramite RMI (e qui mi sa che nascono i problemi con il firewall) e
il
E' obbligatorio l'utilizzo di RMI?
In ogni caso la situazione è questa...tenedo presente che le tecnologie da
te menzionate sono suscettibili di permessi
e impstazioni di sicurezza lato client posso darti come suggerimento quello
di crearti una struttura dove effettui le comunicazioni via Socket, ti
ricordo che è possibile utilizzare delle classi particolari che ti
permettono di lavorare anche su reti dove si trova un Firewall. Secondo me
puoi creare, in questa maniera, un modello che risponda alle tue esigenze,
visto che il tuo ambiente si configura all'interno di un server IIS e quindi
la necessità di integrarlo con qualcosa di tipo JServ o Tomcat per eventuali
servlet, le quali rappresentano l'eventuale alternativa al tuo problema.
Prendi in considerazione la possiblità dello Stream di Oggetti per far
viaggiare le informazioni sulla rete e tutto quello che ti serve.
Tutto questo esclude tecniche di Programmazione Distribuita quindi se sei
obbligato ad utilizzarle...buon lavoro.

 Grazie a tutti per i suggerimenti.
Facci sapere come procedi! E fatti sentire in caso di dubbi!
Ciao,
    Bruno.
 
[posted and mailed]
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it/
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|
-- 
Posted from 
cspto.inet.it
 [194.185.222.144] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 concorrenze di accesso agli stessi e salvare periodicamente.
Motivo in questa risposta perché ho definito l'architettura a due livelli e
mezzo. La sostanza è che pur riconoscendo la struttura client - server
business - server dati le limitazioni che mi sono state imposte mi consento
di utilizzare il server dati solo cum un file. In pratica il server business
carica tutti i dati quando parte e poi non si interfaccia più al db (in
realtà effettua dei salvataggi periodici ma più a scopo di sicurezza -
mirroring che tramite una reale dialettica). Quindi il database non si
comporat come server e non svolge alcun ruolo attivo (niente stored
procedure, gestione dei lock e dalla concorrenza sui dati, ecc..). Di fatto
questo terzo livello potrebbe anche non esserci. Il modello prevede che il
lato server conservi l'informazione e gestisca la concorrenza
sull'informazione (tramite metodi sincronizzati). C'è il database perchè il
server non è immortale e se la macchina sui cui gira il server si spegne le
informazioni restano salvate su un qualche dispositivo di memori di massa.
Inoltre, nelle architetture a tre livelli "strong", per terzo livello non si
intende il motore di database ma una serie di oggetti che rendano invisibile
alle altri parti del sistema il db stesso. In java credo che nel 99% dei
casi questo livello sia implementato dal framework JDBC che è, per
l'appunto, un insieme di classi che rendono invisibile la fonte dati (o se
preferite intercambiabile). Chiaro poi che ci sono delle limitazioni a
quanto bene JDBC riesca a far bene questo compito. Anche perché, se non ho
capito bene, cmq le interrogazioni vangono formulate in SQL che poi il JDBC
passa al motore db; e poiché i vari motori db non accettano lo stesso SQL
ecco che JDBC si rivela insufficiente allo scopo. In altri ambiti, vedi
tecnologie come ADO RDO e DAO di M$, si riscontra esattamente lo stesso
problema. Il vero terzo livello dovrebbe quindi essere un framework,
tipicamente legacy, che maschera completamente la fonte dati (e che quindi
non consente interrogazioni dirette tramite SQL). E vi posso assicurare che
esistono realtà in cui questo livello è stato realizzato con questo scopo e
lo ha ottenuto.
Fine precisazione e scusate per la noia che posso avervi arrecato.
Rick.

 Grazie a tutti per i suggerimenti.
Ciao
 Giuseppe
Ciao a te, Rick.

 obbligato ad utilizzarle...buon lavoro.
L'utilizzo dei socket non è vietato dal progetto ma viene caldamente
sconsigliato (forse perchè lo ritengono troppo semplice) e in effetti
l'intento è proprio quello di apprendere tecniche di programmazione
distribuita.
Che cos'è Tomcat? e cosa sono le servlet? Articoli chiari e sintetici al
riguardo?
Grazie, Rick.

 Facci sapere come procedi! E fatti sentire in caso di dubbi!
Grazie a te per la disponibiltà (e ne approfitterò parecchio).
Per quanto riguarda la discussione relative alla definizione di architettura
a tre livelli e cose simili sono disponibilissimo a parlarne all'infinito.
E' pane per i miei denti.
Grazie, Rick.


Noia? la noia mi veniva se mi chiedevi come fare un exe da un class :)))))
Ciao, e spero di esserti stato utile...
Giuseppe

Premetto che la soluzione migliore è la più semplice.
Tuttavia essendo un esercizio di programmazione....
L'applet ti serve per forza? Devi presentare i dati in un modo particolare
(pie-chart, istogrammi, figure) o ti basta HTML?
In fin dei conti la parte di visualizzazione dell'applicazione può essere
già il browser: sfrutti HTML (o XML) , CSS (o XSL) e tutto diventa più
veloce e standard.
Per quanto riguarda la parte di elaborazione dei dati (la business logic,
giusto?) puoi usare una servlet (che riceve dati attraverso i due possibili
metodi  GET o POST (oops, proprio quelli che citi in una form HTML, ironia
per il tuo professore...).
Ora non sono molto pratico deigli EJB ma penso che sostanzialmente siano
un'entità che viene allocata (non si usa mica un container..) quando
necessita, come avere un sacco contenente questi EJB e prenderne uno quando
serve.
Ora se parliamo di programmazione non prolissa, secondo me ti basta la
servlet che dialoga con il browser.
Se invece il tuo prof vuole farti fare il giro d'Italia per andare da Milano
a Torino, è tutto un altro discorso e cercherei di chiedere (gentilmente,
molto gentilmente e subdolamente) al tuo prof di essere molto preciso in
quello che vuole.
Se chiede di usare RMI con applet e servlet, utilizzando EJB che dialoghino
fra loro con XML e che siano collegati ad un databasee distribuito che
utilizza CORBA, mi sa che sei nei guai :)
Ciao


No funge, funge. Fra l'altro puoi usare anche il bridge jdbc-odbc che usa quindi i driver
odbc di microsoft per connettersi a SQLServer.
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|