2010-03-02 8 views
6

Ich verstehe ich mehrere Optionen, um das ServiceContract (wie Name, Namespace) Attribut anwenden und für OperationContract (Action, ReplyAction)Best Practice für Service- und Datenverträge - WCF

Das gleiche gilt für DataContract (Namespace) und DataMember (IsRequired, Name, Order)

Wie kann ich feststellen, ob ich eine bestimmte Option oder nicht anwenden müssen. Was ist die beste Praxis/Konvention, der ich folgen sollte?

Antwort

8

Es gibt keine "Best Practice" hier. Verstehen Sie einfach, wofür die verschiedenen Argumente verwendet werden.

  • Name soll, wenn Sie die „public“ Namen von den tatsächlichen Klassennamen des Service (die meisten Menschen dies nicht ändern) anders sein wollen angegeben werden. Bei Datenverträgen ist das ähnlich - verwenden Sie es, wenn Sie möchten, dass der Name, der über SOAP/MEX verfügbar gemacht wird, sich von dem intern verwendeten Eigenschaftsnamen unterscheidet.

  • Namespace ist etwas, das Sie sollte ändern, sonst wird standardmäßig tempuri.org - Sie dies mit einem Namensraum ersetzen soll, die für Ihre Anwendung relevant ist.

  • IsRequired soll angegeben werden, wenn der Typ nullable (das heißt ein string) ist aber das Feld tatsächlich als Teil des Auftrags erforderlich ist (zum Beispiel muss ein Kunde einen Namen hat ... das ist ein Pflichtfeld).

  • Order ändert nur die Reihenfolge, in der Eigenschaften in den Metadaten/XML angezeigt werden; Normalerweise kümmern sich die meisten Leute nicht darum, es sei denn, dies ist aus Kompatibilitätsgründen erforderlich.

+1

@Aaronaught - Hat der Namespace eine Beziehung zu der URL, in der die Dienste gehostet werden? Ich weiß, dass ich jeden gewünschten Namespace angeben kann, war mir jedoch nicht sicher, ob es sinnvoll ist, einen Namespace zu verwenden, in dem sich der Webhost befindet. – DotnetDude

+1

@DotnetDude: Nein, nicht wirklich. Namespace soll nur ein eindeutiger Bezeichner sein, der Ihren 'AwesomeService' von dem' AwesomeService' aller anderen unterscheidet. Wenn Sie eine echte Produktions-URL haben, wird es nicht weh tun, dass Sie das verwenden, aber das ist keine Voraussetzung. – Aaronaught

+0

Namespace und Name wirken sich auf die Form des generierten XML und letztendlich auf die deserialisierten Objekte am anderen Ende des Drahts aus. –

0

Es gibt keine Anforderungen oder Standards.

Die Attribute bieten Optionen, die die Möglichkeit erhöhen, dass die von MS zur Verfügung gestellte statische Spezifikation Ihren Anforderungen entspricht.

Also, ich würde sagen Best Practice ist, die Optionen zu verstehen und sie auf Ihre Anforderungen anzuwenden.