Stichworte zur Vorlesung 2004 - Prof. Dr.

Transcription

Stichworte zur Vorlesung 2004 - Prof. Dr.
Fachhochschule Kiel
Fachbereich Informatik und Elektrotechnik
Institut für Angewandte Informatik
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung
„Neue Softwaretechnologien“
Mitschrift von J. Ruhlaender, SS 2004
Das Skript enthält die wesentlichen Stichworte zur Vorlesung.
Für die weitere Erarbeitung sind die angegebenen Literaturhinweise bzw.
Internetquellen heranzuziehen.
1 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Inhaltsverzeichnis
Inhaltsverzeichnis .......................................................................................................................2
1.
Windows-Anwendung ....................................................................................................4
2.
Windows-Anwendung mit Komponententechnologie....................................................7
3.
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.18
.NET-Anwendung.........................................................................................................13
.Net – Architektur .........................................................................................................13
Geschichte des .NET Frameworks................................................................................13
Überblick über die öffentlichen Versionen des Frameworks .......................................14
Zukunft des .NET Frameworks ....................................................................................14
Zukunft von Visual Studio .NET..................................................................................14
Verfügbarkeit ................................................................................................................14
Assembly / MSIL Code – native code ..........................................................................15
Common Language Runtime (CLR).............................................................................15
Runtime Hosts...............................................................................................................16
Sprachintegration ..........................................................................................................16
Einheitliche Klassenbibliothek .....................................................................................16
Sicherheitssystem (CAS) ..............................................................................................17
Komponentenkonzept ...................................................................................................17
Meta Daten....................................................................................................................17
XCOPY-Deployment und Versionierung.....................................................................18
Zum Thema Plattformunabhängigkeit ..........................................................................18
Interoperabilität.............................................................................................................19
4.
4.1
4.2
4.3
Architekturvergleich .....................................................................................................22
Modell 1: HTML ..........................................................................................................22
Modell 2: DHTML........................................................................................................22
Modell 3: ASPX............................................................................................................22
5.
Einbindung in eine Anwendungsarchitektur................................................................23
6.
Vertieftes Verständnis der Web-Anwendungsarchitektur ............................................25
2 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.
7.1
7.2
Anbindung der Datenhaltungsschicht...........................................................................28
Grundlagen....................................................................................................................28
Ergänzende Hinweise zur Anwendungentwicklung .....................................................30
7.2.1 Web Anwendungen mit Web-Forms ................................................................30
7.2.2 Events bei Web-Formularen .............................................................................30
7.2.3 Postback-Events und Non-Postback-Events.....................................................31
7.2.4 Zustand einer Web-Anwendung .......................................................................31
7.2.5 Der Lebenszyklus eines Web-Formulars..........................................................31
7.2.6 Erläuterung der Events im Lebenszyklus einer Web-Form.............................33
7.2.7 Beispiel eines ersten Web-Formulars ...............................................................34
7.2.8 XML Web Services Konzept............................................................................39
7.2.9 XML Webservice..............................................................................................40
7.2.10 .asmx Dateien....................................................................................................40
7.2.11 Beispiel für eine .asmx Datei mit inline Code. .................................................41
7.2.12 Testen des Web-Services mit dem Internet Explorer. ......................................41
7.2.13 Einen XML Webservice nutzen........................................................................45
7.2.14 WSDL (Web Service Description Language) ..................................................47
7.2.15 Das Code-Behind Modell etwas besser verstehen............................................47
7.2.16 Test des Web-Services mit einer Windows-Anwendung .................................47
Literatur ....................................................................................................................................51
Internet ......................................................................................................................................52
3 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
1.
Windows-Anwendung
Ziel: Grundverständnis einer „Windows-Anwendung“
USE-CASE:
Kunden verwalten
Kunde Verwalten
Artikel verwalten
Kunde anlegen
....
Vertiebsmitarbeiter
Aufträge verwalten
Hier will ich
Vorname
Name anlegen
4 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Für den Teil: „Kunde anlegen“
Kunde
+Kunde_anlegen()
Oberfläche des Systems (Vertriebsmitarbeiter)
+erzeugen()
+:()
+:()
Technische Klasse
Wird für die Anwendung
erstellt
Fertige Strukturen
Oberfläche
Anwendung
Fenster
Für ein Windows-Programm weiter verfeinern:
Win-Programme Klassenhierarchie:
CTheApp
- Applikationsebene
CObject
ClmdTarget
CWnd
Kernaussage:
Zu Beginn wird das fachliche Modell entworfen daraus hergeleitet wird das technische
Modell.
Das technische Modell ist in der Grundausprägung in drei Ebenen (Schichten) gegliedert, die
in der UML über die Classifier Oberfläche, Verarbeitung, Datenhaltung symbolisiert werden.
Die Oberfläche wird typischerweise mit Hilfe vorgefertigter Klassen zur Programmierung von
Oberflächen (z. B. MFC = Microsoft Foundation Classes), die Datenhaltung mit Hilfe einer
Datenbank realisiert.
5 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Lernziel:
• Objektorientierte Windows Anwendung Beispiel „Kunde“
• Abgrenzung zur Prozeduralen Lösung
• Aufteilung einer Applikation (Konzept/Struktur)
• Technische Implentierung (Com, NET-Architektur)
Historie:
1) Bibliotheken und Datenaustauschverfahren wurden benötigt:
DLL Dynamic Link Libraries, DDE – Dynamic Data Exchange
2) fertige, wieder verwendbare Komponenten sollten erstellt werden:
1993 COM-Modell für Komponenten (Component Object Modell)
3) Rechnergrenzen sollten überschritten werden:
Verwendung von RPC (Remote Procedure Call)
Aufruf von Komponenten auf anderen Rechnern DCOM (Distributed COM)
4) Verwaltung der „entfernten“ Klassen in einer eigenen Softwareschicht kapseln:
Middle Ware
Software, die für Ortstransparenz (Unabhängigkeit vom Ort) sorgt.
Die Software sucht für den Client den Server und übermittelt die Daten.
versenden der Parameter
Begriff: marshaling
Pkt. 3-4:
Microsoft OLE
Alternativ von Microsoft Konkurrenten CORBA (Common Object Request Broker
Architecture)
Konzept des Botschaftenaustausches in einer Windows Applikation.
Programmieren einer Windows-Oberfläche mit Visual Studio.
(siehe auch Anlage 1)
6 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
2.
Windows-Anwendung mit Komponententechnologie
Lernziel:
• Wdh. Softwarearchitektur
• Erweiterung der Begriffsdefinitionen
• Beispiel einer Architekturlösung („RPC“)
• COM
• .NET-Architektur
Architektur:
graphische Darstellung des Systemzusammenhangs,
Schnittstellen und Komponenten
Komponente:
wiederverwendbare, eigenständig definierte und anschließbare Programme,
die mit anderen zusammenarbeiten.
Modularisierung
Anwendungen werden durch Module (Komponenten) aufgebaut
Kommunikation über Nachrichten unabhängig von Protokoll und Hardware
1993: Component Object Model (Microsoft)
Middle Ware:
Softwareschicht für die Verwaltung der Zusammenarbeit von Komponenten
Typen:
insbesondere „verteilte“
Kommunikation zwischen Komponenten über Anwedungsgrenzen/
Rechnergrenzen hinweg aufgebaut
heterogene
verteilte Architektur über unterschiedliche Betriebssysteme/ Anwendungen
hinweg
Erster Schritt:
verteilte Applikation:
1-Tier
Anwendungsoberfläche
2-Tier
Anwendungsoberfläche
3-TierArchitecture
{
- Oberfläche
- Verwaltung
- Datenhaltung
Anwendungsverarbeitung
Verwaltung
Verw.
Client
Verw.
Client
Netzwerk
Anwendungsverarbeitung
2-Tier-Architektur
Verarbeitung
Verarbeitung
Datenhaltung
7 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Beispiel Kontoverwaltung:
Kontoverwaltung
Einzahlung
bearbeiten
Kunde
Kontoverwaltung
Oberfläche
Client
Middelware
Schnittstelle
Konto = new Instanz()
Server
Suche Server
Serveridentifikation
Serveridentifikation
Konto.einzahlen(5)
Server
Klasse
Methode
der Klasse
Ergebnis an
Client übermitteln
Aufruf eingepackt übertragen
(verteilt) bzw. Serveraufruf
Ergebnis
8 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Kommunikation zwischen den Komponenten
Probleme:
Client
Server
Sprachschnittstelle
problematisch bei unterschiedlichen Umgebungen
Lösung:
Client
Server
verweist auf
Schnittstelle
Zwischensprache
übersetzen in
Serverumgebung
Interface
Definition
Language
Microsoft Interface Definition Language: MIDL
MSIDL
9 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Marshaling:
Verpacken, Versenden und Entpacken von Parametern.
Fachklasse
Kontoverwaltung
Konto
kontostand
einzahlen
einzahlen
Kunde
Technische Klasse
Client
Kontodialog
Konto
Oberfläche
Werte eingeben
Server
lKonto
kontostand
Kontoverwaltung
einzahlen
nicht verteilt:
Kontodialog
lKonto
Erzeuge lServer/ lKonto
Betrag einzahlen
neuer Kontostand
10 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Code:
lKontoDialog
{
double kontostand;
lKonto konto = new lKonto( );
konto.einzahlen( 0.0 );
cout << konto.getKontostand( );
konto.einzahlen( 100.0 );
cout << konto.getKontostand( );
}
lKonto
{
private double kontostand = 0.0;
public void einzahlen( double betrag ){
this.kontostand += betrag;
}
}
public double getKontostand(){
return this.kontostand;
}
Aufruf mit Middleware:
COM-Server
Kontodialog
lKonto
Aufruf lKonto
Starte Server
einzahlen
einzahlen
}
.dll oder
.exe
11 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Lernziel
• Wdh. Komponenten
Komponenten
• Schwächen des COM-Modells
• .NET-Architektur
(Beispiel einer modernen Architekturbasis)
Eigenschaften des COM-Modells
• COM dient zur Modularisierung der Anwendung
• Kommunikation Client-Server wird hergestellt
• Laufzeit DLL
• Client lädt DLL
• Zugriff auf die DLL erfolgt über die GUID (global unique identifier)
• Client/ Server sind nicht statisch aneinander gebunden (Komponente/n können
ausgetauscht werden)
• Erweiterung über Rechnergrenzen (DCOM)
Schächen des COM-Modells:
1. Probleme mit Schnittstellenimplementierungen bei unterschiedlichen
Sprachumgebungen in Client/Server
2. Speicherlecks
3. Applikationsstruktur
(Class Factories, Marshaling (Verpacken der Informationen vorher<-> nachher))
4. abhängig von einer Plattform (Betriebssystemumgebung)
Lösung:
Common Language Runtime == Zwischenschritt wird versorgt mit “vorkompiliert”
(Microsoft Intermediate Language)
MSIL
Was sind Frameworks ?
• F. gelten allgemein als die höchste Form der Wiederverwendung
• mit Hilfe von F. können nicht nur Programmcodes, sondern auch Entwurfslöungen
wiederwendet werden
• Ein Framework besteht aus einer Menge kooperativer Klassen, die einen
wiederverwendbaren Entwurf für einen bestimmten Anwendungsbereich
implementieren. Es besteht aus konkreten und insbesondere abstrakten Klassen, die
Schnittstellen definieren. Die abstrakten Klassen enthalten sowohl abstrakte als auch
konkrete Operationen.
• Im allgemeinen wird vom Anwender (Programmierer) erwartet, daß er Unterklassen
definiert, um ein Framework zu verwenden oder anzupassen.
• Selbstdefinierte Unterklassen empfangen Botschaften von den vordefinierten
Framework-Klassen nach dem „Hollywood-Prinzip“ – Don’t call us, we’ll call you !
12 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
3.
.NET-Anwendung
3.1
.Net – Architektur
•
•
•
Net Framework
- Laufzeitsytem (CLR)
- .NET Klassenbibliotheken
Web – Services
- Präsentation
- Ablauflogik
- Datenhaltung
NET Enterprise Services
- Kommunikation übergreifender Anwendungen
3.2
•
•
•
•
•
•
•
•
•
•
•
•
Geschichte des .NET Frameworks
1998 erwähnt Microsoft Mitarbeiterin Mary Kirtland erstmals die Konzepte (einheitliche
Laufzeitumgebung), die ursprünglich für COM+ geplant waren, aber erst im .NET
Framework realisiert wurden.
Die Entwicklung wurde in den nächsten Jahren zunächst als COM Version 3.0, später als
Next Generation Windows Service (NGWS) weitergetrieben.
11.7. 2000 Microsoft veröffentlicht unter dem Namen .NET Framework eine AlphaVersion (Technical Preview) des .NET Framework auf der PDC 2000 in Orlando
15.11.2000: Beta 1
19.6.2001: Beta 2
22.10.2001: RC1
14.1.2002: Version 1.0 (englisch)
April 2002: Version 1.0 (deutsch)
19.10.2002: Beta1 der Version 1.1
18.11.2002: Beta2 ("Final Beta") der Version 1.1
09.04.2003: Endfassung der Version 1.1 verfügbar (englisch+deutsch)
27.10.2003: Erste Präsentation von .NET 2.0 in breiter Öffentlichkeit auf der PDC 2004 in
LA
13 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
3.3
Überblick über die öffentlichen Versionen des Frameworks
Produktversion
des Frameworks
1.0
1.0
1.0
1.0
1.0
1.1
1.1
1.1
2.0
Produktversion
Visual Studio .NET
7.0/2002
7.0/2002
7.0/2002
7.0/2002
7.0/2002
7.1/2003
7.1/2003
7.1 / 2003
8.0 / 2005
Produktstadium
Alpha
Beta1
Beta2
Release Candidate 1
Endfassung
Beta1
Beta2 „Final Beta“
Endfassung
Alpha / Technical
Preview / PDC Build
Versionsnummer
1.0.xxxx
1.0.2204
1.0.2914
1.0.3328
1.0.3705
1.1.4322
1.1.4322.510
1.1.4322.573
1.2.30730 (*)
Datum
11.07.2000
15.11.2000
19.06.2001
22.10.2001
14.01.2002
19.10.2002
18.11.2002
09.04.2003
27.10.2003
(*) 1.2.* ist leider richtig. Microsoft hatte die Versionsnummer noch nicht auf 2.0 angepasst
3.4
•
•
•
Beta 1 des .NET Frameworks 2.0 im Sommer 2004
Final ca. im März 2005
Tausende zusätzliche Klassen für das .NET Framework werden in Zusammenhang mit
Windows "Longhorn" im Managed API "WinFX" erscheinen.
(Stand 21. April 2004)
3.5
•
•
Zukunft des .NET Frameworks
Zukunft von Visual Studio .NET
Zusammen mit dem .NET Framework 2.0 erscheint Visual Studio .NET 8.0 (Codename
"Whidbey") .
Zusammen mit dem nächsten Windows ("Longhorn") erscheint ebenfalls ein neues
"Visual Studio .NET for Longhorn" (Codename "Orcas"), dass das in Longhorn
enthaltene neue Managed API "WinFX" unterstützt.
(Stand 21. April 2004)
3.6
Verfügbarkeit
Das.NET Framework ist ein kostenloses Add-on für folgende Betriebssysteme: Windows 98,
Windows ME, Windows NT 4.0, Windows 2000 und Windows XP.
Ab dem Windows.NET Server gehört das.NET Framework zum Standardinstallationsumfang.
Für Windows CE.NET gibt es eine Light-Version, das sogenannte.NET Compact Framework.
14 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
3.7
Assembly / MSIL Code – native code
Ein C++ Compiler erzeugt native code (direkt ausführbare Programme). Diese Anwendungen
stellen die schnellsten und effektivsten Programme einer Hochsprache dar.
Einer der Hauptgründe dafür ist die optimale Anpassung an die vorhandene Hardware und das
Betriebsystem.
Ein .NET Compiler (C#, Visual Basic, J#, JScript,…) erzeugt kein direkt ausführbares
Programm (native code), sondern einen Zwischencode, der MSIL genannt wird.
Die Abkürzung MSIL steht für Microsoft Intermediate Language und bildet eine so genannte
Assembly.
Dieser MSIL Code/Assembly wird nicht wie bei Java 1.0 interpretiert, sondern immer von
einem JIT (Just in time Compiler) zur Laufzeit in native code gewandelt und ausgeführt.
Weil der JIT Compiler sehr schnell ist, ist der Geschwindigkeitsverlust einer .NET
Anwendung im Vergleich zu einem Native Code Programm nur sehr gering.
3.8
Common Language Runtime (CLR)
Um .NET Programme (MSIL-Code) ausführen zu können, benötigt man immer eine
Laufzeitumgebung. Diese heißt im .NET Framework Common Language Runtime (CLR).
Die CLR besteht aus mehreren Basis Diensten:
o Just-in-Time Compiler
Der MSIL-Code wird durch den JIT in die systemeigene Maschinensprache
(native Code) des jeweiligen Systems übersetzt, mit den Basisdiensten verbunden
und ausgeführt.
Dadurch sind .NET Programme performanter als interpretierte
Sprachen.
o Speicherverwaltung
Umfasst einen „Garbage Collector“, der Objekte, auf die nicht mehr verwiesen
wird, selbstständig löscht.
Die Speicherverwaltung verhindert zudem eine Fragmentierung des Speichers.
Dies steigert die Performance von Anwendungen.
o Sicherheitssystem
Programmen werden unterschiedliche Sicherheitsstufen zugewiesen. Dazu gehört
auch der Ursprung (Internet, Intranet, lokaler Rechner).
Das Sicherheitssystem verwaltet die Codezugriffssicherheit. So kann eine in einer
Webseite eingebettete ausführbare Datei (bei Java: ein Applet) zwar eine
Animation wiedergeben oder einen Musiktitel abspielen, jedoch keinen Zugriff auf
das Dateisystem oder das Netzwerk durchführen.
o Interoperabilität
Die CLR stellt eine Abwärtskompatibilität zu älteren COM-Komponenten und
DLL´s her, so dass diese weiter benutzt werden können.
o Threading
Verwaltet das Erstellen und Beenden von Threads (Kind-Prozessen).
o Exception Handling
Verwaltung von nicht abgefangenen Ausnahmen.
15 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Einheitliche Laufzeitumgebung.
Die CLR kompiliert den MSIL-Code mit dem JIT Compiler in ausführbare Programmteile,
verbindet diese mit den Basisdiensten und führt den so erzeugten native-code aus.
Ein Programmcode, der im Rahmen der CLR ausgeführt wird, heißt „managed code“
(verwalteter Code).
Der restliche Code wird entsprechend „unmanaged code“ (nicht verwalteter Code) genannt.
3.9
Runtime Hosts
Wenn eine .NET-Anwendung gestartet wird, ruft Windows nicht die CLR selbst direkt auf,
sondern zunächst einen so genannten Runtime Host. Dieser lädt die CLR und übergibt der
CLR den Einsprungpunkt für die Anwendung. Es gibt derzeit drei Runtime Hosts: den Shell
Runtime Host, den Internet Explorer Runtime Host und ASP.NET.
In Zukunft werden auch andere Office- und Back-Office-Anwendungen als Host fungieren
können.
3.10 Sprachintegration
Das.NET Framework ermöglicht die Zusammenarbeit der unterschiedlichsten Sprachen.
Zusammenarbeit bedeutet dabei nicht nur, dass ein Aufruf von einem Programmcode möglich
ist, der in einer anderen Sprache geschrieben wurde, sondern auch das in objektorientierten
Sprachen eine Vererbung von Klassen möglich ist, die in einer anderen objektorientierten
Sprache entwickelt wurde.
Basis für diese Sprachintegration ist einerseits die Zwischensprache MSIL und die CLR und
andererseits die so genannte Common Language Specification (CLS). Die CLS ist ein
Regelwerk für Compiler, das festlegt, wie die Umsetzung von sprachspezifischen Konzepten
in die MSIL erfolgen muss. Kern der CLS ist das Common Type System (CTS), das ein
einheitliches System von Datentypen definiert. Denn nur wenn die verschiedenen Sprachen
die gleichen Datentypen verwenden, ist eine problemlose Integration möglich.
3.11 Einheitliche Klassenbibliothek
Ein weiterer Aspekt, der die Programmierung in verschiedenen Programmiersprachen bislang
höchst unterschiedlich gemacht hat, waren die verschiedenen Funktions- bzw.
Klassenbibliotheken. Die .NET Framework Class Library (FCL) ist eine sehr umfangreiche
Klassenbibliothek, die von allen .NET Sprachen aus genutzt werden kann. Selbst wenn es in
verschiedenen .NET Sprachen noch alternative Möglichkeiten für die Ausführung
verschiedener Systemfunktionen (z.B. den Dateisystemzugriff) gibt, sollten die Klassen der
FCL genutzt werden.
Dies vermindert den Lern- und Umstellungsaufwand beim Wechsel auf eine andere Sprache
enorm. Die FCL ist implementiert als eine Reihe von DLLs (Managed Code).
Die FCL enthält in der Version 1.0 genau 2246 öffentliche Klassen (Umfang des.NET
Framework Redistributable, optionale Add-ons nicht eingerechnet). Um die Übersichtlichkeit
16 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
zu gewährleisten, sind die FCL-Klassen in Namensräume eingeteilt. Ein Beispiel für einen
FCL-Klassennamen ist System.Web.UI.Control.
3.12 Sicherheitssystem (CAS)
Der Schutz vor schädlichen Codes ist ein immer wichtigeres Thema. Die CLR bietet daher ein
neues Sicherheitssystem, das nicht mehr nur die Rechte des Benutzerkontos, unter dem der
Code ausgeführt wird, berücksichtigt, sondern auch die Herkunft des Programmcodes. Das
Sicherheitskonzept wird Code Access Security (CAS) genannt und ist die Weiterentwicklung
des Zonenkonzepts des Internet Explorers, des Microsoft Authenticode-Verfahrens zur
digitalen Signierung von Programmcode und der Software Restriction Policy (SRP) unter
Windows XP.
Die CLR ermittelt zur Bestimmung der Ausführungsrechte von Managed Code zunächst die
Beweislage (engl. evidence). Zur Beweislage gehören insbesondere der Autor des Codes
(hinterlegt durch das Authenticode-Verfahren) und der Speicherort des Codes
(Zonenkonzept). Auf dieser Basis werden die Rechte des Codes ggf. eingeschränkt.
Selbstverständlich erhält der Code niemals mehr Rechte als der Benutzer, unter dem der Code
läuft, denn das Windows-Sicherheitssystem wirkt nach wie vor zusätzlich.
Die CAS kann durch die Definition von Code-Gruppen und Berechtigungssätzen sehr fein
konfiguriert werden.
3.13 Komponentenkonzept
Das .NET Framework ist nicht nur objektorientiert, sondern auch komponentenorientiert. Im
Mittelpunkt des Komponentenkonzepts stehen die so genannten Assemblies. Es gibt
Assemblies in Form einer EXE oder einer DLL.
Eine DLL-Assembly ist immer eine wieder verwendbare Softwarekomponente, die von einer
anderen Assembly genutzt werden kann. Nur eine EXE-Assembly lässt sich als eine
unabhängige Anwendung starten. Auch eine EXE-Assembly kann aber Dienste für Andere
bereitstellen. Dieses Konzept unterscheidet sich zunächst nicht von dem
Komponentenkonzept unter dem Component Object Modell (COM).
Eine Assembly ist ein Verbund aus einer oder mehreren MSIL-Dateien, wobei mindestens
eine der Dateien eine DLL oder EXE ist. Optional können auch nicht-MSIL-Dateien, so
genannte Ressource-Dateien (z.B. Datenbank-, Grafik- oder Sound-Dateien), Teil der
Assembly sein.
3.14 Meta Daten
Jede Assembly und damit auch jede .NET-Komponente ist komplett selbst beschreibend, d.h.
es sind ausführliche Informationen über die in der Komponente enthaltenen Klassen und
deren Mitglieder enthalten. Diese Meta-Daten sind Pflicht. Dies ist ein großer Fortschritt
17 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
gegenüber COM, wo die Selbstbeschreibung in Form von Typbibliotheken eine oft
vernachlässigte Option war.
Für jedes Objekt der .NET-Laufzeitumgebung werden in den Metadaten alle
Objektinformationen aufgezeichnet, die zur Verwendung des Objekts erforderlich sind.
Hierzu zählen:
• Name des Objekts
• Namen und Typen aller Felder des Objekts
• Die Namen aller Mitgliedsfunktionen, einschließlich Parametertypen und -namen
Das Auslesen der Meta-Daten einer .NET-Komponente nennt man Reflection. Reflection ist
integraler Bestandteil des .NET Frameworks, auf dem vier wichtige Mechanismen beruhen:
•
•
•
•
Beim Bindungsmechanismus ermittelt die CLR mittels Reflection den aufzurufenden
Programmcode.
Die in .NET eingebauten Mechanismen zur Objektserialisierung benötigen die MetaDaten, die sie via Reflection ermitteln. Objektserialisierung ist wiederum die Basis für das
Remoting in.NET.
Der Garbage Collector verwendet Reflection um festzustellen, welche Objekte noch in
Benutzung sind.
Mittels des Reflection-Mechanismus kann man dynamisch Code zur Laufzeit erzeugen.
3.15 XCOPY-Deployment und Versionierung
Die meisten .NET-Anwendungen müssen nicht mehr installiert werden, sondern können
einfach an einen beliebigen Ort kopiert und von dort gestartet werden (der Begriff XCOPYDeployment nimmt Bezug darauf, dass zum Installieren einer .NET-Anwendung der DOSBefehl XCOPY ausreicht).
Diese Rückbesinnung auf die Wurzeln von Windows ist möglich durch den Verzicht auf die
Registry als Konfigurationsspeicher und der Speicherung von DLLs im /System32Verzeichnis (oder anderen zentralen Verzeichnissen). Anwendungsspezifische
Konfigurationsinformationen werden nun in Form von XML-Dateien im
Anwendungsverzeichnis abgelegt. Auch alle benötigten DLLs sollten dort liegen. Nur für
wenige Ausnahmen, in denen eine Mehrfachnutzung einer DLL sinnvoll ist (z.B. bei der
Framework Class Library), gibt es weiterhin einen zentralen Speicherort, den so genannten
Global Assembly Cache (GAC), der unter %Windows%/Assembly liegt. Der GAC ist aber
kein einfaches flaches Verzeichnis, sondern eine komplexe Verzeichnishierarchie, die
ermöglicht, gleichnamige DLLs in beliebig vielen verschiedenen Versionen zu speichern.
Dies ist das Ende der DLL-Hölle (der gegenseitigen Störung von Anwendungen durch die
Verwendung einer DLL in unterschiedlichen, inkompatiblen Versionen).
3.16 Zum Thema Plattformunabhängigkeit
Das .NET Framework ist nicht nur durch die Verwendung der Zwischensprache MSIL
plattformunabhängig. Microsoft hat weite Teile des .NET Framework bei der European
Computer Manufacturers Association (ECMA) standardisieren lassen. Der Standard heißt
Common Language Infrastructure (CLI), ECMA-Standard Nr. 335.
18 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Zum Zeitpunkt der Erstellung dieses Skriptes gibt es eine Implementierung der CLI für
FreeBSD. Weitere Implementierungen für LINUX und für verschiedene UNIX-Derivate sind
in Arbeit. Zum Beispiel das Mono project von Novell. (http://www.go-mono.com/)
Im Rahmen der Standardisierung hat Microsoft auch weite Teile des Quellcodes des .NET
Frameworks und der Programmiersprache C# für jedermann zugänglich gemacht (Shared
Source CLI).
Von der Standardisierung ausgenommen sind allerdings die Datenbankschnittstelle
ADO.NET (FCL-Namespace System.Data) und die Benutzeroberflächen-Bibliotheken
Windows Forms (FCL-Namespace System.Windows.Forms) und ASP.NET (FCLNamespace System.Web).
3.18 Interoperabilität
Um die Akzeptanz des .NET Framework zu fördern, hat Microsoft sinnvoller Weise eine
Interoperabilität mit klassischen Windows-Anwendungen und COM-Komponenten
sichergestellt. Die CLR ermöglicht sowohl den Aufruf von klassischen C-Style-DLLs (z.B.
dem WIN32-API) als auch COM-Komponenten. Andersherum kann eine .NET-Anwendung
auch als COM-Komponente aufgerufen werden.
.NET Anwdg.
Dienste/Bausteine
Sprachen
C#, V-Basic...
Enterprise Servers
SQL-Server
Runtime Environment
BizTalk
Dienste
.NET COM
Framework
OS
19 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
.Net
NET Framework .NET Framework
Laufzeitsystem: (Runtime Environment)
- Verwaltung des Speichers (Garbage
Collection/Defragmentierung des Speichers
längere freie Speicherbereiche)
- Start/ Stop von Prozessen
- Sicherheit
- Bezüge der Komponenten
Klassenbibliotheken
Framework = Menge wiederverwertbarer
Klasse
CLR-Aufbau
Unterstützung der Basisklassen
Thread-Einbindung
COM-Marshaler
Typ-Überprüfung
Ausnahmebehandlung
Sicherheitsmaschinerie
Debugger
JIT-Compiler
Code Manager
Garbage Collector
Klassenlader
Klassen :
Framework Klassenbibliotheken
organisiert in Namensräumen (name Space)
schaffen logische Gruppen
Interfaces (Schnittstellen) definieren das Angebot der Klassen
.NET Framework Klassensystem
ASP
VB Forms
MFC/ATL
Bibliotheken
Microsoft Foundation
Active Server
Oberfläche
Class / Active Remplate Pages
Listening (C++ für
COM)
Web Services
NET Enterprise
Services
20 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Wie arbeiten die Klassen des Frameworks zusammen?
ASP .NET
Web Forms
Benutzeroberfläche
WIN Forms
Web Service
Anbindung
Dateien und XML
ADO .NET
(Active Data
Objects)
XML...
21 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
4.
Architekturvergleich
4.1
Modell 1: HTML
Client
Browser
4.2
Server
HTML
wird
interpretiert
Modell 2: DHTML
Browser
wird interpretiert
bis Aufruf
lokaler Komponente
DHTML
COM
Lokale Komponente
Allgemeine
Anwendung
Modell 3: ASPX
Virtueller Pfad
ung
rdn
Zuo IIS
zu
}
4.3
}
Anfrage
Physikalische
Adresse
//localhost
Server
IIS
HTML
In der Verwaltung IIS
-> „Informationsdienste“
muss das virtuelle
Verzeichnis phys.
Zugeordnet sein
22 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
5.
Einbindung in eine Anwendungsarchitektur
Quelle:
Erläuterungen zum Buisinessexample
„Duwamish-Online aus Microsoft-Quellen visual.NET
Business Facade
Client
Web
Anwendung
Browser
Business Rules
Abarbeitung
Oberfläche
Data Access
Datenzugriff
System Framework
Anwendungskonfiguration
Common
Spezielle Datenbereiche
Zusammenspiel Client (Browser) ↔ Server in einer Web-Applikation
Anfrage
.aspx
Browser
.asp
IIS
HTML
.aspx
CLR
aspx
beim
ersten
Zugriff
Assembly
Code
behind
Assembly Programm ist lesbar mit ILDSAM (Interface Language Disassembler)
23 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Präsentationsschicht
IIS
Client
CLR
ASP.NET
Web-Forms
Kennung.aspx
Ablauflogik
Transport
Ablauf
Datenabstraktion
Datenhaltung
Verarbeitung : CLR Common Language Runtime
• Programme verwenden Standardbibliotheken
#using <mscorlib.dll> (microsoft core library)
→ damit die Verwaltung möglich ist, wurden neue Schlüsselworte eingeführt:
• delegate deklariert Referenzauf eine/Mehrere Methoden
• property deklariert eine Eigenschaft für eine „managed-Class“
• gc
deklariert eine Klasse, die von der Garbage-Collection verwalted wird
Garbage Collection:
• alle Klassen angelegt auf einen zentral angelegten HEAP
• Sonderformen: Wertklassen angelegt auf einem Stack
• managed Schnitstellenklassen
24 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
6.
Vertieftes Verständnis der Web-Anwendungsarchitektur
Ziel: -Wdh. – Zusammenarbeit Browser (Client) ↔ Server
- Informationsgewinnung über den Client
- Verständnis der Webanbindung in einer komplexeren Anwendung
(Microsoft Enterprise example „Duwamish“)
Beispiel Nutzung .NET-Framework Klassen in einer WEB-Anwendung
.NET-Klassen werden zur Unterstützung der Web-Programmierung eingesetzt
Beschreibung der Klassenbibliothek
Microsoft Developer Network – Information (hier auch im Help zu Visual Studio)
Attribute der Klassen
Methoden der Klassen
entspr. Aufruf/Anwenungsinfo
Klassenübersicht = Foundation Class
Beispiel:
HttpRequest User-Host Address liefert IP-Adresse des Client
Aufruf:
xx Request UserHostAddress
locale Instanz / / Member- Variable der Klasse
25 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Beispiel Duwamish
N-tier-Architektur
Presentation Layer
Workflow Layer
Business Layer
Data Access Layer
Data
Source
Presentation
Layer
Client
Browser
Server
Anwendung
?
IIS
.asp Verarbeitung
ISAPI
„Internet Server
Applikation
Programmer
Interface“
sucht richtige
.dll zur
Verabeitung von
.aspx
Business Facade
Workflow
Layer
26 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
IIS
[ Banner
Menü
default.aspx
Seitenstruktur
Web-Oberfläche
Seitenstruktur
.....
Bannermodul.aspx
Web Control
Anwendung
Shoppingcart.aspx
Banner
Verarbeitung
Modulbase.vb
Cart.vb
Menü
Shoppingcart
Oberfläche
27 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.
Anbindung der Datenhaltungsschicht
7.1
Grundlagen
Browser
WEB
Buisiness
Facade
Embedded
SQL
Data
Access
Zugriffsschicht durch „Geschäftssystem“
Parametrierung/Aufrufe
Datenbankverbindung + SQL-Weiterleitung
DBMS
Datenzugriffsverfahren
ODBC
DAO
OLE DB
ADO
⇓
ADO.NET
-
open Database Connectivity
Data Access Object
OLE Database
Active-X Data Objects
-
Active-X Data Objects im .NET Framework
-
28 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Kernfunktionen
von ADO.NET
• Verbindung zur Datenbank
• Daten verwalten (anlegen, ändern, löschen)
• Datenstrukuren vewalten
Verwaltungsschicht CLR
Datenzugriffsklassen sin Teil der Framework Klassenbibliothek
icr
M
te
of
s
o
en
ing
e
DB
.NET
Client
Verwalter
OLE DB
Provider
Verwalteter
SQL-Server
„COM-Interoperation“ - Schicht
OLE DB
Fremddb-Komponenten
DB
Struktur
Datenzugriff:
• Verbindungsobjekt
• Befehlsobjekt
Beispiel:
siehe Visual C++ Schritt für Schritt S.524 ff.
Datenaustausch/ Transfer
über Extensible Markup Language XML
Spezifikation: W3C www.w3.org, www.xml.com
beschrieben in EBNF (Extended Backus Naur Form)
Start- Tag
[40] STag ::= ’<’ Name (S Attribute) *S? ’>’
hierzu gibt es WFC: Unique Att Spec
WFC Well Formdness Constraint: Unique Att Spec
No Attributename may appear more than once in the same start tag or empty element
tag
exemplarisch:
<termdef id=”dt_dog” term=”dog”>
29 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.2
Ergänzende Hinweise zur Anwendungentwicklung
7.2.1 Web Anwendungen mit Web-Forms
Web Forms implementieren ein Programmiermodell, bei dem Webseiten auf einem
Webserver dynamisch generiert und über das Internet auf einem Browser ausgegeben
werden.
Sie sind in gewisser Weise Nachfolger/Erweiterungen der klassischen ASP-Seiten.
Bei Web Forms legt man HTML-Seiten für die statischen Inhalte an und schreibt C# oder
anderen Code für die dynamischen Inhalte.
Das Programm läuft auf dem Server, und die daraus resultierenden Daten werden in den
statischen HTML-Code integriert, wodurch die Webseiten erzeugt werden.
Was schließlich an den Browser gesendet wird, ist nichts weiter als normales HTML.
Die Benutzeroberfläche wird in einer Datei mit der Erweiterung .aspx gespeichert.
Die zu der Seite gehörende Logik (der Programmcode) kann in einer gesonderten Quelldatei,
die „Code-Behind-Datei“ gespeichert werden.
Dieser Programmcode nutzt die reichhaltigen Web Forms-Typen, die sich in den
Namensräumen System.Web und System.Web.UI der Framework Class Library (FCL)
befinden und Bestandteil von .NET sind.
Wenn eine Anfrage von einem Browser an den Server gestellt wird, wird die Code-BehindKlassendatei ausgeführt und erzeugt dynamisch die HTML-Seite, die an den Client-Browser
gesendet wird.
7.2.2 Events bei Web-Formularen
Web-Formulare sind Event-getrieben. Events (Ereignisse) kapseln die Vorstellung davon,
dass »etwas geschehen« ist, in einem Objekt. Ein Event wird ausgelöst, wenn der Benutzer
eine Schaltfläche anklickt, etwas aus einer Listbox auswählt oder sonstwie mit der Oberfläche
interagiert.
Eine Methode, die auf ein Event reagiert, nennt man Event-Handler. Event-Handler werden
als Programm in die Code-Behind-Seite geschrieben und durch Kontrollattribute
mit den Controls der HTML-Seite verknüpft.
Bei den meisten Web-Anwendungen werden Events normalerweise auf dem Server
behandelt und erfordern daher eine Hin- und Rückübertragung. ASP.NET unterstützt
nur eine begrenzte Menge von Events, so etwa Button-Klicks und die Änderungen an
Texten.
30 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.2.3 Postback-Events und Non-Postback-Events
Postback-Events sind solche Events, die dazu führen, dass das Formular unmittelbar an
den Server zurückgesandt wird. Dazu gehören Maus-Events wie zum Beispiel ButtonClick.
Im Gegensatz dazu werden viele Events, typischerweise bei Änderungen an Edit-Feldern
u.s.w., als Non-Postback angesehen, die nicht sofort an den Server zurückgesandt werden.
Solche Events werden stattdessen vom Control zwischengespeichert, bis das nächste
Postback-Event auftritt.
Man kann Controls mit Non-Postback-Events zwingen, sich wie Postbacks zu
verhalten, indem man ihre Eigenschaft AutoPostBack auf true setzt.
7.2.4
Zustand einer Web-Anwendung
Der Zustand einer Web-Anwendung ist der aktuelle Wert all ihrer Controls und Variablen
in Hinblick auf den aktuellen Benutzer und die aktuelle Sitzung. Das Web selbst ist
eine »zustandslose« Umgebung. Das heißt, was an den Server gesendet wird, hat keinen
Zusammenhang mit vorangegangenen Sendungen, sofern nicht der Entwickler die
notwendigen Anstrengungen unternimmt, um das Wissen über den Zustand festzuhalten.
Allerdings bietet ASP.NET Unterstützung bei der Zustandsverwaltung von
Benutzersitzungen.
Nachdem eine Seite an den Server übergeben worden ist, erstellt der Server sie stets von
Grund auf neu, bevor er sie an den Browser zurücksendet. ASP.NET bietet die notwendigen
Mechanismen, um den Zustand der Server-Controls festzuhalten. Wenn Sie zum Beispiel
eine Liste anbieten und der Benutzer eine Auswahl aus dieser Liste vorgenommen
hat, bleibt daher diese Auswahl erhalten, nachdem die Seite an den Server zurückgesandt
und anschließend vom Client neu aufgebaut wurde.
7.2.5
Der Lebenszyklus eines Web-Formulars
Jede Anfrage nach einer Seite verursacht eine Kette von Events auf dem Server. Diese
Events bilden, vom Anfang bis zum Ende, den Lebenszyklus der Seite und all ihrer
Komponenten.
Der Lebenszyklus beginnt mit einer Anfrage an den Server, die diesen zum
Laden der Seite veranlasst. Nachdem die Anfrage abgeschlossen ist, wird die Seite
freigegeben.
Vom Anfang bis zum Ende des Lebenszyklus besteht das Ziel darin, geeigneten
HTML-Code für den anfragenden Browser zu erzeugen. Der Lebenszyklus einer Seite
wird durch die folgenden Ereignisse gekennzeichnet; jedes von ihnen kann entweder
selbst behandelt oder der Standardbehandlung durch den ASP.NET-Server überlassen
werden:
31 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Lebenszyklus des Web-Formulars auf dem Server
HTML request
Initialize
Load ViewState
Process Postback Data
Load
Send Postback Change Modifications
Browser
(Client)
PreRender
Save State
HTML reply
Render
Dispose
32 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.2.6
Erläuterung der Events im Lebenszyklus einer Web-Form
Initialize (Initialisieren)
Die Initialisierung ist die erste Phase im Lebenszyklus jeder Seite und jedes Controls.
An dieser Stelle werden alle Einstellungen initialisiert, die für die Dauer der eingehenden
Anfrage benötigt werden.
Load ViewState (ViewState laden)
Die Eigenschaft ViewState des Controls wird gefüllt. Die ViewState-Information
kommt aus einer verborgenen Variablen des Controls, die dazu dient, ihren Zustand
über mehrere Anfragen an den Server hinweg zu bewahren. Der Eingabe-String dieser
verborgenen Variablen wird durch das Seiten-Framework gelesen und die Eigenschaft
ViewState wird dementsprechend gesetzt. Dieser Vorgang kann durch die
Methode LoadViewState() modifiziert werden. Dadurch erhält ASP.NET die Möglichkeit,
den Zustand des Controls über ein erneutes Laden der Seite hinweg zu verwalten,
so dass das Control nicht auf seinen Ursprungszustand zurückgesetzt wird,
wenn die Seite übersandt wird.
Process Postback Data (Postback-Informationen verarbeiten)
Während dieser Phase werden die Daten verarbeitet, die der Server beim Übersenden
der Daten erhalten hat. Wenn diese Daten es erfordern, dass der ViewState aktualisiert
wird, erfolgt der Update über die Methode LoadPostData( ).
Load (Seite laden)
Falls es erforderlich ist, wird die Methode CreateChildControls() aufgerufen, um die
Controls in der Baumstruktur zu initialisieren. Der Zustand wird zurückgesetzt und
die Controls zeigen die Client-seitigen Daten an. Die Ladephase kann modifiziert
werden, indem das Event Load durch die Methode OnLoad modifiziert wird.
Send Postback Change Modifications (Änderungen der Postback-Information senden)
Wenn es Veränderungen zwischen dem aktuellen und dem vorherigen Zustand gibt,
werden mit Hilfe der Methode RaisePostDataChangedEvent() Change-Events ausgelöst.
Handle Postback Events (Postback-Events behandeln)
Das Client-seitige Ereignis, in dessen Folge das Formular zurückgesendet wurde,
wird behandelt.
PreRender (Vor Seitenaufbau)
Die Phase unmittelbar vor der Erzeugung der Ausgabe an den Browser. Im Wesentlichen
besteht hier die letzte Chance, die Ausgabe zu modifizieren, indem die Methode
OnPreRender() verwendet wird.
Save State (Zustand sichern)
Kurz nach dem Beginn des Lebenszyklus ist der View-State aus einer verborgenen
Variablen ausgelesen worden. Nun wird er in die verborgene Variable zurück geschrieben,
die als String-Objekt überdauert und die Rücksendung an den Client
beendet. Dieses Verhalten kann mit Hilfe der Methode SaveViewState() überschrieben
werden.
33 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Render (Seite aufbauen)
An dieser Stelle werden die Ausgaben generiert, die an den Clienten geschickt werden
sollen. Dies kann mit Hilfe der Methode Render überschrieben werden. Falls erforderlich,
wird hier CreateChildControls() aufgerufen, um die Server-Controls im Control-Baum zu
initialisieren.
Dispose (Seite freigeben)
Dies ist die letzte Phase des Lebenszyklus. Sie bietet die Möglichkeit, abschließende
Aufräumarbeiten durchzuführen und Referenzen auf irgendwelche anspruchsvollen
Ressourcen freizugeben, zum Beispiel auf Datenbankverbindungen. Dies
kann mit der Methode Dispose() geändert werden.
7.2.7
Beispiel eines ersten Web-Formulars
Prinzipiell um ein Web Formular zu erstellen, benötigt man nicht mehr als einen beliebigen
Texteditor um eine *.aspx Datei für die Oberfläche und eine *.aspx.cs Datei (Code-Behind)
für die Verarbeitung, sowie das .NET Framework SDK.
Wenn man eine andere Programmiersprache als C# nutzt, muss die Dateiendung der CodeBehind Datei entsprechend geändert werden. Bei Visual-Basic wäre es z.B. *.aspx.vb.
Die erstellten Quelldateien können dann mit den Kommandozeilen Compiler des .NET SDK
kompiliert werden.
Viel komfortabler entwickelt man Web Formulare mit einer IDE wie Visual Studio. Dies wird
in diesem Beispiel erläutert.
Als erstes wird ein neues Projekt erstellt. Hier eine C# Web-Applikation.
Visual Studio legt fast alle Dateien, die es für das Projekt erzeugt, in einem Ordner unterhalb
der Standard-Website des Rechners ab, in diesem Beispiel in WebApplication1.
Visual Studio erstellt eine Anzahl von Standard Dateien für das Projekt. Das Web-Formular
selbst wird in einer Datei namens WebForm1.aspx gespeichert. Diese Datei enthält
ausschließlich HTML.
34 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Eine zweite, gleich wichtige Datei, heißt WebForm1.aspx.cs und enthält den C#-Code, der
mit dem
Formular verbunden ist. Dies ist die Code-Behind-Datei.
Datei für die
Benutzeroberfläche
Code-Behind Datei in C#
Um die Code-Behind-Datei (.cs) zu sehen, muss der Cursor innerhalb von Visual Studio .NET
gesetzt werden. Das Formular mit der rechten Maustaste anklicken und im Pop-Up-Menü
»Code anzeigen« anwählen.
Nun kann zwischen dem Formular selbst, der Datei WebForm1.aspx und der C#-CodeBehind-Datei WebForm1.aspx.cs hin- und hergeschaltet werden.
Wenn man sich das Formular in WebForm1.aspx ansieht, kann man zwischen dem
Design- und dem HTML-Modus umschalten, indem man auf die Reiter unterhalb des EditorFensters klickt.
35 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Kontext Menüpunkt
Um die Code-Behind
Datei anzuzeigen
Entwurf/Design Ansicht
HTML Ansicht
Die WebForm1.aspx Datei enthält typischen HTML-Vorlagentext. Eine Ausnahme davon ist
die erste Zeile, die den folgenden ASP.NET-Code enthält:
(etwas umformatiert um die Lesbarkeit zu erhöhen)
<%@
%>
Page language="c#"
Codebehind="WebForm1.aspx.cs"
AutoEventWireup="false"
Inherits="WebApplication1.WebForm1"
Das Attribut language zeigt an, dass die in der Code-Behind-Seite verwendete Sprache C#
ist. Das Attribut Codebehind legt fest, dass der Dateiname dieser Seite WebForm1.aspx.cs ist,
und dem Attribut Inherits ist zu entnehmen, dass diese Seite von WebForm1 abgeleitet ist.
Wenn man in die WebForm1.aspx.cs Datei sieht, findet man schnell die Zeile
public class WebForm1 : System.Web.UI.Page
Der C#-Code macht deutlich, dass WebForm1 von System.Web.UI.Page abstammt. In dieser
Klasse sind Eigenschaften, Methoden und Events definiert, die allen serverseitigen Seiten
36 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
gemeinsam sind.
In der HTML-Ansicht von WebApplication1.aspx sieht man, dass im Body der Seite mit
Hilfe des Standard-HTML-Tags form ein Formular beschrieben wird:
<form id="Form1" method="post" runat="server">
</form>
Jedes Web-Formular benötigt mindestens ein solches tag, um mit dem Benutzer zu
interagieren. Alle Controls werden zwischen diesen form tags gesetzt.
Das Attribut runat="server" sagt aus, dass es sich um ein serverseitiges Control handelt und
von ASP.NET auf dem Server ausgeführt wird.
In die WebForm.aspx Datei kann Standard HTML und klassisches ASP eingefügt werden.
Beispiel:
<body MS_POSITIONING="GridLayout">
Hallo Welt! Es ist jetzt <% = DateTime.Now.ToString() %>
<form id="Form1" method="post" runat="server">
</form>
</body>
Wenn die Seite mit Hilfe von Strg-F5 ausgeführt wird, erscheint im Browser:
Dies hat noch wenig mit ASP.NET zu tun. Also fügt man noch einen Button ins Formular ein.
Dazu wechselt man in den Entwurfsmodus der WebApplication1.aspx Datei und zieht durch
Drag&Drop einen Button ins Formular.
37 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Dadurch werden die Projektdateien wie folgt geändert:
1. in der WebApplication1.aspx Datei diese Zeile hinzugefügt:
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 23px; POSITION:
absolute; TOP: 46px" runat="server" Text="Button"></asp:Button>
2. in die WebApplication.aspx.cs Datei wird der Button bekannt gemacht:
protected System.Web.UI.WebControls.Button Button1;
an diesen Zeilen kann man sehr schön erkennen, dass über die id in der *.aspx Datei eine
Verbindung zur *.aspx.cs Datei (Code-Behind) hergestellt wird.
Wenn man die Seite mit Strg-F5 ausführt und sich im Browser den Quellcode anzeigen lässt,
sieht man, dass folgendes gesendet wurde.
...
<input type="submit" name="Button1" value="Button" id="Button1"
style="Z-INDEX: 101; LEFT: 23px; POSITION: absolute; TOP: 46px" />
...
Das bedeutet, dass ASP.NET die Zeile in der *.aspx Datei in Standard HTML gewandelt hat,
bevor die Seite gesendet wird.
Als nächstes wollen wir einen EventHandler hinzufügen, um in unserem C# Programm auf
einen Klick auf den Button reagieren zu können.
Dies geht am leichtesten, wenn im Entwurfsmodus ein Doppel-Klick auf dem Button
durchgeführt wird.
38 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Dadurch fügt die IDE automatisch einen EventHandler zu diesem Ereignis in der CodeBehind Datei hinzu.
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
Zusätzlich wird eine Methode hinzugefügt, die immer wenn das Ereignis auftritt ausgeführt
wird.
private void Button1_Click(object sender, System.EventArgs e)
{
}
Diese Methode „Button1_Click“ wird immer ausgeführt, wenn der Button vom Benutzer am
Browser gedrückt wird. Das liegt daran, dass ein Button zu den Postback-Events gehört und
beim Klick darauf ein sofortiges Senden zum Server ausgelöst wird.
Wird in dem Rumpf der Methode die folgende triviale Programmzeile geschrieben, wird beim
Klick auf den Button die Beschriftung des Buttons geändert.
Button1.Text = "button clicked";
7.2.8
XML Web Services Konzept
Wenn ganze Geschäftsabläufe abgebildet werden, die einen automatischen Datenaustausch
innerhalb eines Unternehmens voraussetzen und externe Partner einbeziehen, stellen WebServices eine mögliche Lösung dar.
Ein Beispiel für die Einbeziehung eines externen Partners ist ein Web-Shop mit
Kreditkartenzahlung. Die Abwicklung einer Kreditkartenbuchung und die Freigabe der
39 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Zahlung geschehen über einen Dienstleister wie einer Bank, einem Kreditkartenunternehmen
oder einem unabhängigem Server-Provider.
Dem Partner werden die notwendigen Informationen übergeben und dieser muss als Antwort
ebenfalls Informationen liefern. In diesem Fall (Kreditkarten-Clearing) ist es typischerweise
ein „Go“ oder „NoGo“.
Die Anbindung eines externen Partners geschieht über eine Schnittstelle. Eine solche
Schnittstelle sah in der Vergangenheit bei jedem Anbieter anders aus, sofern überhaupt eine
vorhanden war. Besser wäre also eine einheitliche Schnittstelle. Diese sollte so allgemein
gestaltet sein, dass sie grundsätzlich als Verbindung zwischen Geschäftspartnern genutzt
werden kann. So sind Anwendungen wie beispielsweise diese folgende möglich:
Eine Produktionsfirma X könnte automatisiert bei einem Großhändler Y einkaufen,
wenn der Lagerbestand einen bestimmten Minimalwert erreicht hat. Genauso denkbar ist, mit
der gleichen Technologie vor der automatisierten Bestellung ebenfalls automatisiert den
günstigsten Händler zu suchen und diesem den Zuschlag zu geben.
7.2.9
XML Webservice
Ein Konsortium bekannter Unternehmen wie IBM und Microsoft haben den Grundstein zu
einer plattformübergreifenden Theorie geliefert, der die einheitliche Kommunikation von
Komponenten über das Internet erlauben soll.
XML Web Services basieren auf SOAP, also auf HTTP und XML, HTTP GET oder HTTPPOST. .NET versucht als Voreinstellung alle Protokolle zu unterstützen. (versucht, weil
manche Web-Services zu komplex für HTTP-GET sind).
HTTP dient als technische Basis für die Übertragung der Daten. Der Vorteil dieses Protokolls
ist die starke Verbreitung. Jede gängige Firewall und jeder Proxy unterstützen dieses
Protokoll.
Für die Sicherheit der Daten ist dank SSL und HTTPS schon gesorgt. Die übertragenen Daten
selbst liegen in der standardisierten Beschreibungssprache XML vor.
Dies gilt sowohl für die Anfrage des Clients als auch für die Antwort des Servers.
Ganz konkret kann man sich einen XML Webservice als eine Klasse vorstellen, die
bestimmte öffentliche Methoden anbietet. Diese Methoden können ausgeführt werden.
Derartige Mehoden werden Web-Methods genannt.
7.2.10 .asmx Dateien
Ausgangspunkt für einen XML Web Service ist das Erstellen einer *.asmx Datei. Das asmx
steht für active server method extended. Im einfachsten Fall wird nur diese Datei für einen
Webservice benötigt.
Die Datei beginnt mit einer Direktive die "@Webservice" lautet. Ähnlich wie in *.aspx
Dateien können hier unter anderem die gewünschte Sprache angegeben werden sowie der
Debug Modus ein- oder ausgeschaltet werden.
Beispiel einer Direktive für einen Webservice:
<% @Webservice Class="HalloWeltKlasse" Language="C#" Debug="true" %>
40 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Anders als bei *.aspx Dateien kann hier direkt im Anschluss C# Programmcode folgen. Das
Class Attribut nennt ASP.NET die als Web-Service offenzulegene Klasse. Diese Klasse dient
als Einstiegspunkt für den Webservice und kann stark vereinfacht mit dem Deklarieren einer
main()-Funktion in einem ISO C Programm verglichen werden, die den Einstiegspunkt für ein
Konsolenprogramm angibt.
Die angegebene Klasse muss von der Klasse Webservice abgeleitet sein und wird entweder
direkt hinter der Web-Service Direktive durch inline Code definiert oder, wie der Assistent
von Visual Studio .NET es macht, in einer Code-Behind Datei ausgelagert.
7.2.11 Beispiel für eine .asmx Datei mit inline Code.
Zwar bietet Visual Studio .NET für .NET-Entwicklungen eine integrierte
Entwicklungsumgebung mit großer Funktionsvielfalt, aber diese ist zum Anlegen von einem
XML Web-Service nicht unbedingt erforderlich.
Ich habe für dieses Beispiel den Notepad Editor von Windows benutzt und die kostenlos
verfügbaren Kommandozeilenwerkzeuge vom .NET Framework SDK.
Hier kann man sehr schön sehen, dass die Methode sagHallo() wie gewohnt einfach als public
deklariert wird, damit sie von außen aufrufbar ist. Diese kann natürlich auch über Parameter
verfügen sowie über einen Rückgabewert. Einziger Unterschied ist, dass die Methode mit
einem [WebMethod]-Attribut kenntlich gemacht werden muss.
7.2.12 Testen des Web-Services mit dem Internet Explorer.
Anders als Active Server Pages (.aspx) sind XML-Web Services nicht zur Betrachtung mit
einem Browser gedacht. Statt dessen werden sie von Client-Anwendungen über Protokolle
HTTP GET/POST oder SOAP über HTTP genutzt.
Wenn trotzdem ein Web-Service mit dem Browser aufgerufen wird, stellt das .NET
Framework eine standardisierte Testseite für Web-Services zur Verfügung. Diese Seite wird
jedes Mal von der .NET HTTP-Runtime generiert, wenn ein Browser auf eine *.asmx Datei
41 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
gerichtet wird. Diese Seite selbst ist eine *.aspx Seite mit dem Namen
DefaultWsdlHelpGenerator.aspx und liegt im Verzeichnis
\[Windir]\Microsoft.NET\Framework\[Version]\Config. Diese Seite funktioniert wie jede
andere *.aspx Seite und kann verändert werden.
Die Runtime generiert auch automatisch eine Service-Beschreibung aus der *.asmx Datei.
Dies ist ein XML-Dokument, das der Spezifikation namens "Web Service Description
Language" oder kurz WSDL (ausgesprochen >>Wiz-Duhl<<) entspricht. Durch einen Klick
auf den Link Dienstbeschreibung gelangt man zur WSDL-Seite.
42 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Dieser Seite kann man Informationen über die Namensräume, die der Web-Service benutzt,
entnehmen (die unterstützten Protokolle, die benutzten Datentypen sowie die offengelegten
Web-Methoden).
Die WDSL-Spezifikation ist eine Art Dreh- und Angelpunkt für die verschiedenen WebService-Entwicklungsplattformen. Wenn unterschiedliche Web-Services zusammenarbeiten
wollen, müssen sich die Web-Service Entwickler an dieselbe Version von WSDL und an
dieselbe Version von SOAP halten.
43 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Zurück zur Testseite. Durch einen Klick auf den Methodennamen, gelangt man auf eine Seite
mit der Beschreibung der Methode und einem Button um sie zu testen ("Aufrufen").
Durch einen Klick wird das Ergebnis der Methode angezeigt, verpackt in XML.
Falls die Methode über Parameter verfügen würde, wären Eingabefelder für die zu
übergebenen Parameter da. Das funktioniert auch, solange nur einfache Datentypen als
Parameter übergeben werden. Sobald man versucht ein Objekt zu übergeben, muss man sich
ein eigenes Testprogramm schreiben.
44 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.2.13 Einen XML Webservice nutzen
Den prinzipiellen Aufbau von Anfrage und Antwort eines XML-Web-Services haben wir
bereits gesehen. Die Anbindung wäre keine wirkliche Erleichterung, wenn man sie manuell
vornehmen müsste.
Dafür gibt es in ASP.NET ein Tool, das eine so genannte Proxy-Klasse automatisch erstellt.
Diese Proxy-Klasse muss nun in dem eigenen Programm mit using bekannt gemacht werden.
Dann braucht man nur noch ein Objekt aus dieser Klasse zu erstellen und kann die Methoden
des Objektes (die offengelegten Methoden des Web-Services) benutzen.
1.Methode: Proxy Klasse manuell erstellen
Das benötigte Tool um die Proxy-Klasse zu erstellen, heißt wsdl.exe und ist im Verzeichnis
\[Windir]\Microsoft.NET\Framework\[Version]\ zu finden.
um die Proxy-Klasse zu erstellen, muss wsdl.exe nur die gewünschte Programmiersprache
und die URL zum Web-Service angegeben werden.
Wichtig ist dabei, bei der URL den Parameter WSDL als GET-Parameter mit anzugeben.
Beispiel:
wsdl.exe /l:c# http://localhost/HalloWelt.asmx?WSDL
Das Ergebnis ist eine C# Quellcode-Datei namens HalloWelt.cs.
2.Methode: Proxy Klasse mit Visual Studio erstellen
Jeder, der eine Lizenz vom Visual Studio .NET besitzt, hat es etwas komfortabler. Um einen
Web Service in einem Projekt nutzen zu können, muss man nur ein wenig klicken.
Die notwendige Option findet man unter Projekt | Webverweis hinzufügen.
Das stelle ich einfach als eine Sammlung von Screen-Shots vor.
Bei dieser Methode kann man auch auf das manuelle Hinzufügen des WSDL Parameters
verzichten.
45 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
46 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
7.2.14 WSDL (Web Service Description Language)
Damit man über die Proxy-Klasse den Web-Service nutzen kann, müssen genaue
Informationen über den Web Service eingeholt werden. Es wird ein so genannter Vertrag
abgefragt, der die angebotenen Web-Methoden, deren Parameter und den Rückgabewert
enthält. Wie im richtigen Leben ist der Vertrag ein bindendes Dokument, an das sich beide
Seiten halten müssen.
Dieser Vertrag ist ein XML-Stream. Dieser ist nach den Regeln der WSDL verfasst.
Auf der Basis dieses Vertrages kann eine lokale Klasse erstellt werden. Diese stellt die
Methoden des Web-Services zur Verfügung und leitet Aufrufe intern an diesen weiter.
7.2.15 Das Code-Behind Modell etwas besser verstehen
Der Code-Behind-Ansatz bei der Programmierung von Web-Services sieht die Trennung von
der Geschäftslogik vor, also von dem Web-Service Direktive und dem unterstützenden Code.
In diesem Modell enthält die *.asmx Datei nur die Web-Service Direktive und der Quelltext
steht in einer separaten Datei im Falle von C# mit der Dateiendung .asmx.cs. Diese Datei wird
in eine Assembly kompiliert und in das bin Verzeichnis des Web-Services gelegt.
Wird der Web-Service nun aufgerufen, liest ASP.NET die Direktive um den Namen der
Klasse herauszufinden, die die unterstützende Logik enthält. ASP.NET sucht im bin
Verzeichnis nach der passenden Assembly (MSIL-Code). Wenn im bin Verzeichnis mehrere
Assemblies liegen, durchsucht ASP.NET alle, bis es die Richtige gefunden hat.
Einer der Vorteile, die sich aus dem Speichern ihres Codes in kompilierter Form ergeben, ist,
dass auf den Webservern kein Quelltext herumliegt. Ein böswilliger Benutzer, der Zugriff auf
den Server mit ihren Anwendungen erlangt, wird den Code nicht einfach so stehlen können
(>>einfach so<< wird verwendet, weil es Tools zu Dekompilieren von MSIL gibt).
Nachteil des Code-Behind-Modells ist, dass die Verteilung einen weiteren Schritt erfordert das Kompilieren des Quelltextes - was beim inline Code nicht nötig ist.
7.2.16 Test des Web-Services mit einer Windows-Anwendung
Zum Testen des Hallo Welt Web-Services benutze ich eine einfache C# WindowsAnwendung.
Diese erstellt man sich so mit dem Visual Studio:
Datei | Neu | Projekt | Visual C# Projekt| Windows Anwendung
Einen passenden Namen für das Projekt eingeben z.B. TestWebService und OK drücken.
Als nächstes muss, wie unter Punkt 29 beschrieben, der Webverweis auf den Web-Service
hinzugefügt werden.
Danach sollte der Projektmappenexplorer so aussehen:
47 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Mit Hilfe der Toolbox von Visual Studio .NET wurde eine Textbox und ein Button in die
Anwendung gezogen. Diese wurden durch den Objektinspektor angepasst. Der Text der
Textbox wurde gelöscht, damit die Textbox beim Start der Anwendung leer ist. Weiter
wurde die Schriftgröße der Textbox auf 15,25 erhöht, sowie dem Button ein anderer
Text zugewiesen.
Nach dem hinzufügen der Steuerelemente soll die Windows-Anwendung im Entwurf
diese Struktur haben:
48 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Mit dieser Anwendung soll der XML-Web-Service getestet werden. Damit bei einem
Klick auf den Button der Funktionswert der Web-Methode sagHallo() in der Textbox
angezeigt wird, sind noch einige Schritte nötig.
Der Namespace der WebMethode muss der Anwendung mitgeteilt werden, damit nicht
bei jedem erstellen eines Objektes der Klasse HalloWeltKlasse zuvor
TestWebService.localhost. vorangestellt werden muss.
Durch einen Doppelklick auf den Button >>Teste den WebService << wird ein
EventHandler für den Button hinzugefügt. In diesem vom Assistenten erstellten
Funktionsrumpf wird ein Objekt der Klasse HalloWeltKlasse erstellt. Über dieses
Objekt können die Web-Methoden von dem Web-Service benutzt werden. Damit der
Funktionswert in der Textbox angezeigt wird, wenn auf den Button geklickt wird muss
eine Zuweisung an die Text Eigenschaft des Textbox Objektes. Siehe Abbildung:
Wenn dieses Programm mit STRG-F5 ausgeführt wird und auf den Button >> Teste
WebService << gedrückt wird, sollte das Programm so aussehen:
49 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
50 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
Literatur
[1]
Hofmann, Johann; Jobst, Fritz; Schabenberger, Roland:
Programmieren mit COM und CORBA
Hanser, 2001
ISBN 3-446-21479-8
lesenswerte Einführung in COM/CORBA
[2]
Shepherd, George; Kruglinski, David J.:
Inside Visual C++.NET
Microsoft Press Deutschland, 2003
ISBN 3-86063-678-2
[3]
[4]
lesbar, gute funktionsfähige Beispiele
Maslo, Andreas; Freiberger, Jörg M.:
.NET-Framework Developers Guide
Markt + Technik, 2002
ISBN 3-8272-6142-2
weiterführend
Schwichtenberg, Holger; Eller,Frank
Programmieren mit der .NET Klassenbibliothek
Addison-Wesley, 2004
ISBN 3-8273-2128-X
weiterführend
[5]
Schöning, Harald:
XML und Datenbanken
Hanser, 2003
ISBN 3-446-22008-9
[6]
Bengel, Günther:
Grundkurs Verteilte Systeme
Vieweg, 2004
ISBN 3-528-25738-5
[7]
Visual Studio.NET - Exemplarische Vorgehensweisen
Begleitmaterial Visual Studio - Microsoft
[8]
Liberty, Jesse:
Programmieren mit C#
(Deutsche Übersetzung von Dorothea Reder & Jörg Staudemeyer)
O´Reilly, 2002
ISBN 3-89721-331-1
[9]
Ferrara, Alex; MacDonald, Matthew:
Programmierung von .NET Web Services
(Deutsche Übersetzung von Dieter Bremes)
O´Reilly, 2003
ISBN 3-89721-348-6
51 / 52
Prof. Dr.-Ing. Ulrich Samberg
Stichworte zur Vorlesung „.Neue softwaretechnologien“
Mitschrift SS 2004
[10]
Lorenz, Patrick A.:
ASP.NET Grundlagen und Profiwissen
Hanser, 2003
ISBN 3-446-22552-8
[11]
Lorenz, Patrick A.:
ASP.NET Kochbuch
Hanser, 2002
ISBN 3-446-22235-9
Internet
.NET Framework Homepage von Microsoft
URL: http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/netstart/html/sdk_netstart.asp
Die deutsche Info-Site für Programmierung mit dem Microsoft .NET Framework
URL: http://www.dotnetframework.de
Galileo openbook - C# von Eric Gunnerson
URL: http://www.galileocomputing.de/openbook/csharp/
Galileo openbook - Einstieg in ASP.NET von Matthias Lohrer
URL: http://www.galileocomputing.de/openbook/asp/
52 / 52