Microsofts .Net: Werkstatt für Web-Services

Schulungsaufwand nicht unterschätzen

10.12.2001
Mit .NET liefert Microsoft endlich eine brauchbare Plattform für die Entwicklung verteilter Anwendungen. Doch die Einarbeitung in die Technik ist nicht trivial. von Thomas Erbrich*

Die Entwickler von Anwendungssoftware müssen umdenken - der Trend hin zu verteilten, Internet-basierten Lösungen verstärkt sich zunehmend. Ihre Vorteile sind verlockend: Sie sind 24 Stunden am Tag auf der ganzen Welt verfügbar, kommen ganz ohne Installation beim Anwender aus und erlauben es, einfach über das Internet mit dem Handy oder PC auf alle relevanten Daten zuzugreifen. So interagieren heterogene Anwendungen im globalen Netzwerk für die Abwicklungen eines Geschäftsprozesses miteinander. Um solche Visionen Realität werden zu lassen, sind die bisherigen Verfahren nicht ausreichend. Microsofts Antwort auf die Herausforderungen heißt .NET.

Microsoft .NET ist eine Plattform zur Entwicklung und zum Betrieb verteilter Anwendungen. Obwohl sich damit auch klassische Windows-Anwendungen schreiben lassen, ist das Ziel doch klar die Entwicklung Internet-basierender Lösungen. Da das Internet mit dem HTTP-Protokoll keine permanent gehaltenen Verbindungen kennt, sind Microsofts verbindungsorientiertes Protokoll Distributed Component Object Model (DCOM) oder die Common Object Request Broker Architecture (Corba) der OMG für Web-Anwendungen eigentlich ungeeignet. So basiert .NET auch nicht mehr auf COM oder DCOM - obwohl es weitgehende Interoperabilität dazu bietet -, sondern fußt fast vollständig auf Internet-Standards. Das Konzept der Status- und Verbindungslosigkeit durchdringt die Architekturen des .NET-Frameworks bis in den Kern.

Von Windows zum Web

Das Framework .NET ist nicht an Windows als Betriebssystem gebunden, sondern lässt sich, ähnlich wie Java, prinzipiell auf beliebigen Betriebssystemen implementieren. Die Anwendungen laufen somit auf jedem System, auf dem die Runtime-Umgebung von .NET, die Common Language Infrastructure (CLI), zur Verfügung steht. Unter anderem ist schon eine Portierung auf BSD Unix angekündigt. Zusätzlich zur Unabhängigkeit vom Betriebssystem bietet das .NET-Framework weitgehende Unabhängigkeit von Programmiersprachen. Bei Erscheinen von .NET sollen laut Microsoft über 20 Programmiersprachen dafür zur Verfügung stehen. Damit ist der Schritt von Windows zu .NET mindestens so bedeutsam (und groß) wie damals der Wechsel von DOS nach Windows.

Viele Altlasten der Windows-Programmierung machen den Entwicklern bis heute das Leben schwer. So ist die API Win32 inzwischen recht unhandlich, die Registry bringt Probleme für die Verteilung von Anwendungen, die DLLs widersetzen sich einer effizienten Versionierung (bekannt als "DLL Hell"), das Speicher-Management ist die Quelle so mancher Schutzverletzung, und die hohe Komplexität der COM-Programmierung reduziert die Produktivität von Entwicklern erheblich.

Innerhalb der Windows-Entwicklung sind diese Probleme schon sehr ärgerlich, für die Erstellung von hoch verfügbaren Internet-Anwendungen bedeuten sie doch das Aus. Damit soll .NET nun gründlich aufräumen. Hier stellt eine objektorientierte Klassenbibliothek allen Programmiersprachen eine saubere Schnittstelle zum System zur Verfügung. Statt der Registry ist

Entwickler werden entlastet

