2011-01-04 3 views
1

Ich habe Probleme beim Entwerfen meines WCF-Dienstes. Bassistisch brauche ich den Service, um ein XML-Dokument zu erhalten. Das XML wird einer Klasse zugeordnet, die aus xsd.exe generiert wurde. Ich hatte ursprünglich nur das:Wann benötige ich einen Datenvertrag in WCF und wäre es besser, einen einfachen Typ zu verwenden?

public void AddDocument(string xmlString) 

Dann würde ich das XML in die generierte Klasse deserialisieren. Mir wurde gesagt, dies ist eine schlechte Idee, weil ich zusätzliche Arbeit mache seit wcf wird für mich die Serialisierung tun, wenn ich nur die Dokumentenklasse als Parameter wie folgt verwenden:

public void AddDocument(MyGeneratedClass document) 

ich WCF neu bin, aber wenn Ich mache es so, dass ich dachte, ich müsste einen Datenvertrag für MyGeneratedClass erstellen. Die generierte Klasse ist mehr als 20.000 Zeilen, das würde ewig dauern.

Benötige ich einen DataContract? Jedenfalls denke ich, dass mir etwas fehlt, also hoffe ich, dass das Sinn ergibt und wenn mir jemand in die richtige Richtung zeigen könnte, würde ich es sehr schätzen. Vielen Dank!

Antwort

2

Ich würde einfache Typen verwenden, wenn Ihre Methode nur einen oder zwei Parameter benötigt und nur einen einzelnen einfachen Typwert zurückgibt.

Als allgemeine Regel gilt:

  • Wenn Sie mehr passieren müssen, als nur wenige (weniger als 5) einfache Typen - eine Art von Request-Objekt verwenden, sonst wird Ihr Anruf wird unhandlich.

  • Wenn Sie mehr als einen einzelnen einfachen Wert eingeben müssen, verwenden Sie ein Objekt Response, um diese Werte zu bündeln.

Ich würde versuchen, es das Senden und Empfangen von XML zu vermeiden und analysieren - versuchen, hin und her wirklich gut strukturiert (Daten) senden Objekte - viel einfacher, mit und typsicher zu beschäftigen und alle!

Verwandte Themen