Laden...

WCF Service dynamisch generieren

Erstellt von Desert Fox vor 12 Jahren Letzter Beitrag vor 12 Jahren 765 Views
D
Desert Fox Themenstarter:in
33 Beiträge seit 2010
vor 12 Jahren
WCF Service dynamisch generieren

Hallo, ich möchte gerne einen WCF service dynamisch genierieren, die typen und methoden werden z.B in einer Xml definiert (heißt existieren erst zur laufzeit). Die webservice methoden sollen dann am client wiederum dynamisch aufgerufen werden.

Mein erster Gedanke war die proxy classe und die Parameter classen mit CodeDOM oder System.Reflection.Emit zu generieren und dann per Reflection die Methoden aufzurufen.
Allerdings kostet mich das einiges an performance bei jedem call dann per reflection die parameter generieren muss (die dann von WCF per reflection wieder ausgelesen werden).

Mein zweiter gedanke war jetzt dass ich einen eigene Implementierung von System.Type um meine Xml wrappe wodurch bei den Aufrufen es keine performance einbuße durch reflection gibt. Allerdings generiert der DataContactSerializer die objekte nicht per reflection sondern allokiert deren erwartete speichergröße und füllt diese dann manuell wenn ich micht irre oder?

Mein dritter gedanke war das ich eventuell das Message Objekt von WCF irgentwie nutzen könnte um so meien SOAP messages selbst zu generieren, allerdings ist das ja dann doch etwas zu aufwendig, wenn ich SOAP, REST etc selbst implementieren will.

Jetzt war meine frage was wäre die beste (und performanteste) lösung soetwas umzusetzen? Das ganze soll teil eines Frameworks werden, desswegen geht es mir so sehr um die performance. Ich weiß objekte mit Reflektion zu generien ist schon verdammt schnell, kostet allerdings doch einiges an leistung.

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo Desert Fox,

ich denke nicht dass hier Reflection die große Bremse sein wird, sondern eher WCF selbst (Serialisierung, Übertragung, etc). Mach mal einen Prototypen und schaue ob Reflection bremst od. nicht. Wenn nicht ist es eh gut und die kannst die erste Möglichkeit nehmen (ist denke ich noch die einfachste wenn du dich mit CodeDOM auskennst). Sonst ist auch Möglichkeit drei ganz nett, wenn du dich mit Messages auskennst 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"