Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grundlagen des Microsoft.NET Frameworks Master Seminar Advanced Software Engineering Topics Patric Zbinden 1. Mai 2003.

Ähnliche Präsentationen


Präsentation zum Thema: "Grundlagen des Microsoft.NET Frameworks Master Seminar Advanced Software Engineering Topics Patric Zbinden 1. Mai 2003."—  Präsentation transkript:

1 Grundlagen des Microsoft.NET Frameworks Master Seminar Advanced Software Engineering Topics Patric Zbinden 1. Mai 2003

2 Übersicht (1) Die.NET Stategie (2) Common Language Runtime (CLR) (3) Programming in.NET (C#, VB.NET) (4).NET Framework Klassenbibliothek (1)Datentechnik (ADO.NET) (2)Web Forms (ASP.NET) (3)Weitere Themen (5) Fazit

3 .NET Strategie

4 Was ist.NET Framework für Software Entwicklung Framework für Software Entwicklung Interface zu Windows services und API Interface zu Windows services und API Produktgruppen Produktgruppen Entwicklungstools (Programmiersprachen, Visual Studio.NET,.NET Framework SDK) Entwicklungstools (Programmiersprachen, Visual Studio.NET,.NET Framework SDK) Spezialisierte Server (SQL, Exchange, BizTalk) Spezialisierte Server (SQL, Exchange, BizTalk) WebServices WebServices Geräte (Windows CE, PocketPC) Geräte (Windows CE, PocketPC)

5 .NET Strategie Verteiltes Rechnen (XML Web Services) Verteiltes Rechnen (XML Web Services) Remoting Architektur basierend auf offene Internet Standards (HTTP, XML, SOAP) Remoting Architektur basierend auf offene Internet Standards (HTTP, XML, SOAP) Komponenten Infrastruktur Komponenten Infrastruktur COM war zu komplex COM war zu komplex Enterprise services Enterprise services Web Technologie Web Technologie Einfaces Deployment, Zuverlässigkeit, Sicherheit, … Einfaces Deployment, Zuverlässigkeit, Sicherheit, …

6 .NET Enterprise Servers Microsoft Application Center 2000 to deploy and manage highly available and scalable Web applications. Microsoft Application Center 2000 to deploy and manage highly available and scalable Web applications. Microsoft BizTalk Server 2002 to build XML-based business processes across applications and organizations. Microsoft BizTalk Server 2002 to build XML-based business processes across applications and organizations. Microsoft Commerce Server 2002 for quickly building scalable e-commerce solutions. Microsoft Commerce Server 2002 for quickly building scalable e-commerce solutions. Microsoft Content Management Server 2001 to manage content for dynamic e- business Web sites. Microsoft Content Management Server 2001 to manage content for dynamic e- business Web sites. Microsoft Exchange Server 2000 to enable messaging and collaboration anytime, anywhere. Microsoft Exchange Server 2000 to enable messaging and collaboration anytime, anywhere. Microsoft Host Integration Server 2000 for bridging to data and applications on mainframe legacy systems. Microsoft Host Integration Server 2000 for bridging to data and applications on mainframe legacy systems. Microsoft Internet Security and Acceleration Server 2000 for SSL-secured, fast Internet connectivity. Microsoft Internet Security and Acceleration Server 2000 for SSL-secured, fast Internet connectivity. Microsoft Mobile Information 2001 Server to enable application support by mobile devices like cell phones. Microsoft Mobile Information 2001 Server to enable application support by mobile devices like cell phones. Microsoft SharePoint Portal Server 2001 to find, share, and publish business information. Microsoft SharePoint Portal Server 2001 to find, share, and publish business information. Microsoft SQL Server 2000 to store, retrieve, and analyze structured XML data. Microsoft SQL Server 2000 to store, retrieve, and analyze structured XML data.

7 Component Infrastructure Vor COM existierte kein einfacher Weg um Bibliotheken ohne Source Code zu integrieren. Vor COM existierte kein einfacher Weg um Bibliotheken ohne Source Code zu integrieren. COM COM Vorteil: Sprachunabhängig, Internet tauglich (DCOM) Vorteil: Sprachunabhängig, Internet tauglich (DCOM) Nachteile: Nachteile: Kompliziert (COM identity, lifetime, binary layout rules…) Kompliziert (COM identity, lifetime, binary layout rules…) Keine Sprachintegration (keine Vererbung, keine Exceptions, …) Keine Sprachintegration (keine Vererbung, keine Exceptions, …)

8 Common Language Runtime (CLR) Wie: Java Virtual Machine Wie: Java Virtual Machine Virtuelle Maschine für Intermediate Language IL Code. Virtuelle Maschine für Intermediate Language IL Code. Aufgaben Aufgaben Ausführung von Code Ausführung von Code Typenkontrolle Typenkontrolle Sicherheitsüberprüfungen Sicherheitsüberprüfungen Garbage collection Garbage collection …

9 Ausführbare Dateien Datei-Endungen: EXE, DLL Datei-Endungen: EXE, DLL Windows Portable Executable (PE) Standard Windows Portable Executable (PE) Standard

10 CLR Ausführung Kein Interpreter! Kein Interpreter! Verschiedene Compiler für die Erzeugung von Maschinencode Verschiedene Compiler für die Erzeugung von Maschinencode Global Assembly Cache (GAC) Global Assembly Cache (GAC) Just-In-Time (JIT) Compiler Just-In-Time (JIT) Compiler Vergleich mit der JVM: Vergleich mit der JVM: Interpreter Interpreter Erweiterungen: HotSpot Compiler Erweiterungen: HotSpot Compiler

11 JVM vs. CLR CLR CLR Ausgerichtet für verschiedene Programmiersprachen Ausgerichtet für verschiedene Programmiersprachen Im Moment für Windows-Systeme (Mono Projekt Linux) Im Moment für Windows-Systeme (Mono Projekt Linux) JVM JVM Nur für Java Nur für Java Erhältlich auf den meisten Plattformen Erhältlich auf den meisten Plattformen

12 Common Type System (CTS) Interoperabilität erfordert gemeinsame Typen Interoperabilität erfordert gemeinsame Typen Zwei Kategorien Zwei Kategorien Referenz-Typen Referenz-Typen Werte-Typen Werte-Typen

13 Referenz- vs. Werte-Typen Interne Behandlung der CLR Interne Behandlung der CLR

14 Referenz- vs. Werte-Typen Konsequenzen für Programmierer Konsequenzen für Programmierer Zuweisung: a = b Zuweisung: a = b Gleichheit: a == b Gleichheit: a == b Initialisierung Initialisierung

15 Werte-Typen Unterkategorien Unterkategorien Basis-Typen (build-in types, primitive types) Werden von der CLR implementiert Basis-Typen (build-in types, primitive types) Werden von der CLR implementiert Benutzerdefinierte Wertetypen In C# mit dem Schlüsselwort struct (anstatt mit class ) erzeugte Typen. Benutzerdefinierte Wertetypen In C# mit dem Schlüsselwort struct (anstatt mit class ) erzeugte Typen. Aufzählungstypen In C# mit dem Schlüsselwort enum erzeugt. Aufzählungstypen In C# mit dem Schlüsselwort enum erzeugt.

16 Basis-Typen Boolean ( true oder false ) Boolean ( true oder false ) Byte ( ) Byte ( ) Char (Unicode Zeichen) Char (Unicode Zeichen) DateTime (Zeit- und Datumswert) DateTime (Zeit- und Datumswert) Decimal (28 signifikante Dezimalstellen) Decimal (28 signifikante Dezimalstellen) Double (64-Bit Fliesskomma Zahl) Double (64-Bit Fliesskomma Zahl) GUID (128-Bit) GUID (128-Bit) Int16 (16-Bit Zahl mit Vorzeichen) Int16 (16-Bit Zahl mit Vorzeichen) Int32 (32-Bit Zahl mit Vorzeichen) Int32 (32-Bit Zahl mit Vorzeichen) Int64 (64-Bit Zahl mit Vorzeichen) Int64 (64-Bit Zahl mit Vorzeichen) Sbyte ( ) Sbyte ( ) Single (32-Bit Fliesskomma Zahl) Single (32-Bit Fliesskomma Zahl) TimeSpan (Zeitspanne mit Vorzeichen) TimeSpan (Zeitspanne mit Vorzeichen)

17 Referenz-Typen Unterkategorien Unterkategorien Selbstbeschreibende Typen Selbstbeschreibende Typen Array Typen Array Typen Klassen Klassen Benutzerdefinierte Klassen Benutzerdefinierte Klassen Gekapselte Wertetypen (boxed classes) Gekapselte Wertetypen (boxed classes) Delegates Delegates Zeiger-Typen (Pointer) Zeiger-Typen (Pointer) Interface-Typen Interface-Typen

18 Boxing / Unboxing Boxing: Konvertierung von Wertetyp zu Referenztyp Boxing: Konvertierung von Wertetyp zu Referenztyp Beispiel int i = 20; // Wertetyp object box = i; // Referenztyp -> Boxing Beispiel int i = 20; // Wertetyp object box = i; // Referenztyp -> Boxing Unboxing: Umgekehrte Operation Unboxing: Umgekehrte Operation Beispiel int j = (int)box; // Unboxing Beispiel int j = (int)box; // Unboxing Vergleich mit Java: Explizite Boxing Klassen Vergleich mit Java: Explizite Boxing Klassen

19 Objektorientiere Konzepte Die CLR unterstützt OO Konzepte (wie Kapselung, Vererbung und Polymorphismus) Die CLR unterstützt OO Konzepte (wie Kapselung, Vererbung und Polymorphismus) Klassen Klassen Methoden Methoden Felder Felder Statische Felder/Methoden Statische Felder/Methoden Innere Klassen Innere Klassen Interfaces Interfaces u.s.w. u.s.w.

20 Programmiersprachen C# C# Visual Basic.NET (auch: VB.NET) Visual Basic.NET (auch: VB.NET) C++ C++ Viele weitere Sprachen Viele weitere Sprachen APL, COBOL, Delphi, Eiffel, Forth, Fortran, Haskel, J#, JScript.NET, Mercury, Mondrian, Oberon, Pascal, Perl, Python, RPG, Scheme, S# APL, COBOL, Delphi, Eiffel, Forth, Fortran, Haskel, J#, JScript.NET, Mercury, Mondrian, Oberon, Pascal, Perl, Python, RPG, Scheme, S# Viele sind aber noch in Beta-Phase Viele sind aber noch in Beta-Phase

21 C# Neue Programmiersprache Neue Programmiersprache Objekt-orientiert Objekt-orientiert Nur einfache Vererbung (Mehrfache Vererbung nur über Interfaces) Nur einfache Vererbung (Mehrfache Vererbung nur über Interfaces) Designierter Nachfolger von C++. (Auch beeinflusst von Java) Designierter Nachfolger von C++. (Auch beeinflusst von Java) Ausgerichtet auf.NET Framework Ausgerichtet auf.NET Framework

22 C# vs. Java Viele Gemeinsamkeiten aber auch Unterschiede Viele Gemeinsamkeiten aber auch Unterschiede Syntax Syntax JavaC# superbase final class sealed class extends: packagenamespace (kein Schlüsselwort notwendig) overrides (Methoden sind bereits virtuell, d.h. überschreibbar) virtual weitere…

23 C# Aufzählungstypen Aufzählungstypen Typen-Kontrolle Typen-Kontrolle public enum DayOfWeek { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6 }

24 C# - Funktionsparameter public static void SwitchValues(ref int a, ref int b) { int c = a; a = b; b = c; } public static int Main(string[] args) { int a = 10; int b = 20; SwitchValues(ref a, ref b); Console.WriteLine(a + " " + b); return 0; } Ausgabe: 20 10

25 C# - foreach Schleife public static int Main(string[] args) { int[] aInt = {1, 2, 2, 3, 5, 7}; foreach (int j in aInt) Console.WriteLine(j); return 0; } Ausgabe:

26 C# - Properties Verwendung wie Felder, aber funktioniert wie Methoden Beispiel: Anstelle von zwei Methoden getVisible(), setVisible(…) Verwendung wie Felder, aber funktioniert wie Methoden Beispiel: Anstelle von zwei Methoden getVisible(), setVisible(…) public bool Visible { get { return _bVisible; } set { if (_bVisible != value) { if (_bVisible) Hide(); else Show(); _bVisible = value; }

27 C# - Indexers Zugriff auf Elemente eines Arrays: int[] a = {3, 4}; a[i] = 1; Console.Write(a[i]); // Ausgabe: 1 Zugriff auf Elemente eines Arrays: int[] a = {3, 4}; a[i] = 1; Console.Write(a[i]); // Ausgabe: 1 Indexer ermöglicht diesen Syntax auch für andere Klassen zu verwenden: string s = Test; Console.Write(s[0]); // Ausgabe: T Indexer ermöglicht diesen Syntax auch für andere Klassen zu verwenden: string s = Test; Console.Write(s[0]); // Ausgabe: T

28 C# - Indexers (2) Wie ein Property mit dem Namen this und mit Argument(e) in eckigen Klammern. Wie ein Property mit dem Namen this und mit Argument(e) in eckigen Klammern. public virtual int this[int row, int col] { get { … } set { … } }

29 C# - Operator overloading public struct Complex { public int real; public int imaginary; public Complex(int real, int imaginary) { this.real = real; this.imaginary = imaginary; } public static Complex operator +(Complex c1, Complex c2) { return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary); } Bekannt in C++ Bekannt in C++ In Java nicht vorhanden In Java nicht vorhanden

30 C# - Events / Delegates Delegate: Typensicherer Funktionszeiger Delegate: Typensicherer Funktionszeiger public delegate void ClickHandler(int x, int y); public class Test { public event ClickHandler Click; public void Test() { this.Click += new ClickHandler(OnClick); } private void OnClick(int x, int y) { //... Event behandeln }

31 Visual Basic.NET Vollwertige Objekt-orientierte Programmiersprache Vollwertige Objekt-orientierte Programmiersprache Threading Threading Windows Services Windows Services Historische Überreste von DOS Zeiten wurden entfernt, Anpassungen für CTS Historische Überreste von DOS Zeiten wurden entfernt, Anpassungen für CTS Variant-Datentyp Variant-Datentyp SET / LET / OPTION BASE / GOSUB / ON x GOTO / etc. SET / LET / OPTION BASE / GOSUB / ON x GOTO / etc. Weitere Neuheiten (z.B. AndAlso, OrElse Operatoren) Weitere Neuheiten (z.B. AndAlso, OrElse Operatoren)

32 Visual Basic.NET (1) Nachteile: Nachteile: Umstellung für Visual Basic Programmierer ist gross. Auch für Einsteiger ist der Lernaufwand grösser. Umstellung für Visual Basic Programmierer ist gross. Auch für Einsteiger ist der Lernaufwand grösser. Viele neue Schlüsselwörter Viele neue Schlüsselwörter Portierung von VB6 Projekten nur sehr beschränkt möglich. Portierung von VB6 Projekten nur sehr beschränkt möglich.

33 .NET Klassenbibliothek Vorher: Win32 API, MFC, ATL, VB, … Vorher: Win32 API, MFC, ATL, VB, ….NET Framework bietet OO-Bibliothek mit über viel Funktionalität verteilt in über 100 Namespaces.NET Framework bietet OO-Bibliothek mit über viel Funktionalität verteilt in über 100 Namespaces

34 .NET Klassenbibliothek (1) NamespaceBeschreibung SystemAllgemeine Klassen, die häufig verwendet werden. System.CodeDomZum Parsen von Source-Code Dokumenten. System.CodeDom.CompilerKlassen zum Erzeugen von Compiler System.CollectionsKlassen zum Erzeugen von Listen, Hashtables, Warteschlagen etc. System.ComponentModelKlassen, die für die Implementation von Laufzeit- und Designzeit-Verhalten von Komponenten. System.ConfigurationZum Abspeichern und Laden von Konfigurationseinstellungen System.DataDie zentralen Klassen von ADO.NET System.Data.OdbcZugriff auf Daten via ODBC System.Data.OleDbZugriff auf Daten via OleDb System.Data.OracleClientFür Oracle optimierte ADO.NET Schicht System.Data.SqlClientFür Microsoft SQL Server optimierte ADO.NET Schicht

35 .NET Klassenbibliothek (2) System.DiagnosticsErlaubt Interaktion mit Systemprozessen, Zugriff auf EventLogs und Perfomance Counters. System.DirectoryServicesErmöglicht den Zugriff auf ActiveDirectory System.DrawingGDI+ Grafikfunktionen System.Drawing.Drawing2DBietet 2-dimensionale Vektorgrafik Funktionalitäten. System.Drawing.PrintingErmöglicht Zugriff zu Druck-Funktionalitäten. System.EnterpriseServicesBietet Grundstrukturen Unternehmenssoftware. System.GlobalizationErmöglicht Implementation von Anwendungen für verschiedene Kulturen (Sprachen, Kalender, Währungen, Zahlenformate, String-Sortierordnung etc.) System.IOKlassen für synchrone und asynchrone Ein- /Ausgabefunktionen System.NetBietet einfache Schnittstellen zu gängigen Kommunikationsprotokollen. System.Net.SocketsErlaubt Programmierung von Netzwerkanwendungen, die auf Windows Sockets aufbauen. System.ReflectionBietet Reflection-Funktionalität für.NET Sprachen

36 .NET Klassenbibliothek (3) System.Runtime.InteropServicesBietet Zugang zu nicht.NET Bibliotheken, z.B. zu COM System.Runtime.RemotingFür die Erstellung von verteilten Anwendungen. System.Runtime.SerializationBietet Unterstützung für die Serialisierung. System.Security.NET Sicherheitskonzept System.Security.CryptographyErmöglicht die Verwendung von verschiedenen kryptographischen Diensten. System.ServiceProcessErlaubt Windows Service Anwendungen zu entwickeln. System.TextTextfunktionalitäten, Codierungen (Unicode, UTF-8, …) System.Text.RegularExpressionReguläre Ausdrücke System.ThreadingErmöglicht Multithreading-Anwendungen zu entwickeln. System.WebGrundklassen von ASP.NET System.Web.ServicesErmöglicht die Erstellung von WebServices System.Web.UIASP.NET WebForms System.Windows.FormsWinForms System.XMLXML Parser

37 ADO.NET ADO (Microsoft Active- X Data Object) ADO (Microsoft Active- X Data Object) Standardisiertes Modell für Datenzugriff Standardisiertes Modell für Datenzugriff ADO.NET ADO.NET DataSet DataSet DB DataSet XML Windows Applikation Web Forms B2B DB Provider

38 ADO.NET - Dataset

39 ADO.NET - Designer DataSet Design basiert auf XML Schema DataSet Design basiert auf XML Schema Visual Studio.NET Visual Studio.NET Import/Export von Datenbank Import/Export von Datenbank Designer Designer

40 Web Forms (ASP.NET) Vor.NET: ASP (Active Server Pages) Vor.NET: ASP (Active Server Pages) Skriptsprache (keine Typen, kein Kompilieren) Skriptsprache (keine Typen, kein Kompilieren) Keine Trennung von Darstellung und Code Keine Trennung von Darstellung und Code Mit.NET Mit.NET Visual Programming Visual Programming Einfache Integration anderer.NET Bibliotheken Einfache Integration anderer.NET Bibliotheken Objekt-Orientiert Objekt-Orientiert XML/XSL XML/XSL

41 Web Forms - Server Controls Server Controls = Dynamische Komponenten, die auf dem Webserver laufen Server Controls = Dynamische Komponenten, die auf dem Webserver laufen

42 Web Forms – Codebehind Codebehind-Technik erlaubt Trennung von HTML/XHTML Codebehind-Technik erlaubt Trennung von HTML/XHTML ASPX Header ASPX Header Codebehind Klasse Codebehind Klasse wird kompiliert DLL im Unterverzeichnis /bin wird kompiliert DLL im Unterverzeichnis /bin Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Test1.WebForm1" %>

43 Web Forms – Codebehind ASPX-Seite erbt Button1 von WebForm1 ASPX-Seite erbt Button1 von WebForm1 public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; private void Button1_Click(object sender, System.EventArgs e) { // Code } // anderer Code }

44 Web Forms - ViewState Problem: Kontext! Problem: Kontext! Ansatz Ansatz Application-Kontext Application-Kontext Session-Kontext Session-Kontext Implementiert durch Cookie (oder falls Cookie abgeleht wurde mit SessionID in URL) Implementiert durch Cookie (oder falls Cookie abgeleht wurde mit SessionID in URL) ViewState-Kontext ViewState-Kontext Problem: Problem: Implementiert durch verstecktes HTML Formularfeld Implementiert durch verstecktes HTML Formularfeld Verschlüsselt Verschlüsselt

45 Web Forms – User Controls Web User Control Web User Control Wie gewöhnliches WebForm Wie gewöhnliches WebForm Beim Rendern wird kein HTML Header erzeugt Beim Rendern wird kein HTML Header erzeugt z.B. für Navigationsleiste z.B. für Navigationsleiste Custom Control Custom Control Eigenes Server Control Eigenes Server Control Eigene Events Eigene Events z.B. für spezielle Buttons z.B. für spezielle Buttons

46 Localization & Globalization Was ist Localization? Was ist Localization? Sprache der Benutzeroberfläche Sprache der Benutzeroberfläche Datum & Zeit Formate, String Indexing, … Datum & Zeit Formate, String Indexing, … Cultures Cultures Beispiele: en-US, de-CH, fr-CH Beispiele: en-US, de-CH, fr-CH Ressourcen Ressourcen Ressourcen (.resx) Ressourcen (.resx) Sprachabhängige Ressourcen (.de.resx) Sprachabhängige Ressourcen (.de.resx) Kompilierte Ressourcen (.dll, de-CH.dll) Kompilierte Ressourcen (.dll, de-CH.dll) Fallback-Prinzip Fallback-Prinzip

47 Localization & Globalization Windows Form Windows Form Design-Time Properties: Localizable, Language Design-Time Properties: Localizable, Language Windows Forms Resource Editor (Winres.exe) Windows Forms Resource Editor (Winres.exe)

48 Mobile Programming Software für Software für PDAs PDAs Mobiltelefone Mobiltelefone.NET Framework Version 1.1.NET Framework Version 1.1 SQL Server CE SQL Server CE

49 Deployment Auslieferung von Software Auslieferung von Software Vor.NET Vor.NET EXE-Datei EXE-Datei DLLs in Windows\System32 (Versionsprobleme) DLLs in Windows\System32 (Versionsprobleme) ActiveX DLLs registrieren (regsvr32.exe) ActiveX DLLs registrieren (regsvr32.exe) Tools wie InstallShield Tools wie InstallShield Mit.NET Mit.NET EXE-Datei und abhängige DLLs in ein Verzeichnis kopieren EXE-Datei und abhängige DLLs in ein Verzeichnis kopieren Für komplexere Dinge wie Webapplikationen oder Windows Services Setups (MSI-Datei) generieren. Für komplexere Dinge wie Webapplikationen oder Windows Services Setups (MSI-Datei) generieren.

50 Tools für.NET Entwickler Microsoft.NET Framework SDK Microsoft.NET Framework SDK Command-Line Tools Command-Line Tools Compiler Compiler Gratis [108 MB] Gratis [108 MB] Microsoft Visual Studio.NET Microsoft Visual Studio.NET verschiedene Editionen verschiedene Editionen Alternativen Alternativen Borland Delphi 7 Studio (nur für Delphi) Borland Delphi 7 Studio (nur für Delphi) Borland C# Builder (noch nicht fertig!) Borland C# Builder (noch nicht fertig!)

51 Fazit Neue Dimension von Windows Programmierung Neue Dimension von Windows Programmierung C++/MFC/COM… zu kompliziert C++/MFC/COM… zu kompliziert Visual Basic 6 nicht OO Visual Basic 6 nicht OO Übergang zu.NET Übergang zu.NET Radikale Änderungen Radikale Änderungen Unterstützung für unsafe Code, Einbindung von anderen Bibliotheken (z.B. COM) Unterstützung für unsafe Code, Einbindung von anderen Bibliotheken (z.B. COM) Neuer Komfort Neuer Komfort elegantes Konzept für Webapplikationen elegantes Konzept für Webapplikationen WebServices (Neues Konzept von Software) WebServices (Neues Konzept von Software)

52 Fertig! Fragen? Fragen? Diskussion Diskussion


Herunterladen ppt "Grundlagen des Microsoft.NET Frameworks Master Seminar Advanced Software Engineering Topics Patric Zbinden 1. Mai 2003."

Ähnliche Präsentationen


Google-Anzeigen