Newsgroup: it.comp.lang.visual-basic
Titolo: Posizione Fisica dell'applicazione (sul client o sul server?)

Per prima cosa ciao a tutto il NG,
sembrerà una domanda banale ma per me non lo è..
L'exe che rappresenta un gestionale o applicazione in multiutenza dove lo
posizionate?
A) Sul server, i client hanno solo i componenti in locale.
    I client lanciano un Link che punta all'applicazione sul server
B) Su ogni Client compresi i componenti.
     Sul server esiste solo la base dati
C) Sul server, i client hanno i componenti registrati che puntano ad un
indirizzo sul server (regedit)
Ho sempre optato verso la B per limitare il traffico di rete; generalmente
voi come procedete?
Vi ringrazio
Ciao
oZ

 generalmente voi come procedete?
A volte la B, che è la più classica.
A volte una altra soluzione, che preferisco di gran lunga:
L'eseguibile è in realtà un pacchetto, costituito da VBD e Dll, disponibile
sul server attraverso IIS.
I client lanciano un url http, e IE si occupa di scaricare eventuali
componenti mancanti o nuove versioni della dll di applicazione.
Il DB resta sul server, mentre l'esecuzione dell'applicativo è al 100% sul
client.
La soluzione A è praticabile e non male.
La C è pericolosissima, perchè eventuali piccoli cambiamenti alla
configurazione di rete ti danneggerebbero il registry di tutti i client.
Ciao
Alberto

oZ wrote:
(snip)
b
Salutoni
Sergio

 configurazione di rete ti danneggerebbero il registry di tutti i client.