nun "XCopy Deployment" (Installation durch einfaches Kopieren von Dateien) angesagt. .NET-Komponenten, so genannte Assemblys, lassen sich zugleich in verschiedenen Versionen installieren. Die Laufzeitumgebung stellt sicher, dass bei einem Programmstart die jeweils passende Version geladen wird. Abstürze durch unpassende DLL-Versionen gehören damit hoffentlich der Vergangenheit an. Ähnlich wie schon in Java- und anderen objektorientierten Systemen entlastet automatische Speicherverwaltung (Garbage Collection) den Entwickler und verhindert so die berüchtigten Schutzverletzungen in den Anwendungen. Komponenten lassen sich in jeder Sprache schreiben und aus jeder Sprache direkt nutzen. Der Umweg über COM und dessen komplizierte und fehleranfällige Programmierung entfällt damit. Gerade Entwickler, die mit mehreren Programmiersprachen arbeiten, werden entlastet, da sie nur noch mit einer Laufzeit- und Entwicklungsumgebung zu tun haben. Selbst sprachübergreifende Vererbung ist direkt möglich.

Eine der wesentlichen Neuerungen sind Web-Services. Dabei handelt es sich um Komponenten, die sich über das XML-basierte Protokoll Simple Object Access Protocol (Soap) ansprechen lassen. Ein besonderer Vorteil von Soap ist seine Programmiersprachen-, Plattform- und Herstellerunabhängigkeit. Dadurch kann man Web-Services in jeder Sprache auf jeder Plattform erzeugen und aufrufen. Da SOAP auch das HTTP-Protokoll unterstützt, eignen sich Webservices sehr gut für Internet-basierte Anwendungen.

Web-Services kann man wie Web-Seiten über einen Internet-Server ansprechen; sie sind damit global verfügbar. Daher verwundert es nicht, dass diese neue Technologie Unterstützung so wichtiger Firmen wie IBM, Oracle, Sun und natürlich Microsoft findet, scheinen hiermit doch endlich Lösungsansätze für heterogene B-to-B-Szenarien möglich. Das .NET-Framework vereinfacht nicht nur das Entwickeln und Abrufen von Web-Services, Microsoft stellt darüber hinaus mit "Hailstorm" als Bestandteil der .NET-Plattform auch eine Grundmenge von Diensten zur Verfügung. Sie reichen von Benutzer-Authentifizierung (Passport) bis zum globalen Kalender.

Diese Komponenten lassen sich, glaubt man den Redmondern, mit Hilfe ihrer offenen Schnittstelle in jede Anwendung integrieren. Dabei wird klar, dass solche Web-Services nicht nur interessante technische Aspekte besitzen, sondern auch gänzlich neue Vermarktungsmöglichkeiten eröffnen. So soll es künftig verschiedene Lizenzmodelle für Hailstorm geben: vom kompletten Betrieb im eigenen Firmennetz über ein Abonnement bei Microsoft bis hin zum Bundling mit Handy-Verträgen sei alles möglich, heißt es.

Am Beispiel Soap wird deutlich, wie wichtig Standards für verteilte Internet-Anwendungen sind. Bisher konnte Microsoft proprietäre Softwaretechnik wie DCOM dank der Marktpräsenz von Windows leicht durchsetzen. Im heterogenen Internet ist aber kein Hersteller in der Lage, seinen eigenen Standards Geltung zu verschaffen. Diese Tatsache konnte auch Microsoft nicht länger ignorieren und hat mit .NET eine deutliche Kurskorrektur vorgenommen. Die Plattform setzt fast gänzlich auf Standards wie HTTP, HTML, XML und Soap auf, während DCOM als Protokoll gar nicht mehr unterstützt wird.

Normierung läuft noch

Allerdings haben noch nicht alle verwendeten Verfahren ihren Standardisierungsprozess abgeschlossen. Die Flexibilität des .NET-Frameworks soll es jedoch jederzeit erlauben, die jeweils aktuellste Norm zu unterstützen, ohne dass man den Quellcode bestehender Anwendungen ändern muss. So basierte die .NET Beta 1 noch auf XML-Schemata (XSD) von 1999, während die Beta 2 schon auf der verabschiedeten Norm von 2001 fußt.

Aber Microsoft hat auch große Teile des .NET-Frameworks selbst zur Normierung eingereicht. So liegen die neue Programmiersprache C# und die Common Language Infrastructure (CLI) bei der ECMA zur Standardisierung vor. Das ermöglicht nicht nur Dritten die Portierung auf andere Plattformen, sondern setzt auch Sun unter Druck, das sich bisher jeder Standardisierung von Java verweigert.

