Frage

Gibt es eine Möglichkeit, wenn Web-Service zu schaffen, die Arten angeben zu benutzen? Insbesondere möchte ich beide die gleiche Art zu verwenden, um der Lage sein, auf dem Client und Server Duplizierung von Code zu reduzieren.

über vereinfachtes Beispiel:

    public class Name
    {
        public string FirstName {get; set;}
        public string Surname { get; set; }

        public override string ToString()
        {
            return string.Concat(FirstName, " ", Surname);
        }
    }

Ich will nicht recode Stücke Funktionalität in meiner Klasse haben. Die andere Sache ist, dass jeder Code, der diese manipuliert diese Klasse existiert nicht Client-Seite als die Client-Seite-Klasse arbeiten, die erzeugt wird, eine andere Art sein würde.

War es hilfreich?

Lösung

Okay, ich sehe, weiß, dass dies auf Seiten der SOAP eine explizite Design-Entscheidung gewesen ist, so dass Sie nicht wirklich auf das soll. Ich fand das folgende , die erklärt, warum:

  

Dienstleistungen Aktien Schema und Vertrag,   nicht Klasse . Services interagieren ausschließlich auf   ihre Expression von Strukturen durch   Schemata und Verhaltensweisen durch   Verträge. Die Service-Vertrag   beschreibt die Struktur von Nachrichten   und Ordnungsbeschränkungen über   Mitteilungen. Die Förmlichkeit der   Ausdruck ermöglicht Maschine Überprüfung   von eingehenden Nachrichten. Maschine   Überprüfung der eingehenden Nachrichten   Damit können Sie den Dienst des schützen   Integrität. Verträge und Schemata müssen   bleiben über längere Zeit stabil, so Gebäude   sie flexibel ist wichtig.

Nachdem das nun gesagt, dass es zwei weitere Möglichkeiten:

  1. Generieren Sie die die Web-Verweise in Visual Studio oder mit wsdl.exe. Gehen Sie dann in die generierten Reference.cs (oder .vb) Datei und den Typ explizit löschen. Dann Umleitung auf die Art, die Sie mögen, dass in einer anderen Baugruppe befindet.
  2. Sie können Typen zwischen Web-Services auf der Client-Seite von wsdl.exe teilen und / share Parameter.

Andere Tipps

Wenn Sie eine Art oder Struktur zwischen Ihrem Web-Service geteilt haben wollen und Ihren Kunden, fügen Sie eine öffentliche Struktur, um Ihre Web-Service-Projekt wie folgt:

public struct Whatever
{
    public string A;
    public int B;
}

dann eine Methode, um Ihren Web-Service hinzufügen, die diese Struktur als Rückgabetyp hat:

[WebMethod]
public Whatever GiveMeWhatever()
{
    Whatever what = new Whatever();
    what.A = "A";
    what.B = 42;
    return what;
}

Nachdem Sie Ihre Kunden Web-Referenz aktualisieren, werden Sie in der Lage sein structs von Art zu schaffen, was in Ihrer Client-Anwendung wie folgt:

Webreference.Whatever what = new Webreference.Whatever();
what.A = "that works?";
what.B = -1; // FILENOTFOUND

Diese Technik ermöglicht die Definition von irgendwelchen Strukturen, die Sie an einem Ort hin und her übergeben müssen halten (das Web-Service-Projekt).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top