1 / 56

Anwendungen der nächsten Generation

Other Services. Public Web Services. XML. XML. Biz Tier Logic. Building Block Services. Smarter Clients. XML. XML. Internal Services. OS Services. XML. OS Services. HTML. XML. XML. Servers Data, Hosts. Smarter Devices. Biz Logic & Web Service.

Download Presentation

Anwendungen der nächsten Generation

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. Other Services Public Web Services XML XML Biz Tier Logic Building Block Services Smarter Clients XML XML Internal Services OSServices XML OS Services HTML XML XML Servers Data, Hosts SmarterDevices Biz Logic & Web Service Anwendungen der nächsten Generation Anwendungen werdenWebServices Standard Browsers Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufenweltweit lose gekoppelteDienstleistung auf

  2. Die 3. Generation von Internet-Apps

  3. Service FederationLose gekoppelte Dienstleistungen XML BusinessPartners .NETBuilding Block Services EDIFACT Open Standards: TCP/IP XML HTTP SMTPSOAP X12 Finance WebServiceProvider News Enterprise Applikationen B2B Website Order/Sales Dept. SQL ServerXML .NETEnterprise Server Knowledge Management Accounting BizTalkMessaging ExchangeWebStorage

  4. .NET Building Block Services • Verteilte, XML-basierte Dienste • Arbeiten online oder offline (Intranet) Identity Notification, Messaging Personalization XML Storage Calendar Directory and Search Software Delivery

  5. Open Internet Protocols Firewalls können für den Zugriff auf WebServices konfiguriert werden. WebServices Internal Corporate Services Your Sales Data Service Your Internal Billing Service Passport – Identity Service Directory and Search Service Microsoft Building Block Services Personalization Service Software Delivery Service Calendaring Service Schematized Storage Service Notification & Msg Service Geographic Mapping Service Web Services Built by 3rd Parties Greenwich Mean Time Service Credit Card Statement Service …

  6. Data & XML Base Classes Web Service Web Service COMInterfaces Web Services UserInterface Common Language Runtime .NET Framework XML

  7. Framework, Languages and Tools VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Base Class Library Common Language Runtime

  8. Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL to Native Compilers Code Manager Garbage Collector Common Language Runtime Class Loader

  9. Typsystem Kontext Concurrency Transaktionen Loader Remoting Warum eine Runtime?Einheitliches Integrationsmodell Layer (VBRUNxx.DLL) (MSVCRT.DLL) Layer (VBRUNxx.DLL) (MSVCRT.DLL) Common Language Runtime (MSCOREE.DLL) (MSCORLIB.DLL) Microsoft Transaction Server (MTXEX.DLL) COM+ Runtime (OLE32.DLL) COM Runtime (OLE32.DLL)

  10. Übersicht VB C# C++ ASM Code Compiler Compiler Compiler IL Code IL Code IL Code Common Language Runtime JIT Compiler Betriebssystem

  11. BasicsManaged Code • Sämtlicher Code wird unter Aufsicht der Common Language Runtime ausgeführt • Runtime führt Sicherheitsüberprüfungen aus • Runtime übernimmt Speicherverwaltung und Fehlerbehandlung (à GC, Exceptions) • Runtime führt Versionsprüfungen aus • Dieser Code wird als Managed Code bezeichnet

  12. BasicsMicrosoft Intermediate Language • Compiler erzeugen keinen native Code sondern eine prozessorunabhängige Zwischensprache • Sprachintegration erfolgt auf Codeebene • MSIL – Microsoft Intermediate Language • MSIL wird oft auch mit IL bezeichnet 

  13. BasicsCode wird kompiliert • IL-Code wird vor der Ausführung immer (!) durch Compiler in echten Maschinencode übersetzt • Unabhängigkeit von Hardwareplattformen • unter Windows CE bereits mit einemIL-Vorläufer im Einsatz

  14. Klasse A (1) Methodenaufruf Methode 1 (IL) Klasse B Methode 2 (IL) Methode 1 (IL) Methode 1 (ASM) Methode 3 (IL) Methode 2 (IL) Methode 4 (IL) JIT Compiler (2) IL-Code durch native Code ersetzen BasicsCode wird kompiliert

  15. BasicsImplikationen • Die IL unterscheidet sich von „reinen“ Assemblersprachen • komplexe Datentypen und Objekte sind fester Bestandteil • Konzepte wie Vererbung und Polymorphie werden von vornherein unterstützt

  16. BasicsImplikationen • Sprachen werden gleichwertig, da alle Compiler MSIL-Code erzeugen • „eine C# Klasse kann von einer VB.NET Klasse abgeleitet sein“ • einheitliche Fehlerbehandlung • Compilerbau wird einfacher • kein eigenes Typsystem • keine eigene Standardbibliothek • Sprachen sind „per Definition“ interoperabel

  17. BasicsCommon Type System • Das Typsystem wandert vom Compiler in die Runtime • Typen werden eindeutig • „ein String unter C# und ein String unter VB.NET sind identisch“ • Sprachen werden interoperabel, da sie das gleiche Typsystem benutzen • CTS – Common Type System

  18. Common Type SystemDas Objektmodell Object Value Type Boolean Int64 Byte Enum SByte Char Single Type Currency TimeSpan Typen im Namespace System DateTime String TypedRef. Decimal UInt16 Double Array UInt32 Guid UInt64 Exception Int16 Void Int32 Delegate

  19. Common Type SystemGleichheit und Identität von Objekten • Zwei Objekte sind gleich, wenn deren Inhalte gleich sind • Zwei Objekte sind identisch, wenn sie die gleiche Instanz referenzieren • Gleichheit definiert sich über die virtuelle Methode System.Object.Equals • identisch: System.Object.Equals = true • gleich: System.Object.Equals.Value = true

  20. Bestandsaufnahme • Die Common Language Runtime ermöglicht unabhängig von Programmiersprachen eine durchgängig objekt- und komponentenorientierte Programmierung • .NET Sprachen sollten sich auf die Typen beschränken, die über das Common Type System definiert sind

  21. Modul MSIL-Code für Typ A MSIL-Code für Typ B MSIL-Code für Typ C Metadaten für die Typen A, B und C Metadaten und ReflectionÜbersetzen von Sourcen Source Code Typ A {…} Compiler (C#, VB.NET, etc.) Typ B {…} Typ C {…}

  22. Metadaten und Reflection • Ein Modul dient als Container für Typen • Ein Modul enthält • den IL-Code der Typen • Beschreibung der Typen • Die Beschreibung der Typen wird mit Metadaten bezeichnet • Jedes Modul enthält Metadaten • Compiler erstellt Metadaten „on the fly“

  23. Metadaten und Reflection • Metadaten sind für alle Module auf die gleiche Art und Weise aufgebaut • Einheitliches Format !!! • Metadaten eines Moduls können zur Laufzeit ausgelesen und geändert werden • Diesen Vorgang nennt man Reflection • .NET Framework stellt entsprechende Klassen über den Namespace System.Reflection bereit

  24. .NET Framework Windows API ASP VB Forms MFC & ATL Warum ein Framework?Einheitliches Programmiermodell

  25. Base Class Library System.Web System.WinForms Services UI Design ComponentModel Description HtmlControls Discovery WebControls Protocols System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml ADO SQL XSLT Serialization Design SQLTypes XPath System Collections IO Security Runtime InteropServices Configuration Net ServiceProcess Remoting Diagnostics Reflection Text Serialization Globalization Resources Threading

  26. C# using System; namespace HelloWorld { public class Class1 { public static void Main() { Console.WriteLine("Hello, World!"); } } } VB.NET Imports System Namespace HelloWorld Class Class1 Shared Sub Main() Console.WriteLine("Hello, World!") End Sub End Class End Namespace Hello, World! Alternativ: Module Module1 Sub Main() Console.WriteLine("Hello, World!") End Sub End Module

  27. Hello, World: C# IL .namespace HelloWorld { .class public auto ansi Class1 extends [mscorlib]System.Object { .method public hidebysig static void Main() il managed { .entrypoint .maxstack 8 IL_0000: ldstr "Hello, World!" IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String) IL_000a: ret } .method public hidebysig specialname rtspecialname instance void .ctor() il managed { .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret } } }

  28. C# und VB.NET Gemeinsamkeiten • Namespaces • Enthalten Typdefinitionen und Namespaces • Typdefinitionen • Klassen, Strukturen, Interfaces, Delegates ... • Elemente von Typen • Konstanten, Felder, Methoden, Properties, Events, Operatoren, Konstruktoren, Destruktoren • Organisation der Dateien • Keine Header-Dateien, Programmcode ist “in-line” • Die Reihenfolge der Deklarationen ist ohne Bedeutung

  29. Stabile und dauerhafte Software • Automatisches Speichermanagement • Keine Speicherlecks oder „wilde Pointer“ • Garbage Collection • C# und VB.NET kommen ohne Pointer aus • Eingebauter Typ: String • Benutzerdefinierte Referenztypen • Große Auswahl an Kollektionen • Referenz- und Ausgabeparameter (out , ref) • 99% der Pointer werden nicht mehr benötigt • C#: Dennoch sind Pointer über unsafe-Code verfügbar • Exceptions • Error Handling von Anfang an bedacht • Typsicherheit (type safety) • Keine uninitialisierten Variablen • Keine unsichere Casts • Versionsverwaltung • Wurde von Grund auf berücksichtigt

  30. Alles ist wirklich ein Objekt • C#/VB.NET vereinen Klassen und „primitive types“ • Alles ist ein Objekt ohne die Performance-Probleme anderer Systeme Dim s as String, o as Object o = s • Einfach und erweiterbar • Man kann neue „primitive types“ erzeugen • Intuitiv in Syntax und Semantik • VB.NET: Variant entfällt • COM-Interop: • Transparenter Zugriff auf COM-Objekte • .NET-Objekte über COM nutzbar

  31. int i = 123; string s = "Hello world"; 123 i "Hello world" s int j = i; string t = s; 123 j t Zwei Arten von Typen

  32. 123 i } o System.Int32 “Boxing” 123 } “Unboxing” 123 j Boxing und Unboxing • Jeder Datentyp kann als Objekt gespeichert oder übergeben werden int i = 123; object o = i; int j = (int)o;

  33. Implementation Inheritance • Einfachvererbung (single inheritance) • Auch über Sprachgrenzen hinweg • Abstrakte Klassen, finale Klassen • Implementierung von beliebig vielen Interfaces • Elemente einer Klasse • Konstanten, Felder, Methoden, Konstruktoren, Destruktoren, Operatoren (C#) • Properties, Indexer (C#), Events (VB.NET) • Verschachtelte Typen • Statische Elemente • Virtuelle Methoden • VB.NET: Alle Methodenimmer virtuell • Zugriffsschutz • public, protected, internal, private public class Person { private int YOB; public int YearOfBirth { get { return YOB; }; set { YOB = value; }; } public int GetAgeToday() { return Today()-YearOfBirth; } }

  34. Operator Overloading (C#) • Die meisten Operatoren können überladen werden • Arithmetische, Vergleichs-, Logik- und Bedingungsoperatoren • Allerdings nicht: Zuweisungsop., Spezialop. (sizeof, new, is, typeof) class Matrix { ... Matrix operator +(Matrix l, Matrix r) { Matrix e = new Matrix(); e = l mit r verknüpfen return e; } } ... Matrix a = new Matrix(...), b = new Matrix(...); Matrix c = a + b;

  35. Public Interface Interface1 End Interface Public Sub M1() Public Property P1 As String Public Interface Interface2 End Interface Inherits Interface1 Public Sub M2() Public Property P2 As String Interface InheritanceInterface erbt von Interface

  36. Property public class Button: Control { private string caption; public string Caption { get { return caption; } set { caption = value; Repaint(); } } } Button b = new Button(); string s = b.Caption; b.Caption = "OK";

  37. Indexer (C#) public class ListBox: Control { private string[] items; public string this[int index]{ get { return items[index]; } set { items[index] = value; Repaint(); } } } ListBox listBox = new ListBox(); string s = listBox[0] listBox[0] = "hello"; listBox[1] = "world";

  38. Strukturen • Zusammenschluss vonDaten und Code • Werttyp • Keine Vererbung • LeichtgewichtigerDatencontainer struct Point { private double m_x, m_y; public Point(double x, double y) { m_x = x; m_y = y; } public double x{ get {return m_x;} set {m_x = value;} } ... public static Point operator+(Point l, Point r) { return new Point(l.x+r.x, l.y+r.y); } public override string ToString() { return "(" + m_x + ", " + m_y + ")"; } }

  39. Attribute public class OrderProcessor { [WebMethod] public void SubmitOrder(PurchaseOrder order) {...} } [XmlRoot("Order", Namespace="urn:acme.b2b-schema.v1")] public class PurchaseOrder { [XmlElement("shipTo")] public Address ShipTo; [XmlElement("billTo")] public Address BillTo; [XmlElement("comment")] public string Comment; [XmlElement("items")] public Item[] Items; [XmlAttribute("date")] public DateTime OrderDate; }

  40. Ausnahmebehandlung Try auszuführende Anweisungen Catch e As COMException Fehlerbehandlung Catch e As Exception ... Catch When Err.Number = 5 ... Catch ... Finally Abschließende Behandlung, auch ohne Fehler End Try

  41. Delegates 1:1 Delegate Empfänger MulticastDelegate 1:n Empfänger Empfänger n:1 Delegate Empfänger Delegate MulticastDelegate n:m Empfänger MulticastDelegate Empfänger

  42. C# C# und VB.NET VB.NET

  43. WebForms • Keine Scriptsprachen mehr! • Verwenden „echter“ Sprachen: VB.NET, C#, ... • Seite wird beim ersten Aufruf komplett auf dem Server kompiliert • Kompiliat wird beim Aufruf gerendert • Browser bekommen „reines“ HTML zu sehen • Seiten können serverseitigeUI-Controls verwenden • Diese Controls werden WebControls genannt

  44. Web/Windows Form Controls VS.NET Designers VS.NET Class Generator Managed Provider myDataSet <xml>…</xml> DataSet-Command DataReader “<xml>…</xml>” Cust Order Item Command Connection XmlReader String Stream XmlText- Reader XmlNode- Reader XmlDocument TextReader ADO.NET Architektur

  45. Assemblies • .NET Anwendungen bestehen aus Assemblies • Assembly = Komponente • Ein Assembly ist ein Container für Module • Sämliche Sicherheits- und Versionsüberprüfungen durch die CLR erfolgen auf der Basis von Assemblies !!!

  46. Source Code (app1.vb) Typ A {…} Typ B {…} Typ C {…} Assembly (app1.dll) Modul MSIL-Code für Typ A MSIL-Code für Typ B MSIL-Code für Typ C Manifest Metadaten für die Typen A, B und C AssembliesÜbersetzen von Sourcen Compiler (C#, VB.NET, etc.)

  47. Assemblies • Sobald ein Modul kompiliert ist, gehört es zu einem Assembly • Compiler erstellt Assembly „on the fly“ • .NET Framework stellt entsprechende Klassen über den Namespace System.Reflection.Emit bereit • Die im Modul vorhandenen Typen sind nur innerhalb des Assemblies bekannt

  48. Assembly (app1.dll) Modul 2 (app3.dll) Modul 1 (app2.dll) MSIL-Code für Typ F MSIL-Code für Typ G MSIL-Code für Typ D MSIL-Code für Typ E Manifest Metadaten für F und G Metadaten für D und E AssembliesContainer für mehrere Module

  49. AssembliesManifest • Jedes Assembly enthält genau ein Manifest • Das Manifest beschreibt das Assembly • Keine Headerdateien • Keine Typenbibliothek

  50. AssembliesManifest • Das Manifest beinhaltet • Assembly-Identität = Name + Version + Ländercode • Liste der Module, aus denen das Assembly besteht • Referenzierte Assemblies • Exportierte Typen und Resourcen • Attribute

More Related