520 likes | 679 Views
Grundlagen des Microsoft .NET Frameworks. Master Seminar Advanced Software Engineering Topics Patric Zbinden 1. Mai 2003. Übersicht. Die .NET Stategie Common Language Runtime (CLR) Programming in .NET (C#, VB.NET) .NET Framework Klassenbibliothek Datentechnik (ADO.NET)
E N D
Grundlagen des Microsoft .NET Frameworks Master Seminar Advanced Software Engineering Topics Patric Zbinden 1. Mai 2003
Ü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
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)
.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, …
.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.
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, …)
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 • …
Ausführbare Dateien • Datei-Endungen: EXE, DLL • Windows Portable Executable (PE) Standard
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
JVM vs. CLR • CLR • 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
Common Type System (CTS) • Interoperabilität erfordert gemeinsame Typen • Zwei Kategorien • Referenz-Typen • Werte-Typen
Referenz- vs. Werte-Typen • Interne Behandlung der CLR
Referenz- vs. Werte-Typen • Konsequenzen für Programmierer • Zuweisung: a = b • Gleichheit: a == b • Initialisierung
Werte-Typen • Unterkategorien • Basis-Typen („build-in types“, „primitive types“)Werden von der CLR implementiert • Benutzerdefinierte WertetypenIn C# mit dem Schlüsselwort struct (anstatt mit class) erzeugte Typen. • AufzählungstypenIn C# mit dem Schlüsselwort enum erzeugt.
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 (-128 .. 127) • Single (32-Bit Fliesskomma Zahl) • TimeSpan (Zeitspanne mit Vorzeichen)
Referenz-Typen • Unterkategorien • Selbstbeschreibende Typen • Array Typen • Klassen • Benutzerdefinierte Klassen • Gekapselte Wertetypen (boxed classes) • Delegates • Zeiger-Typen (Pointer) • Interface-Typen
Boxing / Unboxing • Boxing: Konvertierung von Wertetyp zu Referenztyp • Beispielint i = 20; // Wertetypobject box = i; // Referenztyp -> Boxing • Unboxing: Umgekehrte Operation • Beispielint j = (int)box; // Unboxing • Vergleich mit Java: Explizite Boxing Klassen
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.
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
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
C# vs. Java • Viele Gemeinsamkeiten aber auch Unterschiede • Syntax
C# • Aufzählungstypen • Typen-Kontrolle public enum DayOfWeek { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6 }
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
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 2 3 5 7
C# - Properties • Verwendung wie Felder, aber funktioniert wie MethodenBeispiel: Anstelle von zwei Methoden getVisible(), setVisible(…) public bool Visible { get { return _bVisible; } set { if (_bVisible != value) { if (_bVisible) Hide(); else Show(); _bVisible = value; } } }
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
C# - Indexers (2) • Wie ein Property mit dem Namen „this“ und mit Argument(e) in eckigen Klammern. public virtual intthis[int row, int col] { get { … } set { … } }
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); } }
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 • } • }
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)
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.
.NET Klassenbibliothek • Vorher: Win32 API, MFC, ATL, VB, … • .NET Framework bietet OO-Bibliothek mit über viel Funktionalität verteilt in über 100 Namespaces
ADO.NET WindowsApplikation • ADO (Microsoft Active-X Data Object) • Standardisiertes Modell für Datenzugriff • ADO.NET • DataSet Web Forms XML B2B DB DataSet DBProvider
ADO.NET - Designer • DataSet Design basiert auf XML Schema • Visual Studio.NET • Import/Export von Datenbank • Designer
Web Forms (ASP.NET) • Vor .NET: ASP (Active Server Pages) • Skriptsprache (keine Typen, kein Kompilieren) • Keine Trennung von Darstellung und Code • Mit .NET • „Visual Programming“ • Einfache Integration anderer .NET Bibliotheken • Objekt-Orientiert • XML/XSL
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>
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" %>
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 }
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
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
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
Localization & Globalization • Windows Form • Design-Time Properties: Localizable, Language • Windows Forms Resource Editor (Winres.exe)
Mobile Programming • Software für • PDAs • Mobiltelefone • .NET Framework Version 1.1 • SQL Server CE
Deployment • Auslieferung von Software • Vor .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.
Tools für .NET Entwickler • Microsoft .NET Framework SDK • Command-Line Tools • Compiler • Gratis [108 MB] http://www.microsoft.com/net/ • Microsoft Visual Studio .NET • verschiedene Editionen • Alternativen • Borland Delphi 7 Studio (nur für Delphi) • Borland C# Builder (noch nicht fertig!)