Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Server VB...

OK, non l'ho mai fatto e ammetto la mia totale ignoranza in merito.
Sento spesso parlare di Server (EXE ActiveX se non erro), ma non ho mai
provato a farlo. Lo vedo, basterebbe aprire un nuovo progetto dichiarandolo
di cotal tipo, ma (oltre a una certa ... pigrizia) mi preoccupano le
"minchiatine" che solo chi l'ha fatto conosce, più un pelo di logica. Mi
spiego:
Vorrei fare un programma (totalmente in VB) che parta (non mi interessa, per
ora, che si installi come servizio, lo faccio partire a manina) e "risponda
alle chiamate" di altre procedure (sempre scritte da me) "classiche" (EXE
Standard, sempre in VB, 6 SP5).
Un esempio che non serve a nulla, ma mi basterebbe per capire l'ambiente: Il
client spedisce una stringa di caratteri, il server la riceve, la ribalta e
la restituisce al client chiamante, come se il server fosse una Function.
Come ben vedete, il codice poco conta, quel che mi interessa capire è come
fare un unico EXE che gira per conto suo e (spero) occupa una volta sola la
relativa memoria, indipendentemente dal numero delle chiamate che lo
interessano.
Il concetto di DLL mi è chiaro e già lo uso, ma questa, se non erro, "si
somma" in memoria a ogni EXE standard che avvio (essendo "linkata" al
progetto relativo), vorrei capire, come dicevo, se posso avviare un'unica
istanza (per macchina, ovviamente) dell'EXE server.
Potreste cortesemente darmi una traccia di come fare per creare il progetto
server (magari specificando proprietà particolari), il progetto client
(spero sia un EXE normalissimo) e come farli interagire? Grazie.
Lupo.QuasiPappaPronta... Sorry

 OK, non l'ho mai fatto e ammetto la mia totale ignoranza in merito.
Ok, c'ho provato: Ho creato un progetto EXE ActiveX (Serv1P) e ci ho messo
dentro un modulo .CLS (serv1C). All'interno di questo ho creato una Function
(F1). Compilato e creato l'EXE.
Ho poi creato un progetto EXE standard e fra i suoi riferimenti c'ho messo
il nome dell'EXE ActiveX (Serv1P). A questo punto posso fare Dim S as New
Serv1C e posso richiamare la funzione con S.F1, ma questo non mi toglie il
dubbio: L'aver dichiarato l'EXE ActiveX fra i riferimenti (esattamente come
una DLL) e averlo "creato" con la Dim ... as New ... non mi carica in
memoria un'istanza del server stesso? E, quindi, se un altro EXE standard
viene avviato, non si carica _un'altra_ istanza del EXE ActiveX, occupando
_un'altra volta_ la memoria necessaria?
Come faccio, porca padella, ad avere un Server EXE che gira da solo e occupa
_una volta sola_ la memoria necessaria pur essendo
utilizzato/linkato/referenziato/dimensionato da più EXE standard aperti
contemporaneamente? Grazie ancora.

 _un'altra volta_ la memoria necessaria?
Oppure per ogni istanza diversa viene solo replicata la memoria necessaria
per le sole variabili e puntatori...? Non il codice, insomma.

'azz, nessuno mi caga.
Mi iscrivo ai radicali...

contemporaneamente? 
Non sono un grande utilizzatore di activex exe, ma credo che basti
chiamarlo con GetObject per accedere all'unica istanza in esecuzione.
-- 
ciao, hal

 Mi iscrivo ai radicali...
LOL
Bye, G.
--
Non consigliate ai niubbini di premere F1, mandateli
a questa pagina: Q209354 - HOWTO RTFM
http://208.234.4.70/joker/src/jkmsrtfm.htm

 'azz, nessuno mi caga.
eh eh io ti cago volentieri infatti aspetto il resoconto delle tue
(dis)avventure !!
Happy Sunday Coding ^_^;;
-- 
< Gigio2K >
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

""Gigio2K"" ha scritto nel messaggio
OK, undici.
Bye, G.

 istanza (per macchina, ovviamente) dell'EXE server.
Se il tuo problema è il "consumo" di memoria direi che sotto WinNT/2k/XP
non c'è nessun problema ad utilizzare delle dll, la gestione della
memoria del "filone" NT è ben fatta, e le varie (eventuali) istanze
multiple di un eseguibile (exe o dll) sono copiate in memoria una sola 
volta.
Non so però come sia la situazione sotto Win9.x/ME... ma basta fare
qualche prova (avviare più volte un eseguibile e vedere come diminuisce 
la memoria disponibile).
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.

 pelo di logica.
Ciao,
Vediamo un pò se posso risolverti un pò di dubbi:
1) Parlando di Exe ActiveX, parli di oggetti COM. E' quello che intendi?
2) Gli oggetti COM dipendono strettamente dal tipo di istanziazione che
intendi adottare.
    Su MSDN cerca "Com objects instancing".
Se invece tu vuoi un server "internet", allora le cose cambiano parecchio.
Qual'è la strada che intendevi percorrere?
Andrea

 ha scritto nel messaggio
news:0fav4vgu6g9q6vv78...@4ax.com...

Ahime' no, GetObject non e' supportata per gli ActiveX creati con VB
Non capisco pero' se e quale sia esattamente il problema di Lupo, perche',
di default, gli Exe ActiveX si comportano esattamente come vuole lui...
Per essere piu' precisioni, le classi pubbliche inserite in un progetto
ActiveX hanno tutte di default la proprieta' Instancing impostata a
'Multiuse', che' e' appunto il discriminante per decidere se avere n istanze
di classe = 1 istanza di Exe rispetto a 'SingleUse' che invece da n istanze
di classe, n istanze di Exe
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown