Autor Beitrag
mutzel
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 10.07.08 10:08 
Hi,

also ich hab schon seit ner Ewigkeit eine Sache die mich an den WebServices stört und zwar die Tatsache das beim Transport eines Objektes sämtliche Funktionalität verloren geht und am anderen Ende ein vollkommen neuer Type erstellt wird.

Gibt es eine Möglichkeit das zu unterbinden?


Hier ein Beispiel:

- im WebService gibt es eine Funktion GetList dies gibt ein Objekt vom Type MyList zurück das wie folgt aussieht:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        public class MyList
        {
            public string[] List { get; set; }
            public string Find(string search)
            {
                foreach (string s in List) { if (s.Contains(search)) return s; }
                throw new Exception();
            }
        }



- sowohl der Server als auch der Client wollen die funktion MyList.Find aufrufen
- da der Client aber den Typen MyList aus der XML-Definition (WSDL) vom WebService generiert bekommt und man nicht bestimmen kann das das XML aus dem WebService in den echten MyList Typen deserialisiert werden soll, hat man am Client die Funktion Find nicht

Wie schafft man es also ohne die Funktion bzw. Klasse zwei mal zu schreiben die Funktionalität auf Client und Server nutzbar ist?

Man könnte z.B. beim Client mit 'partial' den Typen MyList aus der WSDL um die Funktion Find erweitern aber dann hat man erstens das ganze an zwei Orten zu pflegen und zweitens immer noch nicht den echten MyList Typen den man dann z.B. an andere Funktionen aus einer gemeinsamen Assembly, die für alle Clients verfügbare ist, übergeben könnte.

Das ganze sollte wenn möglich mit dem .NET 2.0 funktionieren.

LG mutzel