AJAX-Technologie im Detail am Beispiel der Atlas CTP

Die Seite wird erstellt Gerd Engel
 
WEITER LESEN
AJAX-Technologie im Detail am
         Beispiel der Atlas CTP
     Adam Dyrbusch, Zhixuan Ding und Marc Schanne {dyrbusch|ding|schanne}@fzi.de

                                                eren Leser wird so ein Einstieg zum
1. Motivation                                   Vergleich der im Markt verfügbaren
Asynchronous JavaScript and XML                 AJAX-Rahmenwerke und Tools geboten
(AJAX) bestimmt als Buzzword derzeit            und der Einsteiger findet in einem kleinen
alle Veröffentlichungen rund um die Zu-         Beispiel (vgl. Abbildung 1) die Möglich-
kunft des World Wide Web. Ist es die Re-        keit erste eigene Erfahrungen zu sammeln.
volutionierung des bestehenden Web, ein         Da mit Nutzung der AJAX-Technologie
von Jesse James Garrett [1] und anderen         ein veränderter Entwurf von Webseiten
Web-Entwicklern geprägtes Akronym, die          und Präsentationsschichten geschäftlicher
Bezeichnung für ein neues Kommun-               Applikationen möglich wird, ist dies die
ikationskonzept bei der Entwicklung dyn-        Voraussetzung für zukunftssicheres Soft-
amischer Webseiten, eine notwendige             waredesign. Diese Entwicklung erfordert,
Technik für Web 2.0 oder doch nur ein           zusammen mit anderen aktuellen Hype-
alter Dynamic HTML Hut?                         Themen des Internets, wie z.B. der Um-
Der AJAX-Boom des letzten Jahres macht          gestaltung von Geschäftssoftware-Applika-
viele Web-Nutzer etwas ratlos und dieser        tionen mit Webservices, einen veränderten
technische Bericht will etwas Licht ins         Softwareentwurf. Die Nutzung von ob-
Dunkel der AJAX-Technologie und die             jektorientierten Konzepten und Entwurfs-
zugrunde liegenden Mechanismen und              mustern bei der Entwicklung wird nochmal
Konzepte bringen. Am Beispiel des Visual        deutlich, aber für eine ausführlichere
Studio 2005 Add-Ons Atlas, das von              Diskussion muss auf Grund der Kürze
Microsoft als Community Technical Pre-          dieses Berichts auf zukünftige Papiere ver-
view (CTP) auf die zu-künftige ASP.NET          wiesen werden.
Version 3.0 bereitgestellt
wird [2], wollen wir Details
über Ideen und unter-
schiedliche      Implemen-
tierungen auf Dienstgeber-
und Dienstnehmerseite er-
läutern.
Ausgehend von praktischen
Hinweisen bei der Install-
ation des Add-Ons, bietet
dieser       Bericht    eine
strukturierte Einführung in
die Funktionalität von AJAX        Abbildung 1: Beispielanwendung mit AJAX-Möglichkeiten
mit Atlas. Der unwissende
Zauber von AJAX wird auf die
tatsächliche Umsetzung mit asynchroner
                                               2. Integration in VS2005
Kommunikation über JavaScript mit XML-         Mit dem Projekt Atlas bietet Microsoft
Daten herunter gebrochen. Dem erfahren-        schon jetzt ein frei verfügbares Add-On für

                                                                                         1
die Visual Studio 2005 Produktfamilie an,                        vorgeschlagen wird c:\docs\MS\Atlas_
um AJAX-Technologie in eigenen Web-                              doc.
Präsentationen und Web-Applikationen
                                                                 In der Systemsteuerung/Verwaltung findet
nutzen zu können.
                                                                 sich die Konfiguration für den Webserver