Concordo, in generale come path metterei un bel
\\indirizzoIpServer\MiaApplicazione$
Vi rifaccio la domanda: meglio A o B?
Infatti vorrei sapere se sono solo io il Malato che per ogni modfica
aggiorna tutti i client..
E' logico che eseguo queste operazioni tramite procedure. Esse controllano
se esiste sul server una versione
del componente (o dell'applicativo) maggiore di quella installata in locale,
se così fosse copiano il componente (dll/ocx) in locale e lo
ri-registrano...
Ciao
oZ

Io opto dove posso sempre per A...
Ciao

 aggiorna tutti i client..
Visto che in entrambi i casi è sul client che il programma viene
eseguito la soluzione A porta il solo vantaggio di non dover ricopiare
l'eseguibile su tutti i pc quando fai delle modifiche. Porta però
anche uno svantaggio, puoi aggiornare l'eseguibile solo quando nessuno
lo sta usando. Quello che devi chiederti allora è: posso permettermi di
bloccare tutti nell'uso del programma per il tempo dell'aggiornamento?
Se la risposta e si io mi butto su A senza pensarci.
Se è no uso ugualmente la soluzione A ma con un trucco.
Quando genero il nuovo eseguibile gli do un altro nome, tipo nuovo.exe,
quindi a turno vado dai vari utenti, li faccio uscire dal programma e
rientrare lanciando manualmente il nuovo eseguibile.
Quando ho finito posso tranquillamente copiare nuovo.exe sul vecchio
eseguibile. Il girno dopo cancello nuovo.exe.
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/news/

oZ ha scritto:

In condizioni normali (leggasi prestazioni decenti della rete e dei clients)
installo tutto (programmi e database, oltre ai componenti) sul server. I
componenti (OCX, DLL, etc) solo sui clients.
In questo modo i vari clients "pescano" (oltre ai dati) i vari EXE dal
server.
Se le prestazioni sono scarse, lascio le cose come stanno, ma attivo
un'opzione che duplica una-tantum anche gli EXE sui clients che vengono
quindi caricati dal disco locale. Quando aggiorno (a parte ovviamente i
componenti su tutte le macchine, ma solo se qualcosa è cambiato), aggiorno
esclusivamente il server e sullo stesso avvio una mia utility che "segna"
sul server il fatto che è stato aggiornato. I vari clients, quando avviano
la procedura iniziale (un programmillo piccolo-piccolo, preso sempre e in
ogni caso dal server), verificano che c'è quel segnale. Se sì, ri-duplicano
gli eseguibili in locale, viceversa caricano subito dal disco locale.

 voi come procedete?
Dipende da quante postazioni hai, se ne hai 3 conviene la B, se ne hai 150
possono convenire sia la A che la C a seconda di come è strutturato il
programma.

 ha scritto nel messaggio
news:odB_9.68383$YG2.1...@twister1.libero.it...
Una curiosità che forse interessa a tutti.
Qui al lavoro ce ne siamo accorti per caso, non vi spiego come per non
dilungarmi troppo.
Prendiamo l'esempio di un eseguibile sul server, lanciato da remoto sui
client.
Il client, è furbo!
Non so ne come ne perchè, ma si fa una specie di copia dell'eseguibile in
memoria, quindi, il traffico di rete non viene stravolto, in quanto il
client si caricherà la sua copia dell'eseguibile in memoria e da quel
momento lo userà da locale.
MA NON SOLO
Se dovete aggiornare l'eseguibile aperto dai client, non siete obbligati a
farli uscire.
Basta che sul server venga chiuso l'accesso al file dal gestore delle
risorse condivise, da quel momento il file ovviamente sarà libero per essere
aggiornato e ...
udite udite!
sui client nessuno si accorgerà di niente!
I programmi continueranno a girare regolarmente senza fare una piega.
Però attenzione!
Finchè l'utente non uscirà e rientrerà nel programma continuerà ad usare la
verisone vecchia (quella copiata al momento in memoria).
Testato con server NT4 e client WIN98.
Provoca dei crash nel 5% dei casi.
Io non lo uso come sistema perchè mi sembra pericoloso e troppo
"innaturale", però magari a qualcuno potrebbe interessare.
bye

 eseguibile. Il girno dopo cancello nuovo.exe.
Beh, di solito si fa una cosa ancora piů semplice:
L'utente lancia l'applicativo facendo doppio click su una icona, ma questa
non č l'icona di un exe, bensě di un bat, che prima di lanciare l'exe
verifica se in una cartella x (locale o di rete), c'č un file exe. Se sě, lo
copia sovrascrivendo il vecchio exe, e poi lo lancia.
Ciao
Alberto

 Beh, di solito si fa una cosa ancora più semplice:
Emhh... diciamo che questo post non riguardava il post a cui ho risposto.
Errore di sbaglio.
Alberto

Grazie a tutti per le risposte date...
In linea di massima (se la rete me lo consente) piazzo l'exe sul server,
altrimenti metto l'exe sul clients e tramite procedure batch aggiorno il
programma (solo se ho apportato modifiche..)
Cmq vorrei vedere le performance sia in fase di apertura (anche se la rete
fosse calibrata correttamente) di 30 eseguibili da 10 mb sia il carico di
lavoro di un server..
Anche se i vari clients si "portassero" in locale l'eseguibile, rimmarrà
sempre un processo sul server di n mega..
Questi n mega * il numero di applicazioni lanciate + un motore database
(diciamo sql server 2000 che si ciuccia quanta ram vuole e poi non la
rilascia più...) che utilizza 250-300 mb di ram + qualche altro servizietto
fanno una bella cifra..
Se il server ha le palle quadrate ok..Altrimenti penso sia meglio lasciarlo
in pace e adottare la B con l'aggiornamento automatico...
Ciao a Tutti
oZ

 rimmarrà sempre un processo sul server di n mega..
Non sono convinto.
Se sono i client che eseguono, c'è traffico di rete all'apertura di ciascun
exe, quando il client se lo copia in cache, poi il server se ne dimentica.
Ram e Cpu sono quelle del client.
Teoricamente, potresti avere anche mille client che eseguono, e l'unico
problema potrebbe essere il collo di bottiglia se più client avviano
l'applicativo contemporaneamente.
Poi, va considerato che il server deve essere un 2kServer e non
Professional, altrimenti ogni client, finchè esegue, tiene aperto uno slot
sull'accesso del server, e W2kProfessional inibisce l'undicesimo slot ed i
seguenti.
Ciao
Alberto

 Ciao a Tutti
http://groups.google.com/groups?q=posizione+fisica+dell%27applicazione+autho
r:David+author:Ruscelli&hl=it&lr=&ie=UTF-8&oe=UTF-8&filter=0
Leggi entgrambi i messaggi che compaiono, perche secondo me ci sono stati
dei problemi sul newsserver.
Ciao

 seguenti.
AFAIK (non so se parliamo della stessa cosa) si può settare il limite
dei client attivi, che per default è infatti 10.
Bye, G.


Se conosci il modo di superare il limite di 10 client per W2kPro, dimmi
qualcosa.
Potremmo fare i soldi... :-))
Alberto