by
Roland Schumacher alias GENiALi
12. Mai 2006 -- 369
words -- 68 mal gelesen
Ich darf wieder mal was machen. :-)
Jetzt geht es um Webservice. Ist zwar nicht das erste mal wo ich
was mit WS mache, aber es ist schon sehr lange her (etwa 2 Jahre).
Das heisst jetzt, ich darf mich wieder mal in etwas einlesen und einarbeiten.
Da kommen natürlich auch immer wieder interessante Sachen zum vorschein
die auch andere interessieren dürften.
Hier ein Anfang.
- Ein "normaler" Webservice ist von der Klasse "System.Web.Services.WebService" abgeleitet.
- Die Klasse des WS'es kann man mit Attributen "schmücken". Auf der Ebene der Klasse kenne ich
im Moment folgende Attribute.
[WebService
(
Namespace="http://MUSS EINDSEIN",
Description=@"BESCHREIBUNG DES WEBSERVICES.",
Name=@"NAME DES WEBSERVICES. DIE PROXYKLASSE HEISST DANN ABER AUCH SO.
SONST LEER LASSEN ODER LÖSCHEN."
)
]
- Auf der Ebene der Methoden kenne ich im Moment folgende Attribute, wo bei es noch mehr gibt.
Im Moment weiss ich allerdings noch nicht für was die GENAU gut sind.
[WebMethod
(
MessageName = "MethodeAndererName",
Description = "WasMachtDieMethode",
EnableSession = false,
TransactionOption = TransactionOption.Disabled,
CacheDuration = 60,
BufferResponse = true
)
]
- MessageName tauft den Methodenname im Proxy und auf der Testseite um. Das heisst auch,
dass die Methode im übermittelten XML anders heisst.
- Description ist klar.
- EnableSession ermöglicht einem auch in einem WS mit Sessionen zu arbeiten. Der Client muss einfach
Cookies unterstützen. Nicht ganz ohne.
- TransactionOption muss man nicht unbedingt angeben. Standart ist eh Disabled. Hier noch die
Beschreibung aus der MSDN.
[...]
TransactionOption - Der Wert dieser Eigenschaft gibt an, ob die XML Web Service-Methode als das Stammobjekt
einer Transaktion teilnehmen kann. Obwohl Sie die TransactionOption-Eigenschaft auf einen beliebigen Wert der
TransactionOption-Enumeration setzen können, verfügt eine XML Web Service-Methode nur über zwei mögliche
Verhaltensweisen: Entweder sie nimmt nicht an einer Transaktion teil (Disabled, NotSupported, Supported),
oder sie erstellt eine neue Transaktion (Required, RequiresNew). Bei Fehlen weiterer Angaben ist der Standardwert
TransactionOption.Disabled. Für die Verwendung dieser Eigenschaft müssen Sie einen Verweis auf
stem.EnterpriseServices.dll hinzufügen. Dieser Namespace enthält Methoden und Eigenschaften, die das
verteilte Transaktionsmodell von COM+-Diensten anzeigen. Die System.EnterpriseServices.ContextUtil-Klasse
ermöglicht Ihnen das Abstimmen über die Klasse mit Hilfe der SetAbort- oder SetComplete-Methoden.
[...]
- CacheDuration gibt an wie lange ein Ergebnis bei gleicher Parametermenge im Cache gehalten wird.
Kann man weglassen. Dann ist es null, dass heisst nicht aktiviert.
- BufferResponse speichert das Ergebnis und übermittelt es in einem Stück. Standart ist true, muss also
auch nicht angegeben werden. Wenn es auf false steht, dann wird das Ergebnis in 16KB Häppchen übermittelt.
So, dass ist mal alles. Wird sicher noch mehr geben. Wenn jemand noch mehr nützliche Attribute
kennt..... Nur zu. Melden. :-)