Ciao a tutti,
stiamo tentando di utilizzare la tecnica DCOM per una DLL che deve risiedere su un server e deve essere "interrogata" da due client, un web server e una applicazione. A causa dele operazioni che dobbiamo eseguire sul server non possiamo utilizzare un web services.
Abbiamo quindi creato la DLL, abbiamo generato lo "strong name" con l'utility "sn", abbiamo registrato la DLL sul server e l'abbiamo inserita nel "Servizio Componenti" di WinXP in modo da "osservare" i processi in esecuzione (le famose "palle che girano"... per chi sa di cosa si tratta ).
Da subito, per far funzionare la cosa, siamo stati costretti a copiare nel client il file .dll nella cartella "assembly" sotto "Windows", altrimenti la cosa non va (ma gia' questa cosa non ci convince molto...)
Facendo cio', tutto funziona perfettamente... ma secondo noi non stiamo lavorando in remoto... perche', ad esempio, un metodo che dovrebbe leggere dei file XML sul server li cerca sul disco del client...
Accediamo alla DLL in questo modo:
Dim DCOM_Istance As Type
Dim DCOM_Object as Object
DCOM_Istance = Type.GetTypeFromCLSID(New System.Guid("39E70D9A-2284-31B1-95ED-838631D2EF7B"), "nomedelserver")
DCOM_Object = Activator.CreateInstance(DCOM_Istance)
Abbiamo provato a scollegare il server quando eseguiamo la "GetTypeFromCLSID" e otteniamo un errore; ma se invece istanziamo l'oggetto e subito dopo scolleghiamo il server i metodi e le proprieta' invocati non generano errore. Sembrerebbe che il sistema acceda al server per l'interfaccia della DLL ma poi utilizzi il codice presente sul client.
Abbiamo sbagliato qualcosa, sicuramente... ma cosa?
Un'altra cosa strana e' che nel "Servizio Componenti", la nostra DLL non appare nella lista "Config DCOM" ma solo nelle "Applicazioni COM+".
Qualcuno conosce la procedura ESATTA per la creazione di una DLL da usare in remoto? Qualcuno l'ha fatto VERAMENTE??
Grazie a tutti
Ciao
Alex