Avatar billede gulbaek Nybegynder
11. april 2005 - 09:51 Der er 12 kommentarer og
1 løsning

Oprette object på Server og tilgå objectet fra en Klient

Hejsa, sidder lige og har gang i lidt Klient/Server og er stødt på et problem.

Min Server opretter et object og lægger forskellige oplysninger ind i det, hvordan kan jeg give min klient adgang til det object. Tænker på at lave det som en reference.

Er kommet så langt med Remoting, at jeg kan få klienten til at lave metode kald på serveren og få returnere et object, mangler bare lige  det sidste.
Avatar billede arne_v Ekspert
11. april 2005 - 09:53 #1
Hvis det objekt er serializable så kan du jo returnere det fra en metode.
Avatar billede gulbaek Nybegynder
11. april 2005 - 09:59 #2
Kan du komme med lidt kode til hvordan det vil se ud på server og klienten, ved godt hvordan jeg laver objecter serializable og har det også til at virke i Remoting.

altså, hvordan opretter jeg objectet på serveren og gør så klienten kan tilgå det.
Avatar billede arne_v Ekspert
11. april 2005 - 10:08 #3
Jeg tror at der er noget som jeg ikke forstår.

public MinKlasse GivMigMitObjekt()
{
    return mitobjekt;
}

er der jo ikke nogen ben i.
Avatar billede gulbaek Nybegynder
11. april 2005 - 10:13 #4
Hmm, tror vist bare det er mig der ikke har tænkt mig ordentlig om. Har lavet en dll fil som indeholder alt det kode der var fælles, problemet var at jeg ikke fra serveren kunne oprettet objecter ved hjælp af det og tilgå det fra klienten. Men hvis jeg laver det om til et Interface, tror jeg at jeg kan løse det.

Skriver lige tilbage når jeg har prøvet det.
Avatar billede gulbaek Nybegynder
11. april 2005 - 10:16 #5
Kunne egentlig godt bruge en forklaring på forskellen af Serializable og MarshalByRefObject
Avatar billede arne_v Ekspert
11. april 2005 - 10:17 #6
Alt det der skal deles mellem client og server skal jo være til rådighed som
assembly for både client og server.

Interfaces er en pæn måde at gøre det på.
Avatar billede arne_v Ekspert
11. april 2005 - 10:20 #7
Der er en relativ underholdende forklaring her:
  http://blogs.msdn.com/ericlippert/archive/2004/05/27/143203.aspx
Avatar billede gulbaek Nybegynder
11. april 2005 - 10:39 #8
Giver mig følgende fejl SerializationException Cannot find the assembly RemoteServer

lidt Klient kode.
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan);

RemoteInterface obj =(RemoteInterface) Activator.GetObject
                (typeof(RemoteInterface), "tcp://gulbaek:9999/SayHello");

Train train = obj.getTrain();
Console.WriteLine("Klient " + train.ShowInfo);

Console.ReadLine();

Lidt Server kode.
namespace RemotingSamples
{
    public class HelloServer : MarshalByRefObject, RemoteInterface
    {
        private Train train;

        public HelloServer()
        {
            Console.WriteLine("HelloServer activated");   
            train = new Train(10,"IC3","Ole","100",20);
            Console.WriteLine(train.ShowInfo);
        }

        public String HelloMethod(string name)
        {
            Console.WriteLine("Hello.HelloMethod : {0}", name);
            return "Hi there " + name + " The time is now " + System.DateTime.Now.TimeOfDay.ToString();
        }
        public Train getTrain()
        {
            return train;
        }

    }
}

Det går galt når jeg kalder obj.getTrain();
Håber det er nok info.
Avatar billede gulbaek Nybegynder
11. april 2005 - 10:40 #9
Har lagt koden til Train klassen på både server og klient, samt gjort den Serializable
Avatar billede arne_v Ekspert
11. april 2005 - 10:46 #10
Ligger Train klassen i sin egen DLL som er både på client og server ?
Avatar billede gulbaek Nybegynder
11. april 2005 - 10:48 #11
nej, har lavet den uden dll og kun med et interface, men kan da godt lige prøve at lave en dll fil med Train klassen
Avatar billede gulbaek Nybegynder
11. april 2005 - 10:59 #12
Det hjalp da jeg lavede Train om til en dll, takker for hjælpen, smid lige et svar.
Avatar billede arne_v Ekspert
11. april 2005 - 11:05 #13
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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