Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grundlagen des Microsoft .NET Frameworks

Ähnliche Präsentationen


Präsentation zum Thema: "Grundlagen des Microsoft .NET Frameworks"—  Präsentation transkript:

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

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

3 .NET Strategie

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

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

6 .NET Enterprise Servers
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 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 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 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 SharePoint™ Portal Server 2001 to find, share, and publish business information. 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. COM Vorteil: Sprachunabhängig, Internet tauglich (DCOM) Nachteile: Kompliziert (COM identity, lifetime, binary layout rules…) Keine Sprachintegration (keine Vererbung, keine Exceptions, …)

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

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

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

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

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

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

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

15 Werte-Typen Unterkategorien
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. Aufzählungstypen In C# mit dem Schlüsselwort enum erzeugt.

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

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

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

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

20 Programmiersprachen C# Visual Basic.NET (auch: VB.NET) C++
Viele weitere Sprachen 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

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

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

23 C# Aufzählungstypen 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: 1 2 3 5 7

26 C# - Properties 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 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. public virtual int this[int row, int col] { get { … } set { … } }

29 C# - Operator overloading
Bekannt in C++ In Java nicht vorhanden 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);

30 C# - Events / Delegates 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
Threading Windows Services Historische Überreste von DOS Zeiten wurden entfernt, Anpassungen für CTS Variant-Datentyp SET / LET / OPTION BASE / GOSUB / ON x GOTO / etc. Weitere Neuheiten (z.B. AndAlso, OrElse Operatoren)

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

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

34 .NET Klassenbibliothek (1)
Namespace Beschreibung System Allgemeine Klassen, die häufig verwendet werden. System.CodeDom Zum Parsen von Source-Code Dokumenten. System.CodeDom.Compiler Klassen zum Erzeugen von Compiler System.Collections Klassen zum Erzeugen von Listen, Hashtables, Warteschlagen etc. System.ComponentModel Klassen, die für die Implementation von Laufzeit- und Designzeit-Verhalten von Komponenten. System.Configuration Zum Abspeichern und Laden von Konfigurationseinstellungen System.Data Die zentralen Klassen von ADO.NET System.Data.Odbc Zugriff auf Daten via ODBC System.Data.OleDb Zugriff auf Daten via OleDb System.Data.OracleClient Für Oracle optimierte ADO.NET Schicht System.Data.SqlClient Für Microsoft SQL Server optimierte ADO.NET Schicht

35 .NET Klassenbibliothek (2)
System.Diagnostics Erlaubt Interaktion mit Systemprozessen, Zugriff auf EventLogs und Perfomance Counters. System.DirectoryServices Ermöglicht den Zugriff auf ActiveDirectory System.Drawing GDI+ Grafikfunktionen System.Drawing.Drawing2D Bietet 2-dimensionale Vektorgrafik Funktionalitäten. System.Drawing.Printing Ermöglicht Zugriff zu Druck-Funktionalitäten. System.EnterpriseServices Bietet Grundstrukturen Unternehmenssoftware. System.Globalization Ermöglicht Implementation von Anwendungen für verschiedene Kulturen (Sprachen, Kalender, Währungen, Zahlenformate, String-Sortierordnung etc.) System.IO Klassen für synchrone und asynchrone Ein-/Ausgabefunktionen System.Net Bietet einfache Schnittstellen zu gängigen Kommunikationsprotokollen. System.Net.Sockets Erlaubt Programmierung von Netzwerkanwendungen, die auf Windows Sockets aufbauen. System.Reflection Bietet Reflection-Funktionalität für .NET Sprachen

36 .NET Klassenbibliothek (3)
System.Runtime.InteropServices Bietet Zugang zu nicht .NET Bibliotheken, z.B. zu COM System.Runtime.Remoting Für die Erstellung von verteilten Anwendungen. System.Runtime.Serialization Bietet Unterstützung für die Serialisierung. System.Security .NET Sicherheitskonzept System.Security.Cryptography Ermöglicht die Verwendung von verschiedenen kryptographischen Diensten. System.ServiceProcess Erlaubt Windows Service Anwendungen zu entwickeln. System.Text Textfunktionalitäten, Codierungen (Unicode, UTF-8, …) System.Text.RegularExpression Reguläre Ausdrücke System.Threading Ermöglicht Multithreading-Anwendungen zu entwickeln. System.Web Grundklassen von ASP.NET System.Web.Services Ermöglicht die Erstellung von WebServices System.Web.UI ASP.NET WebForms System.Windows.Forms WinForms System.XML XML Parser

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

38 ADO.NET - Dataset

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

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

41 Web Forms - Server Controls
Server Controls = Dynamische Komponenten, die auf dem Webserver laufen <form id="Form1" method="post" runat="server"> <asp:Button id="Button1" runat="server" Text="Button"/> </form>

42 Web Forms – „Codebehind“
„Codebehind“-Technik erlaubt Trennung von HTML/XHTML ASPX Header Codebehind Klasse 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 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! Ansatz Application-Kontext
Session-Kontext Implementiert durch Cookie (oder falls Cookie abgeleht wurde mit SessionID in URL) ViewState-Kontext Problem: Implementiert durch verstecktes HTML Formularfeld Verschlüsselt

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

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

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

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

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

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

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

52 Fertig! Fragen? Diskussion


Herunterladen ppt "Grundlagen des Microsoft .NET Frameworks"

Ähnliche Präsentationen


Google-Anzeigen