<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET Stories: Digitale Erfahrungen &#187; Web Service</title>
	<atom:link href="http://www.gmbsg.com/tag/web-service/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gmbsg.com</link>
	<description>So einfach wie möglich. Aber nicht einfacher.</description>
	<lastBuildDate>Tue, 31 Aug 2010 22:21:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WCF Custom Behavior Extensions &#8211; Nachtrag zur VSOne</title>
		<link>http://www.gmbsg.com/wcf-custom-behavior-extensions-nachtrag-zur-vsone/</link>
		<comments>http://www.gmbsg.com/wcf-custom-behavior-extensions-nachtrag-zur-vsone/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 10:54:43 +0000</pubDate>
		<dc:creator>Ilker Cetinkaya</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Works]]></category>
		<category><![CDATA[3.5]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[Objekt-Orientierung]]></category>
		<category><![CDATA[Software-Entwicklung]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=56</guid>
		<description><![CDATA[Als Nachtrag zu meinem Vortrag auf der VSOne habe ich kurzerhand ein essentielles Pattern &#8211; nämlich das Service Gateway Pattern &#8211; in einem Artikel näher beschrieben. Hier gehe ich vor Allem auf die Adaption des Patterns in der Windows Communication ...]]></description>
			<content:encoded><![CDATA[<p>Als Nachtrag zu meinem <a href="http://www.vsone.de/sprecher.aspx?experte=Ilker+Cetinkaya">Vortrag auf der VSOne</a> habe ich kurzerhand ein essentielles Pattern &#8211; nämlich das Service Gateway Pattern &#8211; in einem Artikel näher beschrieben. Hier gehe ich vor Allem auf die Adaption des Patterns in der Windows Communication Foundation ein.</p>
<p>Denn die WCF &#8211; und das ist ja nichts neues &#8211; ist extrem flexibel und erweiterbar. Interessant wird es allerdings erst, wenn diese Flexibilität und Erweiterbarkeit in der Praxis effektiv eingesetzt werden kann. </p>
<p>Mit Hilfe von <a href="/works/index.php?title=Service_Gateway_in_WCF_-_WCF_Custom_Behavior_Extensions">WCF Custom Behavior Extensions</a> kann man elegant eigene Behaviors dem WCF Kommunikationsstrom hinzufügen und somit effizient vertikale Funktionalität wie z.B. Validierung oder Restriktion implementieren.</p>
<p><a href="/works/index.php?title=Service_Gateway_Pattern_mit_der_WCF_und_Custom_Behavior_Extensions">Zum Artikel</a> habe ich auch noch ein paar Code Samples zum Download bereitgestellt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gmbsg.com/wcf-custom-behavior-extensions-nachtrag-zur-vsone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VSOne: SOA Patterns mit WCF</title>
		<link>http://www.gmbsg.com/vsone-soa-patterns-mit-wcf/</link>
		<comments>http://www.gmbsg.com/vsone-soa-patterns-mit-wcf/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 08:32:37 +0000</pubDate>
		<dc:creator>Ilker Cetinkaya</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[Objekt-Orientierung]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=55</guid>
		<description><![CDATA[Eine News in eigener Sache: Auf der diesjährigen VSOne (13.-14. Februar 2008) werde ich einen Vortrag über SOA Patterns mit dem .NET Framework und der Windows Communication Foundation halten.
Der Abstrakt:

Mit der neuen Windows Communication Foundation (WCF) ist es für .NET-Entwickler ...]]></description>
			<content:encoded><![CDATA[<p>Eine News in eigener Sache: Auf der diesjährigen <a href="www.vsone.de">VSOne</a> (13.-14. Februar 2008) werde ich einen Vortrag über SOA Patterns mit dem .NET Framework und der Windows Communication Foundation halten.</p>
<p>Der Abstrakt:</p>
<blockquote><p>
Mit der neuen Windows Communication Foundation (WCF) ist es für .NET-Entwickler einfacher als je zuvor, Web-Service-Technologien zu verwenden. Statt der technologischen Hürde sieht man nun vermehrt konzeptionelle Herausforderungen vor sich. Der Vortrag zeigt die wichtigsten Design Patterns in der Service-Orientierung und Web-Services-Architektur und auf deren Anwendungsbereich, praktischen Nutzen und Implementierung ein. Mit Kenntnis dieser grundlegenden SOA Patterns können stabile, performante und flexible Web Services mit der WCF umgesetzt werden.
</p></blockquote>
<p>Ich freue mich auf viele bekannte Gesichter auf der VSOne und natürlich auf euer Feedback!</p>
<p>Link: <a href="http://www.vsone.de/sprecher.aspx?experte=Ilker+Cetinkaya">VSOne: SOA Patterns mit WCF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gmbsg.com/vsone-soa-patterns-mit-wcf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF Performance &#8211; WCF vs. ASMX vs. WSE vs. ES vs. Remoting</title>
		<link>http://www.gmbsg.com/wcf-performance-wcf-vs-asmx-vs-wse-vs-es-vs-remoting/</link>
		<comments>http://www.gmbsg.com/wcf-performance-wcf-vs-asmx-vs-wse-vs-es-vs-remoting/#comments</comments>
		<pubDate>Sat, 08 Dec 2007 13:50:17 +0000</pubDate>
		<dc:creator>Ilker Cetinkaya</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[3.5]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Remoting]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=48</guid>
		<description><![CDATA[Wer sich schon länger mit verteilten Anwendungen und Web Services mit dem .NET Framework auseinandergesetzt hat, der wird wissen, dass der Performancezuwachs von .NET 1.1 auf .NET 2.0 schon massiv war. Mit der WCF wird es noch performanter, wie der ...]]></description>
			<content:encoded><![CDATA[<p>Wer sich schon länger mit verteilten Anwendungen und Web Services mit dem .NET Framework auseinandergesetzt hat, der wird wissen, dass der Performancezuwachs von .NET 1.1 auf .NET 2.0 schon massiv war. Mit der WCF wird es noch performanter, wie der <a href="http://msdn2.microsoft.com/en-us/library/bb310550.aspx">Performance-Vergleich</a> von Microsoft zeigt. </p>
<p>Dies deckt sich zum großen Teil auch mit den Erfahrungen, die ich bis Dato machen konnte. Schade finde ich es, dass der Performance-Vergleich z.B. nicht auf die einzelnen Bindings der WCF eingeht &#8211; aber der Artikel will ja primär die neue Technologie mit der alten vergleichen. Ich für meinen Teil durfte feststellen, dass für HTTP das BasicHttpBinding das schnellste ist. Wen wundert&#8217;s, es ist auch das einfachste.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gmbsg.com/wcf-performance-wcf-vs-asmx-vs-wse-vs-es-vs-remoting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flat WSDL mit WCF &#8211; Verbesserung der Interoperabilität mit einfachen WSDL-Definitionen</title>
		<link>http://www.gmbsg.com/flat-wsdl-mit-wcf-verbesserung-der-interoperabilitat-mit-einfachen-wsdl-definitionen/</link>
		<comments>http://www.gmbsg.com/flat-wsdl-mit-wcf-verbesserung-der-interoperabilitat-mit-einfachen-wsdl-definitionen/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 18:43:35 +0000</pubDate>
		<dc:creator>Ilker Cetinkaya</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[3.5]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[WSDL]]></category>

		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=49</guid>
		<description><![CDATA[In einem Blog-Eintrag von Christian Weyer wird wunderbar beschrieben (und im Code-Sample gezeigt), wie man die &#60;import&#62;-Definitionen der von WCF automatisch generierten WSDL-Datei auflösen kann und alle notwendigen Service-Beschreibungen in einem einzigen WSDL-Dokument unterbringen kann.
Das bringt vor Allem Vorteile bei ...]]></description>
			<content:encoded><![CDATA[<p>In einem <a href="http://blogs.thinktecture.com/cweyer/archive/2007/05/10/414840.aspx">Blog-Eintrag von Christian Weyer</a> wird wunderbar beschrieben (und im Code-Sample gezeigt), wie man die &lt;import&gt;-Definitionen der von WCF automatisch generierten WSDL-Datei auflösen kann und alle notwendigen Service-Beschreibungen in einem einzigen WSDL-Dokument unterbringen kann.</p>
<p>Das bringt vor Allem Vorteile bei der Interoperabilität, denn &#8220;einfache&#8221; SOAP-Clients wie bei PHP oder Flex sind im Allgemeinen nicht in der Lage, den &lt;import&gt;-Definitionen innerhalb eines WSDL-Dokumentes zu folgen.</p>
<p>Der von Weyer beschriebene Ansatz ist einfach umzusetzen und funktioniert blendend. Ich möchte dazu allerdings ein paar Kleinigkeiten ergänzen, die leider meiner Meinung nach nicht ganz deutlich hervorgehoben wurden:</p>
<ul>
<li>Das &#8220;flattening&#8221; der WSDL-Definitionen funktioniert nur bei einem konfigurierten Endpoint<br/>(Ein üblicher Metadata-Exchange-Endpoint entfällt, weil es sowieso programmatisch hinzugefügt wird)</li>
<li>Der &#8220;bindingNamespace&#8221; des Endpoints muss demselben Namespace entsprechen wie der, der im ServiceBehaviorAttribute und ServiceContractAttribute angegeben ist.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gmbsg.com/flat-wsdl-mit-wcf-verbesserung-der-interoperabilitat-mit-einfachen-wsdl-definitionen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET User Group Vortrag: Web Services Grundlagen</title>
		<link>http://www.gmbsg.com/net-user-group-vortrag-web-services-grundlagen/</link>
		<comments>http://www.gmbsg.com/net-user-group-vortrag-web-services-grundlagen/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 15:14:40 +0000</pubDate>
		<dc:creator>Ilker Cetinkaya</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Works]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=38</guid>
		<description><![CDATA[Gestern durfte ich im Rahmen der .NET User Group München über konzeptionelle Grundlagen von Web Services referieren. Ich war ziemlich überrascht, dass dieses Thema reges Interesse ausgelöst hat; die Teilnehmerzahl war doch ziemlich hoch.
Für mich persönlich kann ich einen sehr ...]]></description>
			<content:encoded><![CDATA[<p>Gestern durfte ich im Rahmen der .NET User Group München über <a href="http://www.munichdot.net/Events/495.aspx">konzeptionelle Grundlagen von Web Services</a> referieren. Ich war ziemlich überrascht, dass dieses Thema reges Interesse ausgelöst hat; die Teilnehmerzahl war doch ziemlich hoch.</p>
<p>Für mich persönlich kann ich einen sehr positiven Eindruck von der Veranstaltung feststellen, zumal ich denke dass doch einige Teilnehmer nach dem Vortrag ein paar neue Erkenntnisse für sich mitnehmen konnten. Die angenehme und wissensdurstige Atmosphäre hat sicherlich seinen Beitrag für dazu geleistet, das ich meine Aufgabe als Referent mit einem gewissen Spaßfaktor erfüllen konnte.</p>
<p>Für all diejenigen, die nicht an der Veranstaltung teilehmen konnten oder die Teilnehmer, die gerne dass ganze nochmal nachlesen möchten habe ich im Works-Bereich einen <a href="http://www.gmbsg.com/works/index.php?title=Grundlagen_der_Erstellung_und_Verwendung_von_Web_Services">Artikel</a> bereitgestellt, in der die Kernthemen des Vortrages festgehalten sind. Dort stehen übrigens auch die <a href="http://www.gmbsg.com/works/index.php?title=Web_Service_Grundlagen_-_Download_Pr%C3%A4sentation">Präsentation</a> selbst sowie die gezeigten <a href="http://www.gmbsg.com/works/index.php?title=Web_Service_Grundlagen_-_Download_Code_Samples">Code-Samples</a> zum Download bereit.</p>
<p>Ich bin wie immer gespannt auf Feedback &#038; Kommentare. Viel Spaß mit den <a href="http://www.gmbsg.com/works/index.php?title=Grundlagen_der_Erstellung_und_Verwendung_von_Web_Services">Web Services Grundlagen</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gmbsg.com/net-user-group-vortrag-web-services-grundlagen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stateful vs. Stateless Web Services</title>
		<link>http://www.gmbsg.com/stateful-vs-stateless-web-services/</link>
		<comments>http://www.gmbsg.com/stateful-vs-stateless-web-services/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 22:30:01 +0000</pubDate>
		<dc:creator>Ilker Cetinkaya</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[Session]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://www.gmbsg.com/stories/?p=23</guid>
		<description><![CDATA[Es ist schon ein paar Tage her, als ich Zeuge einer kleinen Debatte unter Entwicklern wurde. Es ging um die Entwicklung eines Web Services, welches eine große Menge an Daten beliefern sollte. Während des Brainstormings über Spezifikationen und Parameter wurde ...]]></description>
			<content:encoded><![CDATA[<p>Es ist schon ein paar Tage her, als ich Zeuge einer kleinen Debatte unter Entwicklern wurde. Es ging um die Entwicklung eines Web Services, welches eine große Menge an Daten beliefern sollte. Während des Brainstormings über Spezifikationen und Parameter wurde auch darüber diskutiert, ob der Web Service stateful &#8211; also mit einer Session &#8211; oder stateless konzipiert werden soll.</p>
<p>Völlig parteilos &#8211; ich kenne beide Entwickler :-) &#8211; möchte ich diese zwei Design-Konzepte ein wenig aus meiner eigenen Betrachtungsweise durchleuchten. Auf gut englisch &#8211; my 2c&#8230;</p>
<p>Zunächst sollte man sich meiner Meinung nach der Natur des Web Services im Klaren sein. Konkret ist ein Web Service eine öffentliche Schnittstelle zum Aufruf einer entfernten Operation. Nun ist soetwas ja nicht das 8. Weltwunder &#8211; will heissen dass es viele weitere, zum Teil deutlich ältere Technologien gibt, die das gleiche bezwecken wollen &#8211; es seien hier nur RPC und CGI als prominente Beispiele erwähnt. Das Problem &#8220;stateful&#8221; vs. &#8220;stateless&#8221; stellt sich also nicht erst seit dem es Web Services gibt. </p>
<p>Einen entfernten Aufruf &#8211; den berüchtigten &#8220;Remote Call&#8221; durchzuführen ist mit der Web Services-Technologie mittlerweile kinderleicht. Remote operations zur Verfügung zu stellen ist mit dem .NET Framework zum Beispiel fast genauso kinderleicht. Umso mehr sind Entwickler dazu geneigt, diese Leichtigkeit der Verwendung mit &#8220;Leichtsinnigkeit&#8221; zu verwechseln. Denn die Tragweite der Entscheidungen über ein Web Service Design kann manchmal ungeahnte Züge annehmen.</p>
<p>Doch zurück zum Thema: Grundsätzlich wurden Web Services für den automatisierten (also maschinellen) Informationsaustausch geschaffen. Per Definition des W3C ist ein Web Service nämlich folgendes:</p>
<blockquote><p>A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAPmessages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.</p></blockquote>
<p>So. Eine klare Ansage. Aber beim zweiten durchlesen wird auch schon deutlich, wo der eigentliche Knackpunkt liegt. Es geht um das Teilstück &#8220;&#8230;interoperable machine-to-machine interaction&#8230;&#8221;. De facto lässt sich daraus ableiten, dass in der Idealform jeder Rechner innerhalb eines Netzwerkes jeden Dienst und dessen Operationen ansprechen und verarbeiten kann. Das kann auch komplexere Szenarien unterstützen; z.B dass Rechner, die Dienste zur Verfügung stellen, ihrerseits zur Erfüllung ihres eigenen Dienstes einen oder mehrere andere Dienste in Anspruch nehmen. Weiterhin ist per Definition auch die Multiplizität eines Dienstes freigestellt &#8211; d.h. es kann einen oder mehrere gleichartige, oder sogar equivalent operierende Dienste geben, die auf einer oder mehreren Rechnern zur Verfügung gestellt werden.</p>
<p>Bevor es nun zu theoretisch wird, kann man die Gedankenspiele abkürzend auf einen Nenner bringen: Bei Web Services geht es um flexible Kommunikation. Die Operation wird demjenigen zur Verfügung gestellt, der Sie braucht und ist idealerweise jederzeit ersetzbar. Des Weiteren ist die Operation idealerweise kontextunabhängig &#8211; lässt sich also ohne weiteres im Verbund mit anderen Operationen aufrufen, um daraus eine neue, sog. &#8220;orchestrierte&#8221; Operation zu formen.</p>
<p>Ich laufe hier natürlich sehr in Gefahr, in das SOA-Thema auszuschweifen &#8211; also gleich weiter mit der Ableitung der Definition des Web Services zu Entscheidungshilfen beim Design von Web Services.</p>
<p>Jetzt, da man die &#8220;Natur&#8221; eines Web Services sich genauer vor Augen hält, lässt sich eindeutig sagen, dass Web Services per se kontextunabhängig sind &#8211; im Resultat also &#8220;stateless&#8221;. Der Begriff &#8220;stateless&#8221; ist hier sehr leicht mit &#8220;statisch&#8221; ersetzbar &#8211; soll es aber nicht sein. Ein Web Service ist nicht zwingend statisch, weil es keinen Zustand hat. Der Gedanke der Kontextunabhängigkeit manifestiert sich bei Web Services nahezu überall: Die SOAP-Spezifikation enthält z.B. zahlreiche Möglichkeiten, Meta-Daten mit den Daten zu einer Operation zu übertragen. Im .NET Framework wird standardmäßig bei jedem Web-Service-Methoden-Aufruf die Web-Service-Klasse selbst instanziiert &#8211; eindeutige Zeichen dafür, dass Web Services für kontextunabhängige Verwendung ausgelegt worden sind.</p>
<p>Ergo: Web Services sind erst mal von Haus aus &#8220;stateless&#8221;. Aber wieso spielen nun viele Entwickler mit dem Gedanken, einen Web Service &#8220;stateful&#8221; werden zu lassen? Das kann viele Unterschiedliche Gründe haben &#8211; in dem von mir geschilderten Fall war die Datenmenge der Vater des Gedanken. Es sei hier nur kurz in groben Zügen der Werdegang der Idee zum &#8220;stateful&#8221; Web Service beschrieben:</p>
<p>Zur Implementierung einer Suche frägt der Client mit variablen Parametern ein Satz von Daten an &#8211; die resultierende Datenmenge ist unglaublich groß (sagen wir mal mehrere tausend Datensätze mit einer großen Menge an Daten, sagen wir mal 1MB pro Datensatz). Die Abfrage und Beschaffung der Daten auf der Datenbank kostet sehr viel Zeit (sagen wir mal mehrere Minuten) und kostet unglaublich viel Ressourcen (sagen wir mal es ist eine alte, gebrechliche Datenbank mit wenig Skalierbarkeit). <em>(Merkt man, dass ich nicht gut im Erfinden von Anforderungen bin?)</em></p>
<p>Um nun Ressourcen zu schonen und die Geschwindigkeit zu erhöhen, kann man eine Session einführen, die bei der initialen Such-Abfrage erstellt wird. Die Abfrage wird gegen die Datenbank ausgeführt, das Ergebnis in der Session gespeichert und nur ein Teil der Daten (sagen wir mal, die ersten hundert) an den Client zurückgeliefert. Sollte der Client in einem zweiten Aufruf mehr Datensätze verlangen, werden die in der Session gespeicherten Daten zurückgeliefert, anstelle eine neue Abfrage gegen die Datenbank abzusetzen.</p>
<p>Ich möchte an dieser Stelle den aufmerksamen Leser bitten, über die Sinnhaftigkeit dieser Idee &#8211; wie ich es getan habe &#8211; hinwegzusehen und sich nur auf die Thematik der Kontextbezogenheit zu konzentrieren &#8211; Danke.</p>
<p>Nun, in Konsequenz würde die Einführung einer Session folgende Auswirkungen haben:<br />
Die Session müsste erstellt werden, ein Session-State-Service müsste die Sessions verwalten. Wie es mit Sessions so ist, wäre die Session nur begrenzt gültig &#8211; und damit auch der gewünschte Effekt in begrenztem Maße erreicht. Weiterhin müsste die Session-ID in jedem Aufruf mit übergeben werden &#8211; das Interface würde also mit noch mehr Meta-Daten beladen werden. Im Übrigen wäre der Aufruf der zweiten Operation (&#8221;gebe mir noch mehr Datensätze&#8221;) nur möglich, wenn zuvor die erste aufgerufen wurde.</p>
<p>All diese meiner Meinung nach unvorteilhafen Konsequenzen müsste man in Kauf nehmen, um das gewünschte Ziel zu erreichen. Ein ziemlich teurer Preis wie ich finde.</p>
<p>Mit zustandsbehafteten Web Services schafft man sich aus meiner Sicht den Flaschenhals &#8220;Session-Manager&#8221; an, erhöht u.U. die &#8220;Chattiness&#8221; der Kommunikation zwischen Client und Server und schreibt dem Client auch noch Regeln vor, wie er welche Operationen aufzurufen hat, damit er an das gewünschte Ergebnis kommt. Stellt man sich dieses Szenario auch noch in einer Umgebung vor, die für hohe Performance und Verfügbarkeit ausgelegt ist (z.B. im Cluster), kommen noch kleinere Hürden wie Persistierung der Sessions und Web Service Paralellität hinzu.</p>
<p>Alles in allem ist meiner Meinung nach &#8211; zumindest für das oben genannte Szenario &#8211; ein zustandsbehafteter Web Service<br />
1. schwieriger zu implementieren<br />
2. keine signifikante Alternative zur Steigerung des Datendurchsatzes<br />
3. mit vielen Hürden bespickt (Session-Manager, Multi-Threading)<br />
4. wesentlich schwerer skalierbar<br />
5. für Clients um ein vielfaches komplexer in der Verwendung</p>
<p>Sofern es also nicht wirklich sehr gute Gründe für die Kontextbezogenheit bestimmter Web Service-Methoden gibt, gilt beim Design von Web Services für mein Dafürhalten die grundlegende Orientierung nach der eigentlichen technologischen Ausrichtung des Web Services &#8211; <strong>stateless</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gmbsg.com/stateful-vs-stateless-web-services/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
