Newsgroup: it.comp.lang.visual-basic
Titolo: 2 layer vs 3 layer

Ciao
nella mia azienda si sta progettando una applicazione vb che dovrebbe
permettere a piu' utenti di lavorare su un database.
Stiamo discutendo se produrre una soluzione con diversi client, ognuno che
si appoggia direttamente ad un database (sql server 2000) oppure una
soluzione in cui i vari client interrogano un server posto nel mezzo.
Poiche' nessuno di noi ha una grossa esperienza con quest'ultima
architettura, vi saremmo grati se qualcuno di voi ci potesse segnalare come
risolvere i problemi di concorrenza negli accessi, gestione delle code delle
richieste ecc. insomma, qualche consiglio su come fare il server.
Grazie!

 soluzione in cui i vari client interrogano un server posto nel mezzo.
Ma, pardon, SQL Server non è Client/Server e quindi non è la stessa cosa?
Oppure non avrete mica pensato, nemmeno lontanamente, di avere un database
per ogni client, vero?

 richieste ecc. insomma, qualche consiglio su come fare il server.
Soluzione: Componente ActiveX DLL transazionale installato in un'application
COM+.
Client 1
Client 2    --> ActiveX DLL --> SQL Server
...                    (COM+)
Client n
E' solo uno spunto, e in questa sede non è possibile spiegare nel dettaglio
la realizzazione dell'architettura.
Trovate moltissime informazioni in merito su MSDN.
Ciao!
--
Lorenzo Benaglia
UGIdotNET - 
http://www.ugidotnet.org

 per ogni client, vero?
Intendevo dire che i client non dovrebbero interrogare direttamente il
database, ma dovrebbero fare una richiesta (tipo via socket) all'unico
server, questo dovrebbe interrogare il db, attendere la risposta, farci
qualche calcolo  e rispedire il risultato ai vari client.
Il nostro problema e' che due utenti potrebbero fare due richieste
contemporaneamente, e non abbiamo idea di come gestirle... Si puo' farlo
senza impazzire?


Concordo pienamente con Lorenzo.
Passare per un Server IIS con ASP, che sarebbe sostanzialmente la soluzione
3 livelli di cui parlava Po, è relativamente facile, ma a me non piace,
anche perchè carica di lavoro una macchina.
Utilizzando Controlli ActiveX su Form o meglio su pagine HTML, o addirittura
(rimane la mia soluzione preferita, ma sta cadendo un po' in disuso) usando
Documenti ActiveX, decentralizzi la logica e il carico di lavoro, rimanendo
tuttavia in grado di aggiornare tutti i client in maniera automatica, ed
installando nuove versioni con un semplice xcopy sul server IIS.
Buona la scelta di Sql-2000 come DataServer. Se il numero di utenti non è
elevatissimo, valuta anche MSDE che non richiede licenze.
Considera anche che se usi SQL-2000 ed accedi con ASP credo ci voglia una
licenza particolare molto costosa.
Ciao
Alberto

 elevatissimo, valuta anche MSDE che non richiede licenze.
Forse non mi sono spiegato: abbiamo gia' sql server come database, e
dobbiamo fare sia dei client sia il server integralmente in visual basic
6.0, senza pagine asp. Abbiamo gia' fatto qualche cosa con gli oggetti dcom+
nel modo descritto da Lorenzo, e vorremmo in questa applicazione delegare
qualche cosa ad un livello intermedio.
Ammetto di essere stato poco chiaro, anche perche' non ci sono chiare le
specifiche. Poniamo la domanda cosi': si trova in giro qualche tutorial
sulle comunicazioni via socket (o tramite qualche cosa tipo rpc - rmi ) per
visual basic 6.0? Forse sapere cosa possiamo fare ci aiuterebbe a non
sparare @°#@ate... :)
Grazie

 ha scritto nel messaggio
news:ahrkdp$7cqc$1...@stargate1.inet.it...


 visual basic 6.0?
Dimenticati dei socket!!!
Se stai realizzando un'applicazione all'interno di uno stesso dominio, la
comunicazione trai 3 tier avverrà tramite DCOM.
Provo a ridisegnarti l'architettura logica in maggior dettaglio:
Presentation Tier        Business Tier        Data Tier
Client 1
Client 2            -->     ActiveX DLL     --> SQL Server
...                                (COM+)
Client n
Fisicamente puoi installate il Business Tier ed il Data Tier sul medesimo
Server oppure su due o + Server distinti (dipende dal numero di utenti).
I Clents dovranno avere un'Application Proxy che ti permettà di istanziare
l'ActiveX DLL che risiede sul Server che ospita il Business Tier.
Nella mia società seguo lo sviluppo di un portale Internet costituito da 9
Web Servers, 5 Application Servers ed un cluster per quanto riguarda il data
tier.
Le macchine sono piuttosto robuste (quadriprocessori e 1GB di RAM).
Con questa architettura siamo in grado di sostenere più di 10.000 richieste
contemporanee...