Voraussetzung        für   die     folgende                      ("Internetinformationsdienste-Manager").
Beschreibung ist deshalb die erfolgreiche                        Hier kann die Dokumentation über den IIS
Installation     einer   Vollversion    von                      verfügbar gemacht werden. Das angegeb-
Microsoft Visual Studio 2005 oder zu-                            ene Installationsverzeichnis muss unter
mindest die Visual Web Developer                                 "Websites" und "Standardwebsite" als
Express Installation. Auf den Microsoft-                         neues virtuelles Verzeichnis registriert
Seiten für das Projekt befinden sich im                          werden. Als Alias kann z.B. “atlas_doku”
Bereich "Download" [3] die benötigten                            eingegeben werden und die Dokument-
Dateien. Für dieses Papier wird mindest-                         ation ist dann unter der URL
ens die Setup-Applikation "Atlas Setup -                         http://localhost/atlas_doku verfüg-
July CTP" und das "Atlas Control Toolkit"                        bar.
(mit Programmierbeispielen und Erweit-
                                                                 Das "Atlas Control Toolkit" ist eine ge-
erung der Atlas-Standard-Steuerelemente)
benötigt, aber es empfiehlt sich auch die                        zippte Datei (AtlasControlToolkit.
Dokumentation ("Atlas Documentation"),                           zip), welche entpackt werden muss. Da-
sowie die angebotenen Beispielan-                                nach kann man die Projektdatei Atlas
wendungen zu installieren1. Vor der In-                          Control Toolkit.sln in Visual Studio
stallation sollte man ein Windows-Update                         öffnen.
durchführen, so dass MS IIS und das MS                           Um die Atlas Beispielanwendungen
.NET-Rahmenwerk auf dem neuesten                                 installieren zu können, benötigt man die
Stand sind.                                                      Datei AtlasSamples.msi.
Zuerst muss Atlas (AtlasSetup.msi)                               Ein neues Atlas-Projekt kann jetzt in
installiert werden, dabei muss sicherge-                         Visual Studio mit "File | New | Web Site
stellt werden, dass beim Installationsschritt                    ..." und dann unter "My Templates" mit
"Install Atlas Visual Studio Project                             "Atlas Web Site" angelegen werden. Mit
Template" die Installation der Atlas-                            einem Projekt kann die Registrierung in
Projektvorlagen aktiviert bleibt. So könn-                       Visual Studio 2005 vervollständigt
en später Atlas-Projekte in Visual Studio                        werden: Nach einem Wechsel in den
erzeugt werden. In der nächsten Install-                         Design-Modus und dem Öffnen der
ationsmaske "Register .asbx file extension                       Toolbox (Strg + Alt + X) können mit der
in IIS" muss die Dateiendung ".asbx" aus-                        rechten Maustaste und "Add Tab" die
gewählt werde, damit der IIS-Webserver                           Controls von Atlas aufgenommen werden.
automatisch Webservices erkennt.         Im                      Bei der Auswahl der Bibliothek muss die
weiteren Verlauf der Installation werden                         Datei "Microsoft.Web.Atlas.dll" aus
Templates & Starter Kits installiert und                         dem Atlas-Unterverzeichnis des Install-
"Atlas Web Application (VB)" und "Atlas                          ationsverzeichnisses angegeben werden.
Web Application (C#)" müssen für die                             Dann stehen die Atlas-Standardkompon-
Entwicklung mit VisualBasic und C#                               enten zur Verfügung. Genauso verfährt
aktiviert werden.                                                man mit dem "Atlas Control Toolkit". Die
Für die Installation der Dokumentation                           Bibliothek AtlasControlToolkit.dll
(AtlasDocumentation.msi) kann ein                                befindet sich im Unterverzeichnis Atlas
beliebiges Verzeichnis ausgewählt werden,                        ControlToolkit\SampleWebSite\bin"
                                                                 des Wurzelverzeichnisses.

1
    Die Beispiele in diesem Papier sind auf den Seiten des ZfS
    Karlsruhe zum Download verfügbar [4].

                                                                                                       2
3. Controls im Überblick                           Das DragPanel**-Element ist eine Erweiter-
                                                   ung von Panel und bietet nach der Init-
In der aktuellen Version des Atlas-
                                                   ialisierung einen Bereich, der beliebig auf
Rahmenwerks werden 12 Steuerelemente
                                                   der Webseite verschoben und positioniert
installiert, die die Komplexität von dienst-
                                                   werden kann. Das Steuerelement Drop
nehmerseitigem JavaScript und ASP.NET
                                                   Shadow** bietet einen Fallschatten-Effekt
auf Webserver-Seite vereinen. Sie werden
                                                   für ein Panel. Man kann Form und Opa-
durch 21 Elemente des Toolkits erweitert
                                                   zität des Schattens anpassen. Für die Web-
und in diesem Papier werden deshalb alle
                                                   seite wird auch die Speicherung für
33 Steuerelemente2 vorgestellt und auf ihre
                                                   Positionierung und Größenänderung eines
Umsetzung hin untersucht.
                                                   Panel-Steuerelements angeboten.        Das
                                                                  **
Da alle Steuerelemente als Erweiterungen           RoundedCorner -Steuerelement hat eine
von Objekten in ASP.NET zu verstehen               ähnliche Funktionalität wie DropShadow**.
sind, werden im Folgenden die zurzeit im           Es erlaubt Panel-Objekte mit Ecken in
Atlas-Rahmenwerk und Atlas-Toolkit ver-            solche mit abgerundeten Ecken umzu-
fügbaren Controls über ihre Zuordnung zu           wandeln.
ASP.NET strukturiert. Die ASP.NET-
                                                   DropDownList: Das CascadingDropDown**-
Steuerelemente, die für die Strukturierung
                                                   Element ist das einzige Atlas-Steuer-
verwendet werden sind: Panel, DropDown
                                                   element für das DropDownList ASP.NET-
List, BulletedList, Listbox, Checkbox, Textbox
                                                   Element. Es ermöglicht Abhängigkeiten
und Button.
                                                   zwischen mehreren Auswahllisten festzu-
Außerdem gibt es in Atlas Steuerelemente,          legen. Sobald die erste Liste ausgewählt
die einem beliebigen ASP.NET-Element               ist, wird durch Aufruf eines Webservices
zugeordnet      werden     können    und           beim Dienstgeber der Inhalt für abhängige
Erweiterungen mit sonstiger Funktion-              folgende Listen-Objekte eingetragen.
alität, wie z.B. einen Webservice-Aufruf
                                                   BulletedList: Für das BulletedList-Element
oder eine Timer-Aktivität.
                                                   in ASP.NET bietet Atlas ein PagingBulleted
Panel: Mit Panel können sechs Atlas-               List**-Steuerelement.  PagingBulletedList**
Steuerelemente      verwendet      werden.         bietet auf Dienstnehmerseite eine sortierte
CollapsiblePanel**   erlaubt zusammen-             Liste mit Informationen. Die Sortierung
klappbare (collapsible) Abschnitte in einer        kann alphanumerisch beschrieben werden
Webseite zu definieren. UpdatePanel* teilt         und das Steuerelement bestimmt die
eine Webseite in Regionen, die aktualisiert        Einstellung des maximalen Index für eine
werden können, ohne die gesamte Seite zu           Seite.
erneuern. UpdateProgress** stellt sicht-
                                                   Listbox:       Das       Atlas-Steuerelement
baren Effekt auf den Browser zur
                                                   ReorderList** ist eine Erweitung von Listbox
Verfügung, während der Inhalt einer oder
                                                   in ASP.NET. Mit ReorderList** können
mehrer      UpdatePanel*    Steuerelemente
                                                   Zeilen einer Liste ausgetauscht werden.
aktualisiert wird. Der Webdesigner legt
                                                   Man kann auch eine Zeile hinzufügen.
fest, welches Control für Öffnen/Schließen
                                                   Über die Postback-Funktionalität kann das
des Panel-Elements zuständig ist. Die mit
                                                   Steuerelement den Zustand des Dienst-
CollapsiblePanel** verbundene Postback-
                                                   nehmers auf dem Webserver speichern und
Fähigkeit erlaubt dem Dienstnehmer die
                                                   wieder herstellen.
automatische Zustandsspeicherung auf
dem Webserver. Mit Accordion** können              Checkbox: Als Erweiterung des Checkbox-
mehrere CollapsiblePanel**-Steuerelemente          Elements von ASP.NET bietet Atlas das
verwaltet und gleichzeitig benutzt werden.         ToggleButton**-Objekt. ToggleButton** er-
                                                   laubt es den Zustand von einer Checkbox
2
 Zur Unterscheidung werden die Elemente des
                                                   mit dem Benutzen von Bildern zu
Rahmenwerks mit einem * und die des Toolkits mit   speichern.
zwei ** identifiziert.

                                                                                             3
Textbox: Es gibt als Ergänzung zu Textbox      Der Benutzer kann außerdem die Größe
in ASP.NET fünf Atlas-Steuerelemente.          und die Position der anderen Steuer-
                       **
AutoCompleteExtender erweitert ein Text        elemente einstellen. Das Steuerelement
Box-Steuerelement mit einem Verhalten,         HoverMenu** wird mit einem anderen
das Inhalte automatisch vervollständigt.       Steuerelement verbunden, um zusätzlichen
Das FilteredTextBox**-Objekt bietet Funkt-     Inhalt in einem PopupPanel anzuzeigen.
ionalität, mit der der Benutzer nur gültigen   Das Hovermenu**-Steuerelement bietet die
Text (Verifikation über einen Webservice-      Postback-Funktion. PopupControl** hat eine
Aufruf) in ein Textfeld schreiben kann.        ähnliche Funktionalität wie Hovermenu**.
Mit dem NumericUpDown**-Steuerelement          Mit PopupControl** wird zusätzlicher Inhalt
kann man die Nummer einer Textbox in-          in einem Panel angezeigt. Das Steuer-
krementieren und dekrementieren. Die           element Rating** bietet für Benutzer eine
Größe des Inkrements und Dekrements ist        intuitive Ranking-Möglichkeit. Der Be-
frei wählbar. Über einen Webservice kann       nutzer kann die Rangliste auf ver-
auch auf das Ergebnis einer Operation auf      schiedene Arten anzeigen.        Mit dem
                                                               **
Dienstgeberseite zugegriffen werden. Das       ResizableControl kann dem Benutzer die
PasswordStrength**-Steuerelement wird bei      Möglichkeit gegeben werden, die Größe
der Eingabe eines Passworts eingesetzt.        eines Steuerelements zu verändern.
Mit einem Indikator wird angezeigt, was        Sonstige Funktionalität: Außerdem gibt
man weiter in der Textbox eingeben darf        es 11 Atlas-Steuerelemente, die nicht
und wie viele Zeichen noch einzugeben          direkt einem existierenden ASP.NET-
sind. Mit einer TextBoxWatermark** be-         Steuerelement zugeordnet werden können.
kommt man für ein leeres Textfeld ein          Das TimerControl* stellt einen dienst-
Wasserzeichen für den Hintergrund.             nehmerbasierten Timer her, der Postbacks
Nachdem der Benutzer etwas in das Text         in regelmäßigen Abständen durchführen
box-Element eingegeben hat, verschwindet
                                               kann. Das Script ManagerProxy**-Steuer-
das Wasserzeichen.                             element ermöglicht verschachtelte Be-
Button: Das Atlas-Steuerelement Confirm        standteile. So können Skripte und Dienste
Button** ist eine Erweitung des ASP.NET        auf Seiten hinzugefügt werden, deren
Button-Objekts.      Das ConfirmButton**-      Elternteilelemente (wie eine Vorlagenseite
Steuerelement erlaubt dem Benutzer mit         oder ein Benutzer-Steuerelement) bereits
einem Knopf (Button) oder einer Ver-           ein ScriptManager* -Steuerelement enthält.
knüpfung (Link) eine Aktivität zu ver-         ScriptManager* ist das Kern-Steuerelement
binden, die erst nach einem Hinweis und        des Atlas-Rahmenwerks. Es verwaltet
der Bestätigung durch den Benutzer ausge-      Atlas-Bestandteile, die Seitenübertragung,
führt wird.                                    dienstnehmerseitige Anfragen und die
                                               Antworten des Webservers auf einer
Beliebiges ASP.NET-Objekt: Es gibt
                                               ASP.NET-Seite. Das Steuerelement Initial
sechs weitere Atlas-Steuerelemente, die bei
                                               Data* sendet die Daten mit der ersten
beliebigen Objekten in ASP.NET als
Erweiterung verwendet werden können.           Anfrage, damit die Datenquelle vom
                                               Dienstnehmer benutzt werden kann, ohne
DragOverlayExtender* fügt Funktionalität
                                               die Notwendigkeit, einen Callback an den
eines serverseitigen Steuerelements hinzu,
                                               Webserver zu schicken.         ProfileScript
welches es Benutzern ermöglicht, das                   *
                                               Service    stellt eine Komponente von
Objekt zu einer neuen Position zu
                                               browserseitigen Profilen bereit, um auf
verschieben. AlwaysVisibleControl** ist ein
                                               Benutzerprofile von ASP.NET zuzu-
Steuerelement, welches es ermöglicht, dass
                                               greifen. Das Gadget* Steuerelement ist ein
bestimmte Steuerelemente immer sichtbar
                                               Mechanismus, um einen portablen Dienst
bleiben, auch wenn der Benutzer die Seite
                                               (Gadget) einzubinden, welcher bereits über
nach unten scrollt.
                                               eine eigene Benutzer-Oberfläche verfügt.
                                               Mit einem DynamicPopulate** kann der

                                                                                         4
Benutzer den Inhalt eines Steuerelements                        des Atlas Rahmenwerkes zusammen mit
   mittels eines Webservice- oder eines                            Visual Studio 2005 am Beispiel. Schließ-
   entfernten Methodenaufrufs ändern. Durch                        lich werden in Abschnitt 4.3 die zugrunde
   Verwendung des ModalPopup**-Steuer-                             liegende Kommunikation und Details der
   elements kann man den Inhalt einer                              Umsetzung mit JavaScript und XML
   Webseite auf modale Weise anzeigen, so                          erörtert.
   dass der Benutzer nur mit dem modalen
   Steuerelement der Seite interagieren kann,                      4.1 Konzept und Funktionalität
   sofern dieses aktiviert wurde. WebPart                          Mit Atlas-Steuerelementen wird die Ent-
        *
   Zone enthält WebPart-Steuerelemente, die                        wicklung interaktiver Webseiten mit
   die Hauptbenutzeroberfläche von Anwend-                         AJAX-Funktionalität erleichtert.
   ungen mit WebParts bilden.         WebPart
   Manager* fungiert als Hub oder Kontroll-                        Die Abbildung 2 zeigt drei Basiskonzepte
   einheit einer Anwendung mit Webparts.                           von AJAX. Wenn der Benutzer eine
                                                                   Webseite startet, erzeugt der Webserver
                                                                                     die      Daten     der
Benutzer                          Browser                         Webserver
                                                                                     dynamischen      Seite,
       WS aufrufen                                                                   HTML, CSS und Java
                                            HTTP-GET(POST)
                                                                                     Script für die Anzeige
                      Rendering
                                                                                     und Ausführung im
                                                                                     Browser.
       WS präsentieren

            Button klicken
                                                                                      Das     erste    AJAX-
                                                                                      Konzept ist rein dienst-
                 Aktualisierung
                                                                                      nehmerseitig.       Der
      WS präsentieren                                                    Beispiel 1   Browser sendet keine
                                                                                      Daten zum Webserver
           Panel ziehen
                                             Asynchrone anfragen                      und aktualisiert selbst
                                                                                      seine Anzeige.
                                             Daten zurücksenden
       WS präsentieren
                                                                         Beispiel 2Das zweite Konzept
       Anforderung en von
                                                                                   verwendet asynchrone
       neuen Infos
                                            Webservice aufrufen
                                                                                   Kommunikation von
                                                                                   Browser zu Webserver.
                                             XML zurücksenden           Beispiel 3 Diese geschieht im
       WS präsentieren                                                             Hintergrund und wenn
                                                                                   der Browser die Daten
                                                                                   zum          Dienstgeber
                     Abbildung 2: Grundkonzepte von AJAX.
                                                                                   schickt, generiert dieser
                                                                                   XML-Code und sendet
   4. Umsetzung einiger                                            nur die zu aktu-alisierenden Daten zum
   Controls im Detail                                              Browser zurück.
   Ausgehend       von   der    strukturierten                     Das dritte Basiskonzept für AJAX-Seiten
   Einführung der Atlas-Steuerelemente wird                        beschreibt die Kommunikation zwischen
   in diesem Abschnitt exemplarisch für                            Dienstgeber und Dienstnehmer mit einem
   ConfirmButton**, DragOverlayExtender* und                       Webservice-Aufrufen aus der Webseite
   DynamicPopulate** die Funktionalität und                        heraus. Der Browser kann durch Java
   Umsetzung mit JavaScript und XML unter-                         Script einen Webservice aufrufen, um die
   sucht. Der Unterabschnitt 4.1 stellt kurz                       Daten im Browser zu aktualisieren.
   das Konzept und die AJAX-Funktionalität
   der Controls vor. Ihre Verwendung wird                          Anhand von drei Atlas-Steuerelementen
   an einem einfachen Beispiel demonstriert.                       werden diese Konzepte erläutert und ihre
   Unterabschnitt 4.2 erläutert den Einsatz                        Verwendung mit Atlas erklärt.

                                                                                                            5
ConfirmButton**   ist ein Steuerelement,                                ein Webservice von ASP.NET; die richtige
welches die Möglichkeit bietet, Web-                                    Konfiguration der Datei web.config
Anwendungen mit besserer Benutzer-                                      vorausgesetzt.
interaktion zu erstellen. Mit einem Input-
                                                                        Der Inhalt der Webanwendung ist in der
Button von ASP.NET wird bei jedem
                                                                        Datei Default.aspx beschrieben. Die
Bestätigen eine Anfrage zum Webserver
                                                                        dienstgeberseitige Geschäftslogik befindet
geschickt, der Webserver erzeugt eine
                                                                        sich in der C#-Datei Default.aspx.cs.
Antwort und schickt diese zum Browser.
Im Vergleich dazu wird von ConfirmButton**                              Auf der ASP.NET-Seite Default.aspx
nach dem Bestätigen vom Benutzer keine                                  sieht man Ländervorwahlen und weitere
Anfrage zum Dienstgeber ge-schickt,                                     Länderinformationen.  Wobei man die
sondern der Inhalt wird durch ein                                       Informationen als HTML-Seite oder als
dienstnehmerseitiges JavaScript zuerst                                  HTML-Quelltext darstellen kann.   Für
angezeigt.                                                              diese Funktionalität wird in der
DragOverlayExtender*: Durch                           Beispielanwendung internationale Vorwahlen
DragOverlayExtender* hat der                            MasterPage.master
Benutzer die Möglichkeit, die
                                                        
letzten Position eines Panels                                                ASPNETDB.MDF

auf dem Webserver asynchron
                                                                                                   Default.aspx.cs
zu speichern. Es wird ein
                                                         Default.aspx                                getContentHTML
Postback an den Dienstgeber
                                    Intra-/Internet

                                                                                                       (contextKey)
                                                            updateHTML
geschickt, wenn der Benutzer                               Content(value)
das Panel neu positioniert, und                          
der     Zustand     auf     dem                                                AutoComplete
                                                                                        Service
Webserver gespeichert wird.                              
Wenn der Benutzer eine neue                                                                        land
Anfrage an den Webserver
                                                                                                   web.config
schickt, wird nicht die ganze
Webseite     erneut     geladen,
sondern es wird nur das Panel                             Abbildung 3: Komponenten der Beispielanwendung
erneuert und der letzte Zustand
                                                                        Anwendung          das      Steuerelement
des Panels wird zurückgesendet.
                                                                        DynamicPopulate** verwendet. Außerdem
DynamicPopulate**:   Atlas bietet die                                   wird ein Fenster angezeigt, um Abfrage-
Möglichkeit, einen Webservice auf dem                                   daten unter Nutzung des DragOverlay
Server    durch   JavaScript   synchron                                 Extender* einzugeben.       Nachdem der
aufzurufen, welcher den Inhalt eines                                    Benutzer      eine     Länderbezeichnung
Steuerelements durch das zurückgegebene                                 eingegeben hat, kann er durch einen
HTML ersetzt.                                                           Knopfdruck die Vorwahldaten abfragen.
Die Abbildung 3 stellt die Architektur der                              Dieser Knopf wird um die Funktionalität
Beispielanwendung dar. In der Datenbank                                 des      Steuerelements      ConfirmButton*
                              ASPNETDB.MDF                              erweitert.    Die Anfrage der Länder-
                              (im Verzeich-                             informationen wird erst nach einer Rück-
                              nis App_Data)                             frage beim Benutzer an den Webservice
                              werden Posit-                             geschickt. Die grafische Darstellung der
                              ionen      ge-                            Benutzeroberfläche     kann    man     der
                              speichert. Um                             Abbildung 1 entnehmen.
                              diese     Auf-
                              gabe     küm-                             4.2 ASP.NET Darstellung
                              mert sich im                              Durch die Integration in Visual Studio
                                Hintergrund                             2005 und die Erweiterung von ASP.NET
 Abbildung 4: Eigenschaften
                                                                                                                      6
bietet die Verwendung des Atlas Add-Ons         Attribute   beinhalten: Enabled, Target
eine komfortable Benutzeroberfläche. Es         ControlID  und ProfileProperty.       Enabled
werden die von der ASP.NET Entwicklung          steuert, ob die Funktionalität des
bekannten Sichten auf ein Website-Projekt       Überlappens und der freien Beweglichkeit
unterstützt. Der Designer mit einer zu-         des erweiterten Objekts aktiviert werden
sätzlichen XML-Ansicht und der Zugriff          soll, oder nicht. Das Objekt, welches im
auf "code behind" und sonstige Klassen ist      Browser frei beweglich sein soll, gibt man
leicht möglich.                                 in dem Attribut TargetControlID an. Im
Abbildung 4 zeigt die Konfiguration eines       Beispiel ist dieses Attribut auf Panel1
Atlas Steuerelements über Attribute und         gesetzt. Das letzte Attribut, ProfileProperty,
Verknüpfungen mit .NET-Klassen.                 wird nur benötigt, falls die Positionen
                                                abgespeichert werden sollen. Hier wird
Das Beispielprojekt besteht aus einer           dieser Dienst verwendet. In der Datei
ASPX-Seite. Innerhalb dieser Seite wird         web.config wird die Position des Panels mit
das Steuerelement ScriptManager* defin-         addPanelLocation1 bezeichnet.           Diese
iert, welches in jeder atlasbasierten           Bezeichnung wird auch hier als Wert des
Anwendung benötigt wird. Es referenziert        Attributs ProfileProperty verwendet.
automatisch die benötigten JavaScript-
                                                DynamicPopulate** ist ein Steuerelement,
Bibliotheken. Im Beispielprojekt wird das
Attribut EnablePartialRendering verwendet       welches im Beispiel den Inhalt eines
                                                Panels (ContentPanel10) dynamisch auf-
und auf true gesetzt. Dieses Attribut spielt
                                                grund eines Webserviceaufrufes verändert.
eine zentrale Rolle in Atlas. Es steuert die
                                                Das Steuerelement hat ein ID- und ein
asynchrone Aktivität der Steuerelemente.
                                                runat-Attribut. Im Kindelement Dynamic
Dies bedeutet, dass unter Verwendung von
                                                PopulateProperties* werden die Eigen-
partiellem Rendering nur veränderte Teile
                                                schaften festgelegt. Im Beispiel (vgl.
einer Seite an den Browser geschickt
                                                Quelltext 2) hat das Kindelement eine ID.
werden und nicht ein komplettes Postback
                                                In der JavaScript-Methode updateHTML
stattfindet. Auf der Seite befindet sich
                                                Content wird über diese ID darauf
auch ein ProfileScriptService*. Durch das
                                                zugegriffen. Bei einer Aktualisierung der
Attribut AutoSave wird im Projekt fest-
                                                Seite können über das Attribut Clear
gelegt, dass die Zustände des DragOverlay-
                                                ContentsDuringUpdate Inhalte aus dem Ziel-
Fensters      nach      jeder    Änderung
abgespeichert werden.                           steuerelement sofort gelöscht werden; im
                                                Beispiel ist dies deaktiviert.        Über
Wie werden nun diese drei Steuerelemente        PopulateTriggerControlID gibt man eventuell
in der Beispielanwendung verwendet? Drag        an, ob beim Anklicken eines Steuer-
OverlayExtender* benötigt die Attribute ID      elementes eine Aktualisierungsaktion
und runat, wobei das Steuerelement vom          ausgeführt werden soll.       Das Attribut
Dienstgeber ausgeführt wird. Das Steuer-        TargetControlID gibt wieder den Bezeichner
element unterstützt in der Anwendung            des Zielsteuerelements an. Im Beispiel ist
bewegliche Fenster, wobei es auf jegliche       das ContentPanel10. Mit ServiceMethod legt
dienstgeberseitige Steuerelemente anwend-       man fest, welcher Webservice aufgerufen
bar ist. Wie Quelltext 1 demonstriert, wird     werden soll. Hier heißt der Webservice
im Beispiel das Steuerelement auf ein           getContentHTML.       Ferner können als
Panel (Panel1) angewandt. Das Atlas-            Attribute für DynamicPopulateProperties**
Element DragOverlayExtender* beinhaltet         noch ServicePath und CustomScript
ein oder mehrere Kinderelemente vom Typ         angegeben werden.          Damit Dynamic
DragOverlayProperties*. Diese können drei       Populate** funktionieren kann, benötigt

                              Quelltext 1: DragOverlayExtender                              7
Quelltext 2: ConfirmButtonExtender und dynamicPopulateExtender
man eine JavaScript-Funktion, welche über      wird bei einer Aktion des Ziel-
ein Ereignis aufgerufen wird.          Die     steuerelements aktiviert. Im Beispiel wird
JavaScript-Funktion ruft dann den              die Frage gestellt, ob der Benutzer die
Webservice des DynamicPopulates** auf.         Anfrage wirklich stellen möchte. Bejaht er
Im Beispiel heisst diese Funktion              diese, so wird die Anfrage ausgeführt und
updateHTMLContent. Quelltext 3 zeigt, wie      die Resultate in der Benutzeroberfläche des
diese Funktion aussieht. Diese Methode         Browsers angezeigt. Andernfalls wird die
wird im Beispiel für onClick-Ereignisse        Aktion nicht ausgeführt.
ausgenutzt, wenn der Benutzer einen der
Radio-Buttons anklickt. In diesem Fall         4.3 Umsetzung mit JavaScript
werden, je nachdem, welcher Radio-Button       und XML
aktiviert wird, dem Benutzer die Inhalte in    Nach der Vorstellung allgemeiner AJAX-
der entsprechenden Form präsentiert.           Konzepte wurde die Implementierung
ConfirmButton** ist ein Steuerelement, das     dieser Funktionalität in Atlas näher
steuert, ob eine bestimmte Aktion wirklich     beschrieben. Aufbauend auf dem hierfür
ausgeführt werden soll. Es wird ein            eingeführten Beispiel analysiert dieser
Bestätigungsfenster mit zwei Knöpfen (Ja       Abschnitt die eigentliche Implementierung
und Abbrechen) angezeigt. Auch der             mit JavaScript, XML und asynchroner
ConfirmButtonExtender** hat als Attribut ein   Kommunikation.
ID- und ein runat-Attribut. In den Confirm
                                              Für die Untersuchung der Dienstnehmer-
ButtonProperties** werden diese Eigen-
                                              Dienstgeber-Kommunikation wird dabei
schaften festgelegt.        Das Attribut      der HTTP-Debugging-Proxy Fiddler [5]
ConfirmText gibt den Text an, welcher dem
                                              von Eric Lawrence, sowie der Web Dev-
Benutzer im Nachrichtenfenster angezeigt
werden       soll.    function updateHTMLContent(value) {
TargetControlID
dient        zur         var behaviour = $object('DynamicPopulateProperties1');
Angabe       des         if (behaviour) {
Zielsteuereleme            behaviour.populate(value);
                         }
nts.         Der     }
ConfirmButton**
                             Quelltext 3: JavaScript-Methode updateHTMLContent
                                                                                        8
Applikation mit ver-
                     geben. DragOverlay
                                                                        Extender* erlaubt es,
                                                            die Positionen dieser
                                   objekt, das seine
                                                                        Dienste als Web-
                                                       service anbietet. Im
       ..                                        Unterelement       für
     
                                                                        Eigenschaften kann
                                                                 man      über     das
                                                               Attribut        Profile
                                                                        Property den in der
           Quelltext 4: Atlas-XML in der Datei default.aspx             web.config        ein-
                                                                        getragenen Namen
elopment Helper von Nikhil Kothari [6]            der Eigenschaft angeben.
eingesetzt.
                                                  In der Beispielan-wendung (vgl. Quellcode
Außerdem konzentriert sich der folgende           1) wird so addPanelLocation1 genutzt. Beim
Absatz auf das Beispiel des Drag-                 ersten Aufruf der Seite default.aspx im
OverlayExtender*-Steuerelements, da hier          Browser wird, wie in der Abbildung 2
die meisten AJAX/Atlas-Besonderheiten             dargestellt, ein Aufruf mit HTTP-GET an
veranschaulicht werden können.         Das        den Dienstgeber geschickt.           Dieser
vorgestellte Steuerelement ConfirmButton          antwortet mit einem HTML-Dokument.
Extender** ist rein dienstnehmerseitig. Es        Es ist vom Typ XHTML in der Version
ist keine Kommunikation mit dem                   1.0. Damit kann man Elemente und
Dienstgeber notwendig, die Logik wird             Attribute aus HTML 4.01 Transitional
durch JavaScript im Browser realisiert.           verwenden und auch ältere Browser
Das Beispiel DynamicPopulate** versendet          können diese Seite anzeigen.            Das
bei seiner Anfrage an den Webserver               Seitendokument ist aufgeteilt in: XHTML,
Daten aus einem Formular als Parameter.           Skriptverweise und ein Atlas-spezifisches
Der Aufruf des Webservices getHTML                XML-Skriptformat. Der Quelltext 4 zeigt
Content antwortet hierauf
mit einem HTML-String,
der in der JavaScript-
Programmlogik der Seite
weiterverwendet werden
muss.
Durch    DragOverlayExten
   *
der    kann man einer
Webanwendung das Ver-
halten    einer echten            Abbildung 5: Bekanntgabe der Positionsänderung an den Dienstgeber
                                                                                                      9
schematisch die notwendigen
  Skript-Referenzen, Kompon-
  enten (z.B. ein Profil) und
  Steuerelemente. Außerdem
  werden weitere Dateien über-
                                        Abbildung 6: Die Tabelle aspnet_Profil in ASPNETDB.MDF
  tragen, auf die ein Verweis in
  der Webseite default.aspx
  existiert.     Dies sind neben CSS-                Für ein Fenster wird jeweils immer dann
  Beschreibungen       und   Bildern    auch         ein asynchroner Aufruf an den Dienstgeber
  JavaScript-Dokumente, die durch Atlas              geschickt, wenn sich dessen Position
  generiert        werden         (Atlas.js,         ändert. Der Webservice ProfileWebService.
  WebResource.axd).        Dies ist ein ein-         asmx wird mit der Methode SetProfile über
  maliger Übertragungsprozess in einer auf           HTTP-POST aufgerufen. Wie man der
  AJAX-Technologien basierenden Anwend-              Abbildung 5 entnehmen kann, besteht die
  ung. Im klassischen HTML-Modell wurde              Übertragung aus einem Aufruf im Java
  als Antwort des Dienstgebers jeweils das           Script Object Notation-Format (JSON) und
  ganze HTML-Dokument übertragen. Im                 der Rumpf dieser XML-Antwort besteht
  Gegensatz dazu wird in AJAX die gesamte            aus {"values":{"addPanelLocation1":"345,62"}},
  HTML-Darstellung der Webanwendung                  was die Bezeichnung des Attributs und
  nur beim ersten Aufruf an den                      dessen Wert enthält. Der Profil-Web-
  Dienstnehmer geschickt.        Im weiteren         service speichert diesen Wert in der
  Verlauf der Sitzung werden nur die                 Datenbank ASPNETDB.MDF ab.                  Beim
  aktualisierten Inhalte übertragen. Diese           nächsten Start der Webanwendung wird
  Anfragen an den Server geschehen hinter            dieser Wert geladen. Abbildung 6 zeigt,
  den Kulissen, so dass für den Benutzer der         wie die Benutzeridentifikation, die
  Eindruck einer „echten“ Anwendung                  Eigenschaftsbezeichnung,           der     Eigen-
  entsteht und man von asynchroner                   schaftswert und weitere Daten gespeichert
  Kommunikation spricht.                             werden. Als Ant-wort des Web-servers
                                                     wird ein JSON-Nullwert gesendet, der eine
                                                                                         erfolg-reiche
this.initialize = function() {                                                                 Daten-
   Sys.UI.FloatingBehavior.callBaseMethod(this,                                     übertragung und
      'initialize');                                                                -speicherung re-
   Sys.UI.DragDropManager.registerDropTarget(this);                                 präsentiert.
                                                                                    Beim nächsten
   var el = this.control.element;                                                   Start der Applik-
                                                                                    ation wird über-
   var location;                                                                    prüft, ob die Be-
   if (_location) {                                                                 nutzerdaten lokal
      var numbers = _location.split(',');                                           im       Browser-
      location = { x : parseInt(numbers[0]),
                                                                                    Cache vorhanden
                         y : parseInt(numbers[1]) };
                                                                                    sind. Falls ja,
   }
                                                                                    werden       diese
   else {
      location = Sys.UI.Control.getLocation(el);                                    benutzt        und
   }                                                                                wenn nicht, wird
                                                                                    dem Webservice
   el.style.width = el.offsetWidth + "px";                                          eine     Anfrage-
   el.style.height = el.offsetHeight + "px";                                        zeichenkette   mit
   el.style.position = "absolute";                                                       mn=GetProfile
   Sys.UI.Control.setLocation(el, location);                                        geschickt.     Als
}                                                                                   Antwort erhält

         Quelltext 5: Die Methode initialize in WebResource.axd                                    10
der Dienstnehmer (wiederum in JSON) die
Positionsdaten.                                6. Referenzen
In der Datei WebResource.axd wird die          Nützliche Downloads und andere Be-
visuelle Komponente und ihre Position in       schreibungen
der Methode initialize gespeichert. Im         [1] Jesse James Garrett: Ajax: A New
Quelltext 5 sieht man, wie das als                 Approach to Web Applications;
JavaScript gelöst wird. Wenn das Objekt            02/2005;
_location    existiert,   werden    seine          http://www.adaptivepath.com/
Positionsdaten verwendet. Anderenfalls             publications/essays/archives/
werden die voreingestellten Werte aus der          000385.php
Datei web.config eingesetzt. Am Ende der       [2] Microsoft Seiten zum Atlas-Projekt;
Methode wird die Position der visuellen            http://atlas.asp.net/Default.aspx
Komponente gesetzt.                            [3] Download-Bereich für Atlas AJAX
                                                   Setup – July CTP, Beispielanwen-
5. Fazit                                           dungen, Dokumenation und AJAX
In der Öffentlichkeit wird viel über AJAX          Control Toolkit;
gesprochen. Es stellt sich aber heraus, dass       http://atlas.asp.net/default.aspx?tabid=
AJAX nur alte und bewährte Technologien            47&subtabid=471
einsetzt. Es ist keine Revolutionierung des    [4] Zentrum für Softwarekonzepte (ZfS)
Web, aber auch kein alter Hut. Die rege            http://zfs.fzi.de/
Diskussion über AJAX und Beispiele, wie        [4] Download-Bereich für Fiddler – ein
GoogleMaps, Suggest oder Flickr, haben             HTTP Debugger;
ein neues Bewusstsein für die bessere              http://www.fiddlertool.com/Fiddler/
Gestaltung der Benutzeroberflächen im          [5] Download-Bereich für Web Develop-
WWW, angelehnt an Maßstäbe von                     ment Helper – Analysetool für
Desktopanwendungen,         hervorgebracht.        AJAX/JavaScript;
Dadurch      werden     zukünftige    Web-         http://projects.nikhilk.net/Projects/Web
Anwendungen            benutzerfreundlicher,       DevHelper.aspx
flüssiger und interoperabler.
Microsoft Atlas ist eines von vielen AJAX-
Rahmenwerken für die .NET-Plattform.
Es bietet einfache Möglichkeiten zur
Erstellung von Web-Anwendungen und
beschleunigt den Entwicklungsprozess.
Jedoch nur dann, wenn man die Standard-
komponenten einsetzt. Man sollte auch
nicht vergessen, dass es sich noch um ein
„Preview“ handelt. Es werden also noch
viele Änderungen folgen. Zum Standard
soll es erst in ASP.NET 3.5 oder 4.0
werden.

                                                                                        11
Sie können auch lesen