Avatar billede raenil Nybegynder
07. september 2000 - 15:36 Der er 13 kommentarer og
2 løsninger

Registrering af DCOM objeckter

Hej med jer.

Jeg er ved at undersøge det her COM i forbindelse med Visual Basic (6.0 Enterprise) for at se om det er noget man kan bruge til noget.

Hvis man kigger på microsofts Enterprise eksempler, så står der under næsten dem alle sammen at de skal kunne køres på netværk uden at ændre en eneste linie kode i forhold til at køre både server og klient delen på en maskine.

Det virker bare ikke. Jeg har læst mig til at Serverobjektet vidstnok skal registrerets på klientmaskinen. Hvordan gør man det?

mvh
Morten
Avatar billede vbmojo Nybegynder
07. september 2000 - 18:15 #1
Hvad hedder det object du vil registrere på klienten? Er det en Dll-fil?

Prøv med

Start->Run->\"regsvr32.exe filen.dll\"

Uden citations tegn, s\'fø\'li :)

Håber det kan hjælpe dig på vej.
Avatar billede buhl Nybegynder
07. september 2000 - 22:57 #2
DCOM er en ret kompliceret affære til tider, og Microsoft skal da også krediteres for at man ikke umiddelbart behøver at ændre noget kode-mæssigt, for at kunne fjern-instantiere objekter.

Desværre kan DCOM i NT (og for slet ikke at tale om Win 9X) være drilsk. Et af de hyppigst forekommende problemer er ballade med sikkerhed inden for et domæne, så - inden jeg vil give dig et eksempel vil jeg bede dig om følgende oplysninger:

1) Hvilket operativsystem kører serveren hhv. klienten på?

2) Har vi tale om en ren klient-til-Server løsning, eller skal du bruge Events ell. Callbacks fra server-komponenten til klienten?

Endelig, i relation til vbmojo\'s svar, skal du bemærke at man *ikke* får DCOM ved at registrere en DLL lokalt, selvom DLL\'n måtte fysisk befinde sig på en anden servers shared drev. Meningen med det hele var jo netop at klienten skulle forespørge serveren om at instantiere komponenten i *serverens* adresserum og derfor benytter man en anden teknik.
Avatar billede raenil Nybegynder
07. september 2000 - 23:12 #3
Hej Hej

1) Windows 98. Jeg sidder og udvikler på en 2000 maskine, men kan ikke komme til at teste det før i morgen. Det er meningen at når jeg er færdig skal det køre i windows 98. Jeg har hentet en DCOM 1.3 på microsofts hjemmeside + tilhørende dcomconfigurator. Det var lige som om det ikke gav så meget.

2) Det jeg sidder og leger med nu benytter call-back. Det er forøvrigt begge ActiveX Exe-filer. Alt hvad jeg har lavet er lavet ud fra det CallBack eksempel der er med Visual Basic

Mvh
Morten
Avatar billede nolle_k Nybegynder
08. september 2000 - 08:39 #4
Du behøver ikke nødvendigvis have installeret eller registreret. Du kan nøjes med at lave et CreateObject kald med servernavnet som parameter!!

Det er selvfølgelig en fordel hvis du registrere den eller laver en reference til .tlb filen, der indeholder hvordan komponenten ser ud, ud ad til!! Det vil så sige, at du i VB kan se komponentens interface. Det kan du ikke hvis du ikke registrer den!  Der er også den ting, at hvis du laver early binding vil performance være en delt forbedret!! (Det vil sige oprette komponenten via new nøgleorder i VB!)

//Nolle_K



Avatar billede buhl Nybegynder
08. september 2000 - 19:27 #5
Det første skridt i DCOM udvikling er altid at teste DCOM uden \"D\", altså at klienten kan kommunikere med serveren på samme maskine. Jeg går ud fra at dette virker i dit tilfælde.

Nu refererer du jo til callback-eksemplet, så det vil jeg benytte som eksempel. I Server-projektet (CbServerProj) gør du nu følgende:

