Newsgroup: it.comp.lang.visual-basic
Titolo: vb 5 prof. e DCOM

Mi sto affacciando a DCOM da poco ma sto' trovando molte difficoltà e, tra
una ricerca e un'altra, mi sono imbattuto nella tua preziosissima mail che
riporto in fondo.
Sei stato precisissimo e, credo, di aver percorso esattamente i tuoi passi
nel provare DCOM con una mia piccola applicazione.
Molte tue indicazioni trovano riscontro su un articolo pubblicato su Visual
Basic Journal (n. 20 Marzo/Aprile) da un certo Alessandro Molinari ma ho
alcune perplessità che spero si possano fugare.
Il contesto è il seguente:
sto usando una macchina con DCOM per 95, appena scaricato da Microsoft, ed
ho realizzato due applicazioni, una server (Active X server) che esporta
due metodi: metodo1 as string e metodo2 as string, ed una client che
istanzia ed utilizza il server.
Ho compilato l'applicazione server sia sulla macchina client che sulla
macchina server in modo da registrarla su entrambe.
Ho configurato, utilizzando Remote Automation Connection Manager sulla
macchina client, l'oggetto COM indicandogli la macchina server sul quale è
installato e residente il componente server.
Ho usato TCP/IP perchè è l'unico protocollo "funzionante" su Win 95 per
DCOM.
Ho verificato che nel registro della macchina server sia Y il contenuto
della entry HKEY_LOCAL_MACHINE\Software\Microsoft\Ole\EnableRemoteConnect.
Ho anche specificato "None" per "Default autentication level" e "Anonymous"
per "Default impersonation level" come hai consigliato per evitare
problematiche legate ad autorizzazioni.
Fatto ciò il risultato è il famoso run-time error -
2147023174
(800706ba) che
Microsoft attibuisce, con il documento Q165101, ad un problema legato alla
non disponibilità del RPC server.
Ho comunque una perplessità perchè credo di non aver capito alcuni passaggi
indicati da te e dai vari documenti che ho trovato in giro.
Come mai lancio la componente sulla macchina server e non la trovo in
esecuzione ? (forse perchè essendo costituita da due semplici metodi non è
in esecuzione fino a quando qualche processo non chiede l'esecuzione di un
suo metodo ?)
Ho provato anche indicando StandAlone nelle proprietà della componente ma
il risultato è stato lo stesso.
Un'ultima informazione: la stessa componente installata su NT 4 funziona
egregiamente !
Sono "quasi" disperato ... anche una piccola indicazione potrebbe essermi
davvero utile.
Un cordiale saluto, Vincenzo Frezza
---------------------------------------------------------------------
Mi e' capitato di leggere su questo NG che con Vb5 Professional non sia
possibile installare ed utilizzare oggetti remoti
via DCOM. Io ho la prova che non e' vero perche' lo faccio da tempo. Spero
qundi che quanto scrivo possa essere utile.
Un componente ActiveX deve essere registrato in maniera appropriata nel
registro di sistema prima che possa essere riconosciuto ed usato da un
programma Windows o dallo stesso Visual Basic. Il processo di compilazione
provvede automaticamente alla registrazione del componente nel registro del
sistema di sviluppo. Ma perché possa essere utilizzato anche su altre
macchine la registrazione va effettuata in un altro modo. Utilizzando il
Setup Wizard  di Visual Basic Ent. per preparare
i dischetti di installazione dell'Applicativo, se questo comprende
l'utilizzo di componenti, essi, ed il relativo processo di registrazione
nel registro di sistema della macchina client, saranno inglobati
automaticamente nel processo generale di installazione dell'Applicativo.
Volendo invece effettuare manualmente la registrazione dei componenti,
bisogna in primo luogo distinguere tra componenti
in-process ed out-of-process.
- Registrazione di componenti in-process: regsvr32.exe  MyComponent.dll
e relativo annullamento: regsvr32.exe   /u  MyComponent.dll
- Registrazione di componenti out-of-process:  MyComponent    /regserver
e relativo annullamento: MyComponent    /unregserver
Ripeto, la registrazione va fatta sia sulla macchina client che su quella
server; con Vb5 Prof., puo' essere fatta manualmente o ricompilando
il componente su tutte e due le macchine.
Quando il client sulla macchina A chiede i servizi di un oggetto residente
sulla macchina B, l'architettura DCOM fa partire automaticamente il
componente che contiene l'oggetto sulla macchina B, mettendolo quindi in
grado di fornire il servizio richiestogli. Bisogna specificare che,
attualmente, solo Windows NT è capace di schedulare automaticamente un
oggetto DCOM in risposta ad una richiesta remota. Su macchine Windows 95
invece, che si vogliano utilizzare come Server DCOM, il componente deve
essere mandato e tenuto in esecuzione localmente perché possa fornire i
servizi a
lui richiesti da eventuali client remoti.
Questo pu' essere ottenuto mandando in esecuzione il client anche sulla
macchina server DCOM, oppure settando nel componente la proprieta'
StartMode = vbSModeStandalone (questo non l'ho
mai provato).
Su Windows NT, DCOM e' installato automaticamente con il S.O. Non e' cosi'
con Windows 95, sul quale va installato a parte.
DCOM: Note per l'Installazione su Win95 1) - Installare prima dcom95.exe
2) - Poi installare dcomcfg.exe
3) - Copiare quindi i due file racreg32.dll e racmgr32.exe
nella SYSTEM directory (es.: C:\Windows\System)
4) - Infine registrare la dll racreg32.dll con il comando "regsvr32
racreg32.dll"
Far ripartire il sistema solo alla fine.
I file dcom95.exe e dcomcfg.exe sono disponibili all'Url
http://www.microsoft.com/oledev
 (io utilizzo le versioni del 24.02.98 e mi
trovo bene).
ATTENZIONE: se vuoi usare Windows 95 come Sever DCOM, devi agire anche a
livello del registro, in quanto per default, l'installazione di DCOM su
Windows 95 avviene solo come client. E' necessario inserire nella chiave
HKEY_LOCAL_MACHINE\Software\Microsoft\Ole\EnableRemoteConnect del registro
di Windows 95 il valore 'Y', tramite l'editor REGEDIT.EXE (gia' presente
nel sistema).
Per gestire e configurare DCOM si possono utilizzare due programmi di
utilità:
1. dcomcnfg.exe    Distribuited COM Configuration Properties 2.
racmgr32.exe   Remote Automation Connection Manager
Il primo permette di configurare un sistema Server DCOM sia esso Windows NT
che Windows 95.
Serve principalmente ad abilitare o a disabilitare
i servizi DCOM e a stabilire i livelli di sicurezza. In fase di test
iniziale di strutture DCOM è consigliabile selezionare "None" per "Default
autentication level" e "Anonymous" per "Default impersonation level" in
modo da evitare eventuali problemi derivanti dai servizi
di sicurezza utilizzati. Per utilizzare dcomcnfg.exe su un server DCOM
Windows 95, bisogna configurare il sistema per la "protezione a livello
utente", utilizzando l'icona "Rete" nel pannello di controllo.
Il secondo invece serve a dire alla macchina client se un dato oggetto,
già registrato nel registro di sistema, debba essere considerato come
locale o remoto, e in quest'ultimo caso, in quale macchina remota esso sia
ubicato, in modo da potervi reindirizzare eventuali client che ne
richiedano i servizi. In pratica, una volta lanciato, selezionare a
sinistra il nome del componente, poi selezionare a destra "COM
distribuito"; quindi inserire il nome del Server
nella casella indirizzo di rete e scegliere il protocollo TCP/IP come
protocollo di rete. Infine, dalla voce di menu' "Registra", selezionare
"Remote" e controllare che non siano cambiate le voci appena settate.
Infine premere il bottone "Applica".
Se si usa Windows NT anche per il client, si puo' usare un altro protocollo
di rete tra quelli disponibili, altrimenti si dovra' necessariamente usare
TCP/IP.
Ciao a tutti
Domenico.


L'avevi provata su Win95 anche come server? Ma era configurato come un
server?
Ciao
Luca