Wirklich neue Technologie birgt das .NET-Framework nicht. Seine Stärke liegt vielmehr darin, bekannte Ansätze zu integrieren und konsequent fortzuführen. Ein gutes Beispiel dafür ist die neue Programmiersprache C#, die einerseits von C++ abstammt, aber andererseits eher eine Weiterentwicklung von Java darstellt. C# "erbt" von Java die Einfachheit und Eleganz, erweitert aber dessen Funktionalität und bietet einen noch konsequenter objektorientierten Ansatz. Von C++ stammen Sprachkonstrukte wie das Überladen von Operatoren und Zeigen, jedoch ohne deren Komplexität und Fehleranfälligkeit.

Auch seine bewährten Active Server Pages (ASPs) hat Microsoft weiterentwickelt - zu ASP.NET. Damit steht jetzt ein vollständig objektorientiertes Modell zur Verfügung, das die Trennung von Programmcode und Oberfläche unterstützt. Dabei werden sogar die verschiedenen Browserprodukte vom Netscape Navigator über den Internet Explorer bis hin zu WAP-Handys mit ein und demselben Quellcode unterstützt, was die Wartbarkeit der Software verbessert.

Neben Web-Seiten lassen sich natürlich auch Web-Services bereitstellen und abrufen. Dazu kann man jede .NET-Programmiersprache verwenden, und die Ausführungsgeschwindigkeit steigt, da jetzt alles kompiliert wird - einschließlich serverseitigem JScript-Code.

Die Datenbankschnittstelle ADO (Active Data Objects) hat in der Version ADO.NET ebenfalls zugelegt. Sie kommt jetzt mit verschachtelten Strukturen zurecht und bietet eine ausgefeilte XML-Schnittstelle. Nun ist es möglich, datenbankunabhängige Tabellenstrukturen in XML zu überführen und umgekehrt. Zur Definition der XML-Strukturen dienen dabei XML-Schemata (XSD) entsprechend dem aktuellen W3C-Standard.

Sicherheit im Web

An der Erweiterung des rollenbasierten Sicherheitssystems kann man erkennen, wie konsequent .NET darauf abzielt, Anforderungen von Internet-Anwendungen zu unterstützen. Als Neuerung gibt es die so genannte Security by Evidence. Sie dient dazu, Zugriffsrechte nicht nur von der Rolle des Anwenders abhängig zu machen, sondern auch von der Art und Weise des Zugriffs. So lassen sich etwa verschiedene Sicherheitsrichtlinien für Anfragen aus dem Firmennetz und dem Internet definieren. Rechte können sogar davon abhängen, welches konkrete Programm zugreift. Dies ist vor allem für Web-Services sinnvoll, bei denen, im Gegensatz zu Web-Seiten, eine Anwendung als Client fungiert.

Eine andere wesentliche Neuerung stellt die Verwendung von Attributen dar. Sie wurden bereits in COM+ eingesetzt, etwa um Transaktionen zu steuern. Doch lassen sich im Gegensatz zu COM+, wo wenige fest definierte Attribute Verwendung finden, bei .NET beliebige Attribute selbst definieren.

Das .NET-Framework selbst benutzt Attribute zur Automatisierung komplexer Aufgaben. Wird zum Beispiel in einem Web-Service eine Methode mit dem Attribut "Web Method" gekennzeichnet, sorgt das .NET-Framework automatisch dafür, dass sich diese Methode über einen Soap-Aufruf ansprechen lässt. Dabei werden auch die notwendige Servicebeschreibung und sogar eine HTML-Testseite dynamisch generiert. Über die Common Language Infrastructure stehen diese Funktionen allen .NET-Programmiersprachen in Form von Klassen zur Verfügung. Daher lassen sich Erweiterungen und Anpassungen leicht durch Ableitung vornehmen.

Ohne die passende Entwicklungsumgebung nutzt die beste Softwaretechnologie nicht allzu viel. Microsoft hat daher das bekannte Toolset "Visual Studio" für eine .NET-Version generalüberholt. Das Resultat - Visual Studio .NET - bildet die zentrale Schaltstelle für den gesamten Entwicklungsprozess. Ob UML-Design, Bearbeiten von Datenbanken, Entwurf von XML-Schemata, Gestaltung von HTML-Seiten, C#- oder VB-Codierung, Einsatz der Hilfe oder die Fehlersuche, alles kann direkt aus Visual Studio .NET erfolgen. Dabei erleichtern die Hilfe und die Kontextmenüs eine Einarbeitung in die Funktionen des .NET-Frameworks.