1) Check Remote Server Files under Component tab\'n i Project Properties. Dette vil i næste step producere de nødvendige TLB og VBR filer, som vi skal bruge senere.

2) Byg Serverens exe-fil

3) Gå ind i Project Properties / Component tab\'n og sæt Version Compatibility til Binary og vælg den exe-fil du producerede i step 2

Step 3 sikrer at VB bevarer forskellige GUID\'s for projektet, hvilket er vigtigt hvis / når du senere ændrer serveren.

4) Start klient-projektet op i VB og sørg for at det refererer til \"Call Back Ole Server\" (Brug Project / References)

5) Gentag step 2 og 3, men for klienten denne gang

6) Lav en package (dvs. brug Package & Deployment Wizard\'n), men referer til Clbk_svr.TLB og Clbk_svr.VBR filerne i stedet for Clbk_svr.exe

7) Installer denne package på klient-PC\'en og indtast serverens IP-adresse når du blever bedt om det undervejs i installationsscriptet

8) Kør klienten

Hvis du når så langt uden problemer, er jeg imponeret, men nu har vi da noget konkret at gå ud fra.
Avatar billede raenil Nybegynder
11. september 2000 - 08:34 #6
Det virker - måske. Jeg har i hvert fald fået det pakket. Jeg skal lige have testet det i dag - når jeg har fået det sendt et sted hen hvor jeg kan teste det.

Kan det ikke lade at ændre den ip adresse der skal connectes efter installationen?
Avatar billede raenil Nybegynder
11. september 2000 - 10:27 #7
Okay - så er tingene testet med resultatet Negativt. Den skriver følgende: \"Active X Component can\'t create object\"

Er det et tilladelses problem. Serveren ER registret på den maskine den køre på - skal der gøres mere på den?
Avatar billede raenil Nybegynder
13. september 2000 - 09:15 #8
Nu kører det - det var noget med rettigheder på serveren. Buhl: kan du ikke lige oprette et svar, hvis du vil have nogen point?
Avatar billede nolle_k Nybegynder
13. september 2000 - 09:17 #9
Må jeg spørge om server og klient er på samme domæne????


//Nolle_K
Avatar billede raenil Nybegynder
13. september 2000 - 09:21 #10
Jada - det er de. CreatObject kaldet med servernavnet som parameter burde også virke - jeg har bare ikke fået det testet i endnu.
Avatar billede nolle_k Nybegynder
13. september 2000 - 09:23 #11
OK!! Ellers ville jeg da meget gerne have at vide hvordan fanden du fik det til at virker! *GGG*

Jeg formoder, at permissions skulle sættes op fra DCOM config eller hva???
Avatar billede raenil Nybegynder
13. september 2000 - 09:27 #12
Ja, men hovedproblemet var at skolens (her hvor vi tester) standard rettigheder var sat til shareniveau istedet for på brugernivau. Og så kunne man ikke sætte rettigheder for brugere på serveren og derfor var der ingen der kunne køre noget på serveren.

/Raenil
Avatar billede nolle_k Nybegynder
13. september 2000 - 09:27 #13
OKey Dokey!
Avatar billede buhl Nybegynder
13. september 2000 - 22:45 #14
Det glæder mig at du har fået tingene til at virke. Jeg har et par afrundende bemærkninger.

Som tidligere nævnt er sikkerhed noget af det mest drilske, man kan komme ud for som DCOM-udvikler. Nu hvor du har fået tingene til at virke, burde du nok overveje om de settings i DCOMCNFG for din aktuelle komponent er tilstrækkelige, eller om du måske burde hæve niveauet til det maksimalt mulige. Prøv dig frem her.

/God DCOM-kodning fra Buhl
Avatar billede nolle_k Nybegynder
14. september 2000 - 08:01 #15
Ja god fornøjelse siger jeg bare! Så længe de hele foregår på samme domæne skulle det være muligt!


//Nolle_K
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester