Leistungsfähige AJAX-Sites mit ASP.NET Atlas

Veröffentlicht: 24. Jul 2006
Von Matt Gibbs

Dieser Artikel basiert auf der Vorabversion von ASP.NET "Atlas". Änderungen an allen Informationen in diesem Artikel sind vorbehalten.

Im September 2005 veröffentlichte das ASP.NET-Team die erste CTP (Community Technology Preview) der neuen Features im ASP.NET-Code mit dem Namen "Atlas". Mit dieser Erweiterung von Microsoft® .NET Framework 2.0 können Entwickler vielseitige, interaktive Websites erstellen, die sowohl von Browser- als auch von Serverfeatures profitieren.

Diese durch Atlas eingeführten vielfältigen Entwicklungsmöglichkeiten werden in der Regel als AJAX (Asynchrones JavaScript und XML) bezeichnet. Dabei handelt es sich um eine vergleichsweise neue Abkürzung für die Kombination einiger Technologien, die schon seit geraumer Zeit zur Verfügung stehen. Moderne Browser enthalten das XMLHttpRequest-Objekt, das in JavaScript für Aufrufe zurück an den Server verwendet werden kann. Dadurch kann die Seite auf Benutzereingaben reagieren und Out-of-Band-Vorgänge durchführen ohne die gesamte Seite aktualisieren zu müssen. Dies ist in der Regel ein einfaches Konzept. AJAX-Bibliotheken können jedoch die beschwerliche Aufgabe erleichtern, clientseitigen JavaScript-Code für die Kommunikation mit dem Server und die Behandlung des von einem Webdienst zurückgegebenen XML-Codes zu schreiben.

Das grundlegende Problem, dass AJAX zu lösen versucht, liegt im HTTP-Protokoll selbst. HTTP ist der von Browsern verwendete Standard zur Kommunikation mit Webservern, um Seiten abzurufen und Daten von diesen zurückzugeben. Dieses Protokoll ist statusfrei. Es hängt demnach vom Code auf dem Server ab, ob Benutzereingaben auch nach Aktualisierungen der Seite beibehalten werden. Normalerweise wurde die gesamte Seite aktualisiert, um die Statusinformationen an den Server weiterzugeben. Die Benutzereingabe wurde anschließend im Browser als HTML-Code wiederhergestellt.

ASP.NET verwaltet diesen Prozess automatisch mithilfe eines ausgeblendeten Formularfelds für den Ansichtszustand. Obwohl möglicherweise nur Teile der Seite tatsächlich aktualisiert werden, wird der HTML-Code der gesamten Seite übertragen, und die Anzeige setzt für einen Moment aus. Während der Aktualisierung kann der Benutzer nicht mit der Seite interagieren. Dies ist erst wieder möglich, wenn die neue Ansicht empfangen und im Browser angezeigt wird. AJAX verbessert dieses Verfahren, indem das XMLHttpRequest-Objekt verwendet wird, um Aufrufe zurück an den Server durchzuführen und Webdienste auszuführen, ohne die gesamte Seite zu aktualisieren. Der zu aktualisierende Teil der Seite wird auf Grundlage des empfangenen XML-Codes direkt in JavaScript geändert. Der Benutzer nimmt die Aktualisierung der Seite möglicherweise nicht einmal war und kann die Seite weiter lesen oder mit ihr interagieren, während im Hintergrund die Out-of-Band-Aufgabe asynchron durchgeführt wird.

Auf dieser Seite

Was ist Atlas?

Bei den Atlas-Funktionen von ASP.NET handelt es sich nicht einfach um eine weitere AJAX-Skriptbibliothek zum Schreiben von clientzentrischen Webanwendungen. Atlas baut auf .NET Framework 2.0 auf und fügt Unterstützung zur besseren Nutzung der Möglichkeiten von clientseitigem JavaScript-Code und für das XMLHttpRequest-Objekt hinzu. Atlas enthält serverbasierte Funktionen, die eine Erweiterung vorhandener ASP.NET-Anwendungen erleichtern, sowie eine Clientskriptbibliothek, die von den Atlas-Steuerelementen und -Diensten verwendet wird. Im Architekturdiagramm in Abbildung 1 ist dargestellt, dass sich die Atlas-Architektur über Client und Server erstreckt. Sie sollte als eine umfassende Reihe von Entwicklungstechnologien zum Erstellen vielfältiger, reaktionsfähiger browserübergeifender Webanwendungen betrachtet werden.

