Parameter und Vererbung
Zu Abschnitt 7.4.2 des Buchs
In diesem Beispiel wird der Umgang mit abstrakten Parametertypen und Vererbung dargestellt. Bei Web-Services
müssen alle Unterklassen eines Paramtertypes angegeben werden. Dafür werden die Attribute
[SoapInclude] und [XmlInclude] verwendet, um die konkreten Unterklassen "Customer" und "Employee" in die
WSDL-Beschreibung
aufzunehmen. [SoapInclude] wird benötigt bei einem Aufruf mittels SOAP-HTTP und [XmlInclude] für
Aufrufe mittels HTTP-GET bzw. HTTP-POST (siehe Link weiter unten).
PersonService.asmx
<%@ WebService Language="C#" Class="Kapitel7.PersonService" %>
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
namespace Kapitel7 {
public class PersonService : WebService {
[WebMethod]
[SoapRpcMethod]
[SoapInclude(typeof(Customer)), // moegliche Unterklassen von Person
SoapInclude(typeof(Employee))] // (fuer SOAP-HTTP Aufrufe)
[XmlInclude(typeof(Customer)), // moegliche Unterklassen von Person
XmlInclude(typeof(Employee))] // (fuer HTTP-GET/POST Aufrufe)
public Person Find(string ssn) {
Person p = null;
if (ssn == "1")
p = new Customer(ssn, "Marion Kunde", "EMP-33");
else
p = new Employee(ssn, "Mario Arbeiter");
return p;
}
[SoapRpcMethod] [WebMethod]
public Person[] GetAll() {
Person[] data = new Person[2];
data[0] = new Customer("1", "Marion Kunde", "EMP-33");
data[1] = new Employee("EMP-33", "Mario Arbeiter");
return data;
}
}
public abstract class Person {
public string SSN; public string Name;
public Person() {}
public Person(string ssn, string name) { this.SSN = ssn; this.Name = name;}
}
public class Customer : Person {
public string EmpSSN;
public Customer() {EmpSSN = "??"; }
public Customer(string ssn, string n, string e): base(ssn, n) {EmpSSN = e;}
}
public class Employee : Person {
public Employee() {}
public Employee(string ssn, string name) : base(ssn, name) {}
}
}
|
Ausführung
Der nächste Link führt Sie zu einer automatisch erzeugten Seite. D.h. für den oben dargestellten Code
wird eine HTML-Seite erzeugt, welche das Web-Service beschreibt und auch eine Möglichkeit zum
Testen der Methoden anbietet.
http://dotnet.jku.at/book/samples/7/encoding/PersonService.asmx
Eine weitere Möglichkeit, wie Sie dieses Web-Service testen können, ist das
Webservice Studio
zu verwenden, welches auf der Begleit-CD zum Buch "Die .NET-Technologie" enthalten ist.
Testen Sie die Methoden über die HTML-Seite und über das Webservice Studio
und vergleichen Sie die vom Service gelieferten XML-Antworten :-).
|