Unter Visual Studio .NET geht die Entwicklung einer Browser-unabhängigen Internet-Anwendung in C# einfacher von der Hand als die Erstellung einer Visual-Basic-Windows-Programms mit "Visual Studio 6.0". HTML-Elemente lassen sich mit Drag and Drop in den Designer ziehen, ein Doppelklick auf einem Element öffnet automatisch das entsprechende Quellprogramm. Alle Elemente lassen sich dabei direkt als Objekte aus dem Code ansprechen. Dies führt zu einem ähnlichen Programmiermodell, wie es für Windows-Client-Server-Anwendungen üblich ist. Das erleichtert zwar den Umstieg, birgt aber die Gefahr, die spezifischen Probleme verteilter Internet-Anwendungen, etwa Zustandslosigkeit, zu übersehen.

Visual Studio .NET bietet auch einen Rahmen für diverse Erweiterungen, etwa zusätzliche Programmiersprachen oder beliebige Plugins anderer Hersteller. Aber auch der Entwickler selbst kann Visual Studio erweitern, zum Beispiel durch eigene Oberflächenelemente. Dabei genügen die Ableitung von einer entsprechenden Basisklasse und die Definition neuer Eigenschaften, die dann direkt in Visual Studio .NET zur Verfügung stehen.

Umstieg lohnt sich

Bei der Anwendungsentwicklung bringen Visual Studio .NET und das .NET-Framework hohe Produktivität. Der Entwickler wird in jeder Phase seiner Arbeit durch Werkzeuge und Funktionen unterstützt. Heute erkennt man an vielen Stellen noch den Beta-Charakter des .NET-Frameworks. Bei seiner Veröffentlichung dürfte es eine der leistungsfähigsten Plattformen zur Erstellung verteilter Internet-Anwendungen darstellen.

Doch der Umstieg auf die neue Welt hat seinen Preis: Der Entwickler muss mit erheblichem Einarbeitungsaufwand rechnen. Es gilt nicht nur, neue Programmiersprachen wie C# und VB.NET zu lernen, sondern auch der Umgang mit der neuen Laufzeit- und Entwicklungsumgebung muss geübt werden. Dies dürfte trotz der intelligenten Hilfestellungen von Visual Studio .NET viel Zeit kosten. Obendrein lassen sich wohl nur wenige Erfahrungen und Quelltexte aus der COM-Programmierung direkt in .NET übernehmen. Trotzdem: Der Umstieg lohnt allein durch die signifikante Erhöhung der Produktivität, die ja schließlich zu erheblichen Kostensenkungen und einem kürzeren Time-To-Market führt.

* Thomas Erbrich ist technischer Geschäftsführer bei der New Line Software Development GmbH in Frankfurt am Main.

Das ist .NET

Der Begriff ".NET-Plattform" steht nicht nur für eine neue Technologie oder ein neues Framework, sondern für eine ganze Produktpalette und eine neue Strategie und Ausrichtung von Microsoft. Stand bisher Windows im Zentrum, so ist jetzt das Internet im Brennpunkt.

Die .NET-Plattform besteht aus vier Teilen, in die sich fast alle Microsoft-Produkte und -Dienstleistungen einordnen lassen.

.NET-Framework

Das Framework ist das Herz von .NET. Es enthält die Laufzeitumgebung (CLI), verschiedene Compiler und Visual Studio .NET

.NET Enterprise Server

Alle Server-Produkte von Microsoft wie Windows 2000 Server, SQL Server 2000 oder Biztalk Server fügen sich in das .NET-Konzept. Sie bilden die Basis und bieten die Dienste für Internet-Anwendungen.

.NET Foundation Services

Die Foundation Services sind Web-Services, die von Microsoft betrieben werden. Unter dem Namen Hailstorm soll eine Grundmenge von Diensten erhältlich sein.

.NET Device Software

Die Device Software dient zur Unterstützung einer breiten Palette von mobilen Endgeräten. Dies erfolgt entweder über das Mobile SDK, welches das Erzeugen von WAP-Seiten unterstützt, oder über das .NET Compact Framework, das eine Untermenge des vollständigen Frameworks in ca. 1 MB Speicher realisiert und es damit auch auf Kleinstgeräten implementierbar machen soll.