ASP.NET Atlas-Architektur
Abbildung 1:ASP.NET Atlas-Architektur

Die durch Atlas ermöglichten Szenarien beschränken sich jedoch nicht auf das Aktualisieren von Seitenbereichen mithilfe eines asynchronen JavaScript-Aufrufs. Sie erhalten zudem zahlreiche clientseitige Möglichkeiten, die ohne Atlas nicht durchführbar wären. Stellen Sie sich beispielsweise eine um Filmdaten aufgebaute Webanwendung vor. Diese Anwendung gestattet es Benutzern möglicherweise, nach einem bestimmten Schauspieler zu suchen. Natürlich wäre es nicht sinnvoll, eine umfassende Dropdownliste mit allen Schauspielernamen bereitzustellen. Daher würde das Problem in der Anwendung möglicherweise aufgegliedert. Die Benutzer können beispielsweise aufgefordert werden, den ersten Buchstaben des Namens auszuwählen. Eine Anforderung an den Server würde eine etwas einfacher zu verwaltende, jedoch kaum benutzerfreundlichere Liste zurückgeben. Die Anwendung kann über ein Textfeld verfügen, in das ein Teil des Namens eingegeben werden kann. Der Server hätte so wenigstens einige Daten, um die Suche einzuschränken. Dies wäre eine geeignetere Methode, die jedoch nach wie vor optimiert werden könnte. Mit Atlas können Sie ein Textfeld bereitstellen, das bei Benutzereingaben dynamisch reagiert, sodass die Suche eingeschränkt werden kann, ohne dass der Browser die gesamte Seite aktualisieren muss. In Abbildung 2 sehen Sie, wie Sie Atlas verwenden können, um ein AutoComplete-Verhalten hinzuzufügen, das während der Benutzereingabe ein Feedback erzeugt.

Filterungskombinationsfeld
Abbildung 2:Filterungskombinationsfeld

Die Atlas CTP kann unter atlas.asp.net heruntergeladen werden. Nach der Installation wird Microsoft Visual Web Developer™ eine weitere Websitevorlage für C# und Visual Basic® .NET hinzugefügt. Beim Erstellen eines neuen Websiteprojekts in Visual Web Developer (klicken Sie auf Datei, Neu und anschließend auf Website) wird ein Dialogfeld wie in Abbildung 3 angezeigt. Die Atlas-Website beinhaltet Microsoft.Web.Atlas.dll und eine aktualisierte web.config-Datei, die die Webanwendung so konfiguriert, dass Atlas-basierte ASP.NET-Funktionen verwendet werden können. In der aktuellen Version befindet sich Microsoft.Web.Atlas.dll als lokale, für die gesamte Anwendung verfügbare Assembly im bin-Verzeichnis der Anwendung.

Erstellen einer Atlas-Website
Abbildung 3:Erstellen einer Atlas-Website

Atlas-basierte Anwendungen können einfach bereitgestellt werden, indem die Dateien von einem Entwicklungscomputer auf einen Server mit ASP.NET 2.0 kopiert werden. Dabei muss Atlas nicht separat installiert werden. Die Installation erfolgt auf Anwendungs- anstatt auf Computerebene. Zukünftige CTP-Versionen können auf Computern mit älteren Atlas-Versionen auch dann verwendet werden, wenn die Funktionen weiterentwickelt und geändert werden. Dadurch erhalten Sie eine größere Flexibilität beim Migrieren zu neueren Versionen als bei einer systemweiten Installation.

Die Atlas-Architektur

Zunächst gilt es beim Atlas-Architekturdiagramm (siehe Abbildung 1) zu beachten, dass die Architektur sowohl den Client als auch den Server umfasst. Mit ASP.NET 2.0 wurden einige zusätzliche Clientfunktionen hinzugefügt, jedoch bei weitem nicht im selben Umfang wie mit Atlas. Auf der rechten Seite des Architekturdiagramms ist zu beachten, dass die Atlas-Serverfunktionen auf ASP.NET 2.0 aufbauen und dessen Möglichkeiten erweitern. Atlas beinhaltet eine Reihe neuer Serversteuerelemente sowie neue Funktionen, mit denen vom Browser auf serverbasierte Daten und Dienste zugegriffen werden kann.

