1 / 52

Grundlagen des Microsoft .NET Frameworks

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)

kaloni
Download Presentation

Grundlagen des Microsoft .NET Frameworks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • 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 WertetypenIn C# mit dem Schlüsselwort struct (anstatt mit class) erzeugte Typen. • AufzählungstypenIn 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 (-128 .. 127) • 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 • Beispielint i = 20; // Wertetypobject box = i; // Referenztyp -> Boxing • Unboxing: Umgekehrte Operation • Beispielint 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

  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 2 3 5 7

  26. 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; } } }

  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 intthis[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)

  35. .NET Klassenbibliothek (2)

  36. .NET Klassenbibliothek (3)

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

  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) • 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 • PDAs • Mobiltelefone • .NET Framework Version 1.1 • SQL Server CE

  49. 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.

  50. 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!)

More Related