Auf der linken Seite finden Sie eine umfassende Clientskriptbibliothek, die unabhängig von den Serverfunktionen zum Schreiben von clientzentrischem JavaScript-Code verwendet werden kann. Die Atlas-Funktionen verwenden diese Grundlage auf dem Client, um eine vielfältigere Anwendungsentwicklung mit verbesserter Client-Server-Interaktion zu ermöglichen.

In Abbildung 4 finden Sie die herkömmliche Client-Server-Interaktion in einer Webanwendung. Zunächst wird vom Browser eine Seite angefordert, mit der der Benutzer interagiert. Wenn eine Aktion des Benutzers Daten vom Server erfordert, erfolgt eine Aktualisierung der gesamten Seite, um auf Grundlage der Eingabe einen Teil der Seite zu aktualisieren. Leider kann der Benutzer im Rahmen dieses Verhaltens nicht weiter mit der Seite interagieren. Stattdessen muss der Benutzer bei der Arbeit mit der Webanwendung immer wieder Unterbrechungen hinnehmen.

Typische Client-Server-Interaktion
Abbildung 4:Typische Client-Server-Interaktion

Abbildung 5 zeigt, dass eine Client-Server-Interaktion mit Atlas keine Aktualisierung der gesamten Seite erfordert. Stattdessen wird der ursprüngliche HTML-Code angefordert, und folgende Aufrufe an den Server geben aktualisierte Daten in XML, JSON- (JavaScript Object-Notation) oder HTML-Ausschnitten zurück, um die Seite schrittweise zu aktualisieren. Die asynchronen Aufrufe im Hintergrund können Webdienste auslösen oder Seitenänderungen abrufen, ohne dass der Benutzer den Eindruck gewinnt, unterbrochen zu werden. Diese asynchronen Aufrufe verwalten aktualisierte Ansichtszustandsinformationen für folgende Serverdatenrückgaben, sodass bei einer erforderlichen Aktualisierung einer vollständigen Seite deren exakter Status an den Server übergeben wird.

Client-Server-Interaktion mit Atlas
Abbildung 5:Client-Server-Interaktion mit Atlas

Die Clientskript-Kernbibliothek

Die Atlas-Clientskriptbibliothek wird dem Server in verschiedenen Teilen übermittelt. Der Skriptkern besteht aus den unteren Ebenen, auf denen die übrige Bibliothek aufgebaut wird. Die Browserkompatibilitätsebene bildet die Basis. Eine Hauptfunktion von Atlas ist die Möglichkeit, in modernen Browsern ausgeführt werden zu können, die die Schlüsselelemente von AJAX unterstützen. In den CTP-Builds umfasst dies die Browser Mozilla Firefox, Apple Safari und Microsoft Internet Explorer®. Bei der Browserkompatibilitätsebene handelt es sich um eine abstrakte Ebene, auf der sich Skripts einfacher schreiben lassen. Dabei werden die unterschiedlichen Browserimplementierungen übergangen. Außerdem ermöglicht sie eine einfache Erweiterung der Atlas-Unterstützung für weiterentwickelte Browser und neue Versionen. Die Art des anfordernden Browsers legt automatisch fest, welche browserspezifischen Teile der Kompatibilitätsebene verwendet werden. Der Code übergeordneter Ebenen wurde in der Abstraktionsebene geschrieben, sodass Sie keinen Code für unterschiedliche Browserimplementierungen schreiben müssen.

In der Kompatibilitätsebene oben befindet sich das Kerntypsystem. Das Typsystem ermöglicht einen objektorientierten Ansatz bei der JavaScript-Entwicklung. Dadurch erhalten Entwickler in JavaScript die Möglichkeit, Namespaces zu erstellen und diesen Klassen hinzuzufügen. Außerdem wird Objektvererbung simuliert. Es ist eine Unterstützung für Schnittstellen, Delegierungen und Enumerationen vorhanden, die auf dem Server das Vor- und Zurückgehen im Entwicklungscode in einer objektorientierten Programmiersprache (z. B. C#) ebenso erleichtert, wie das Schreiben von JavaScript-Code auf dem Client.

Die dem Typsystem übergeordnete Basisklassen-Bibliotheksebene vervollständigt den Kern der Clientskriptbibliothek. Das Konzept ist .NET Framework entlehnt und weist einige vertraute Typen auf. So ist ein Event-Objekt vorhanden, das in JavaScript ein natürliches Multicasting von Ereignissen ermöglicht. Außerdem ist ein StringBuilder-Objekt verfügbar. Zudem wird Objektserialisierung unterstützt, einschließlich Unterstützung für JSON- und XML-Daten. Die Basisklassenbibliothek beinhaltet außerdem die Klassen WebRequest und WebResponse, die über das XMLHttpRequest-Objekt des Browsers eine ähnliche Abstraktion ermöglichen, wie der System.Net-Namespace in .NET Framework. Der Code in Abbildung 6 zeigt auf, wie mithilfe des Atlas-Skriptkerns in JavaScript zwei einfache Typen erstellt werden. Der zuerst erstellte Typ Movie legt sowohl Eigenschaften für den Filmtitel und das Genre offen als auch eine toString-Methode. Der Typ Drama erweitert anschließend den Typ Movie und überschreibt die Methode toString.

Die Seite, die die Typen Movie und Drama verwendet, finden Sie in Abbildung 7. Zunächst wird auf die JS-Datei verwiesen, in der die Typen in einem Atlas ScriptManager-Steuerelement definiert werden. Anschließend erstellt die Seite in den Click-Handlern Instanzen der Typen Movie und Drama und ruft deren toString-Methoden auf. Das Vererbungsverhalten wird von jeder objektorientierten Programmiersprache erwartet, der ausgeführte Code ist jedoch dynamischer JavaScript-Code. Ein weiterer positiver Aspekt der aktuellen Atlas-Installation sind die für eine erleichterte Fehlerbehebung und das Debugging integrierten Debugversionen der Clientskriptbibliothek. Das Debuggen von JavaScript war bisher immer umständlich, möglicherweise wird es nun etwas einfacher.

Clientskript-Steuerelemente und -komponenten

Oberhalb der Ebenen, die den Kern der Clientskripts der Atlas-Architektur bilden, befinden sich die Ebenen des Komponentenmodells und der Steuerelemente. Dieser Teil der Skriptbibliothek baut auf dem zugrunde liegenden Skriptkern auf, wird im Client jedoch separat dargestellt. Sie können beim Schreiben von Skripts die Komponentenebene auslassen und stattdessen lediglich das JavaScript-Typsystem und die Basisklassenbibliothek direkt verwenden. Dadurch verfügen Sie jedoch nicht über den Zugriff auf die Clientkomponenten von Atlas und können daher kein XML-Skript verwenden, bei dem es sich um eine Reihe neuer deklarativer Elemente handelt, die im Seitenmarkup enthalten sind, das an den Browser gesendet wird. Die XML-Skriptelemente befinden sich in einem Skripttag, das den neuen Typwert verwendet:

<script type="text/xml-script">

Zusätzliche Elemente im Markup können mithilfe des Skripttags aktiviert werden. Der Browser erkennt das Skriptelement zwar, kann jedoch den Skripttyp text/xml nicht verarbeiten. Die Atlas-Skriptbibliothek kann dann die im Skripttag selbst enthaltenen Elemente verarbeiten. Das Markup wird von der Komponentenebene der Clientskriptbibliothek verarbeitet. Das XML-Skript wird auf dem Client verarbeitet, um Instanzen von Komponenten und Steuerelementen zu erstellen. Es kann Eigenschafteneinstellungen der darin definierten Komponenten und Steuerelemente enthalten. Außerdem können Bindungen zwischen diesen und den HTML-Elementen an anderen Stellen der Seite deklariert werden. Die XML-Skriptelemente können außerdem Webdienstressourcen deklarieren und diese anschließend an anderer Stelle im Markup als Datenquellen referenzieren. In der Beispielseite in Abbildung 8 wird XML-Skript für eine Deklaration verwendet, anhand derer der einem Jahr zugeordnete Filmname als Popupelement angezeigt wird, wenn der Mauszeiger über dem Jahr positioniert wird.

Die Seite in Abbildung 8 enthält für die Anzeige eines Jahres ein DIV-Element und ein SPAN-Element zur Anzeige des Filmnamens, das jedoch als ausgeblendet deklariert ist. Im XML-Skript wird dem Namen ein popupBehavior zugeordnet, das durch ein dem Jahr zugeordnetes hoverBehavior ausgelöst wird. Der Code für popupBehavior ist in der Komponenten- und Steuerelementebene der Atlas-Skriptbibliothek enthalten. Das XML-Skript lässt sich im Vergleich zu dem gewöhnlich in einer Seite enthaltenen JavaScript-Code einfach untersuchen. Dies gilt insbesondere dann, wenn Code aufgeteilt wird, um mit mehreren Browserimplementierungen umgehen zu können. Die deklarative Syntax (wie z. B. im XML-Skript in Abbildung 8) kann in Entwicklungstools einfach erstellt und verwendet werden. Die Atlas-Serversteuerelemente erstellen XML-Skript, um beim Ausführen der Seite eine größere Benutzerfreundlichkeit zu erzielen. Ein großer Teil des in einer Atlas-Anwendung verwendeten XML-Skripts ist weder jemals direkt in der ASPX-Datei vorhanden, noch muss er von den meisten Entwicklern manuell erstellt werden.

Die vielfältigen, in Atlas CTP enthaltenen Verhaltensweisen verbessern die Benutzerfreundlichkeit. Das Fortschrittsverhalten kann darüber informieren, dass sich ein nicht abgeschlossener Vorgang im Hintergrund befindet. Das Klick-, Hover- und Popupverhalten ermöglicht eine vielfältigere Benutzerinteraktion. Diese Verhaltensweisen können den HTML-Elementen einer Seite mithilfe von XML-Skript auf einfache Weise deklarativ zugewiesen werden. Da die Verhaltensweisen selbst in JavaScript implementiert sind, besteht die Möglichkeit komplexerer Verhaltensweisen. Deren seitenübergreifende Verwendung muss jedoch über XML-Skript erfolgen.

Serversteuerelemente

Durch die in Atlas CTP enthaltenen Serversteuerelemente kann die bei der Seitenrückgabe entstehende Unterbrechung leicht vermieden werden. Der Benutzer kann weiter mit der Seite interagieren, während die Darstellung der Steuerelemente im Hintergrund aktualisiert wird. Um dies zu ermöglichen, arbeiten zwei Serversteuerelemente zusammen. Diese können vorhandenen Seiten hinzugefügt werden, um erheblich bessere Ergebnisse zu erzielen. Das Steuerelement ScriptManager ändert das Clientrückgabeverhalten, während das Steuerelement UpdatePanel auf dem Server den Seitenlebenszyklus verwaltet, um die Änderung zu ermöglichen.

Das Steuerelement ScriptManager muss auf allen Seiten enthalten sein, die Atlas-Funktionen verwenden. Es koordiniert, welcher JavaScript-Code an den Client gesendet wird. Serversteuerelemente können JavaScript-Code für den Client bereitstellen und für dessen Verarbeitung das Steuerelement ScriptManager nutzen. Das Steuerelement ScriptManager nutzt die neue, vom Steuerelement implementierte Schnittstelle IScriptComponent. Das Steuerelement ScriptManager bietet außerdem die Unterstützung für die den XML-Skriptelementen zugewiesenen Komponentenskriptbibliotheken.

Wenn die Eigenschaft EnablePartialRendering des Steuerelements ScriptManager auf TRUE gesetzt wird, führt dies zu einem neuen Verhalten bei Datenrückgaben vom Client:

<atlas:ScriptManager EnablePartialRendering="true" runat="server" />

Das Datenrückgabeverhalten wird so geändert, dass eine Anforderung ohne Unterbrechung der Benutzerinteraktion auftreten kann. Die zum Beibehalten der Steuerelementinformationen zwischen zwei Anforderungen erforderlichen Ansichtszustandsinformationen werden für die partiellen Darstellungsanforderungen beibehalten. Der HTML-Code der zu aktualisierenden oder zu ändernden Bereiche wird mithilfe einer Interaktion von JavaScript mit dem Dokumentobjektmodell (DOM) des Browsers aktualisiert. Die Seitenbereiche, für die partielle Aktualisierungen möglich sein sollen, können auf der ASP.NET-Seite mithilfe des Steuerelements UpdatePanel festgelegt werden.

Das Steuerelement UpdatePanel teilt dem ScriptManager mit, welche Bereiche der Seite unabhängig vom Rest der Seite aktualisiert werden sollen. Wenn eine Aktion im Browser zu einer Datenrückgabe für diesen Seitenbereich führt, werden die Formulardaten gesendet, und auf dem Server beginnt der Seitenlebenszyklus. Da die Datenrückgabe vom Skript asynchron im Hintergrund initiiert wird, wird die Seite dem Benutzer nach wie vor angezeigt. Auf dem Server wird der Steuerelementzustand aus den vom Client gesendeten Ansichtszustandsdaten wiederhergestellt. In der Darstellungsphase isoliert das Steuerelement ScriptManager die Darstellung des UpdatePanel-Bereichs, dessen Darstellung aktualisiert wird, um sie an den Browser zurückzusenden. Die Ansichtszustandsdaten werden ebenfalls erfasst und neben dem HTML-Code als Teil der Antwort zurückgegeben. Das Skript ersetzt anschließend im Browser den HTML-Code entsprechend der vorherigen Darstellung der UpdatePanel-Inhalte durch den neuen HTML-Code.

Das Steuerelement UpdatePanel kann Elemente für Triggers und ContentTemplate enthalten:

<atlas:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
        ...
    </Triggers>
<ContentTemplate>
        ...
</ContentTemplate>
</atlas:UpdatePanel>

Der Bereich innerhalb von ContentTemplate wird aktualisiert, wenn das Steuerelement ScriptManager eine asynchrone Datenrückgabe ausführt. Das Element Triggers kann die Elemente ControlEventTrigger und ControlValueTrigger enthalten. Mithilfe der Triggerelemente können Seitenentwickler bestimmte Änderungen festlegen, die zum Aktualisieren des Bereichs führen sollen. Dadurch können Steuerelemente außerhalb des Steuerelements UpdatePanel die Änderungen verursachen, ohne dass diese direkt im Steuerelement UpdatePanel enthalten sein müssen. Außerdem kann so mithilfe einfacher Deklarationen das Seitenverhalten und das Steuerelement UpdatePanel gesteuert und festgelegt werden, wann neue Daten abgerufen werden.

Auf einer Seite können mehrere UpdatePanel-Steuerelemente mit verschiedenen Triggern platziert werden, so dass diese unabhängig voneinander aktualisiert werden. Die Inhalte des UpdatePanel-Steuerelements können auf das Minimum für eine Antwort auf bestimmte Benutzereingaben reduziert werden. Mithilfe des Steuerelements UpdatePanel kann eine vorhandene ASP.NET-Seite ohne wesentliche Änderungen reaktionsfähiger werden.

Webdienste

Webanwendungen werden für dienstorientierte Architekturen entworfen. Der Zugriff auf Dienste über den Browser ist von zentraler Bedeutung für interaktive Anwendungen. Durch Atlas stehen zwei verschiedene Dienstarten zur Verfügung. Das Steuerelement ScriptManager verwendet für Webdienstverweise zwei automatisch generierte Proxys:

<atlas:ScriptManager EnablePartialRendering="true" runat="server">
    <Services>
        <atlas:ServiceReference GenerateProxy="true" 
         Path="~/nominees.aspx" Type="Custom"
    </Services>
</atlas:ScriptManager>

Komponenten auf dem Client können die Webdienste anschließend direkt aus einem Skript heraus aufrufen. Webdienste sind außerdem an Steuerelemente gebunden, um vielfältigere Verhaltensweisen zu ermöglichen. So kann AutoCompleteBehavior beispielsweise im XML-Skript für die Verwendung eines Webdienstes zum Abrufen der relevanten Möglichkeiten definiert werden (siehe Abbildung 9).

Das Verhalten ist einem Seitenelement zugewiesen und erweitert dessen Verhalten. Sobald es im ASPX-Markup festgelegt wurde, wird es als Extender bezeichnet. AutoCompleteBehavior kann mithilfe eines AutoCompleteExtender-Steuerelements einem Element zugewiesen werden. Anstatt das XML-Skript direkt zu schreiben, wird der Extender einem Steuerelement auf dem Server zugeordnet. Das Verhalten des Steuerelements wird dann erweitert, indem das entsprechende XML-Skript dargestellt wird, um das Verhalten auf dem Client zu erhalten. Beim Aufrufen von Webdiensten werden die Aufruf- und Rückgabeergebnisse in der Regel in XML übertragen. Atlas unterstützt außerdem das Serialisieren der Daten von Webdiensten in JSON, sodass ein Teil des XML-eigenen Overheads entfällt. Die JSON-Daten können im Browser direkt in JavaScript-Objekte deserialisiert werden. Atlas unterstützt das Serialisieren komplexerer verwalteter .NET-Typen vom Server in die entsprechenden JavaScript-Objekte im Browser. Dadurch wird die Aufgabe vereinfacht, vom Browser auf Webdienste zuzugreifen.

Die Verwendung von Webdiensten vom Browser aus erstreckt sich von benutzerdefinierten Webdiensten, die Teil der Anwendung sind, auf ASP.NET-Anwendungsdienste. Atlas ermöglicht die Verwendung des Formularauthentifizierungsdiensts direkt von JavaScript aus:

Sys.Services.AuthenticationService.login(
    username, password, completionFunction);

Der Benutzer muss nicht an eine Anmeldeseite und anschließend zur ursprünglichen Seite weitergeleitet werden. Der HTML-Code kann dynamisch geändert werden, wenn der Benutzer Anmeldeinformationen bereitstellt. Die auf den ASPX-Seiten vorhandenen Profildaten sind auch über einen Webdienstaufruf verfügbar. Das Speichern und Abrufen von auf dem Server gespeicherten Profildaten wird über ein JavaScript-Objekt unterstützt.

Die von einer Anwendung verwendeten Webdienste befinden sich nicht immer auf demselben Hostserver. Sie befinden sich möglicherweise nicht einmal alle in derselben Domäne. Der Browser lässt Aufrufe über XmlHttpRequest nur für die Domäne zu, aus der die Seite stammt. Diese Einschränkung kann intelligent umgangen werden, indem ausgeblendete IFrame-Objekte verwendet werden, um untergeordnete Anforderungen zu initiieren. Dieser Ansatz ist jedoch bestenfalls umständlich. Atlas stellt für dieses Szenario Webdienstüberbrückung zur Verfügung. Der Client kann einen Webdienstaufruf an eine andere Domäne initiieren. Der Aufruf wird an die ursprüngliche Atlas-Anwendung gesendet, die die Anforderung dann für den Benutzer an den Zielserver weiterleitet und das Ergebnis auf dem Client serialisiert. Atlas kann auch IFrame-Techniken verwenden, um direkt mit anderen Domänen zu kommunizieren.

Schlussbemerkung

Atlas bietet eine ganze Reihe von Funktionen zum Erstellen vielfältigerer Webanwendungen. Die Clientskriptbibliothek vereinfacht das Schreiben von JavaScript-Code und bietet Konstrukte für einen objektorientierten Ansatz zum Schreiben von JavaScript-Code. Die Webdienstfunktionen ermöglichen einen einfachen Zugriff auf Remotedienste und lokale Dienste. Die Serialisierung komplexer Typen vereinfacht die Nutzung vielfältiger Typen sowohl vom Client als auch vom Server aus. Serversteuerelemente nutzen die Vorteile der Clientskriptbibliothek, sodass vorhandene und neue Anwendungen die bei heutigen Webanwendungen üblichen Unterbrechungen deutlich reduzieren.

Neue CTP-Builds werden etwa monatlich veröffentlicht und enthalten Korrekturen, Änderungen und neue Funktionen. Letztendlich soll Atlas in die nächste Version von .NET Framework mit Entwurfszeitunterstützung in Visual Studio integriert werden. Für die nahe Zukunft hat Microsoft eine eingeschränkte Lizenz angekündigt, die eine Bereitstellung von Atlas auf Live-Sites sowie die Nutzung der Vorteile in Webanwendungen ermöglicht. Weitere Informationen und eine Downloadmöglichkeit der aktuellen Atlas CTP-Version finden Sie unter atlas.asp.net.

Der Autor

Matt Gibbs ist Leiter der Entwicklungsabteilung des ASP.NET-Teams bei Microsoft. Er ist Mitverfasser mehrerer Bücher zu ASP, mobilen Steuerelementen und ASP.NET. Er kann unter mattgi@microsoft.com (in englischer Sprache) erreicht werden.

Aus der Ausgabe Juli 2006 des MSDN Magazine.