1 Anwendungen der nächsten Generation Anwendungen der nächsten Generation Standard Standard Browsers Browsers Smarter Smarter Clients Clients Smarter Smarter Devices Devices Offene Internet Protokolle Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) (HTTP, SMTP, XML, SOAP) Anwendungen rufen Anwendungen rufen weltweit lose gekoppelt weltweit lose gekoppelt Dienstleistung auf Dienstleistung auf Anwendungen werden Anwendungen werden WebServices WebServices Biz Logic Biz Logic & Web & Web Service Service OS OS Services Services Public Web Public Web Services Services Building Block Building Block Services Services Internal Internal Services Services XML XML XML XML XML XML Servers Servers Data, Hosts Data, Hosts XML XML Other Other Services Services XML X ML XML XML XML XML HTML HTML
56
Embed
1 Anwendungen der nächsten Generation StandardBrowsers SmarterClients Smarter Devices Offene Internet Protokolle (HTTP, SMTP, XML, SOAP) Anwendungen rufen.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Anwendungen der nächsten GenerationAnwendungen der nächsten Generation
StandardStandardBrowsersBrowsers
StandardStandardBrowsersBrowsers
SmarterSmarterClientsClients
SmarterSmarterClientsClients
SmarterSmarterDevicesDevices
SmarterSmarterDevicesDevices Offene Internet Protokolle Offene Internet Protokolle
Web Web Services Services Built by 3Built by 3rdrd PartiesParties
Your Sales Data ServiceYour Sales Data ServiceYour Sales Data ServiceYour Sales Data Service
Your Internal Billing ServiceYour Internal Billing ServiceYour Internal Billing ServiceYour Internal Billing Service
…………Credit Card Statement ServiceCredit Card Statement ServiceCredit Card Statement ServiceCredit Card Statement ServiceGreenwich Mean Time ServiceGreenwich Mean Time ServiceGreenwich Mean Time ServiceGreenwich Mean Time ServiceGeographic Mapping ServiceGeographic Mapping ServiceGeographic Mapping ServiceGeographic Mapping Service
Directory and Search ServiceDirectory and Search ServiceDirectory and Search ServiceDirectory and Search Service
Personalization ServicePersonalization ServicePersonalization ServicePersonalization Service
Software Delivery ServiceSoftware Delivery ServiceSoftware Delivery ServiceSoftware Delivery Service
Calendaring ServiceCalendaring ServiceCalendaring ServiceCalendaring Service
Schematized Storage ServiceSchematized Storage ServiceSchematized Storage ServiceSchematized Storage Service
Notification & Msg ServiceNotification & Msg ServiceNotification & Msg ServiceNotification & Msg ServiceFirewalls können für den Zugriff auf WebServices konfiguriert werden.
6
Web Web ServiceService
.NET Framework.NET Framework
Web Web ServiceService XMLXML
Base Classes
Data & XML
UserInterface
Common Language Runtime
WebServices
COMInterfaces
7
Framework, Languages and ToolsFramework, Languages and Tools
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual S
tud
io.N
ET
WebServices
JScript …
UserInterface
8
Common Language RuntimeCommon Language Runtime
Class Loader
IL to NativeCompilers
CodeManager
GarbageCollector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marshaler
9
COM Runtime(OLE32.DLL)
Microsoft Transaction
Server(MTXEX.DLL)
Layer(VBRUNxx.DLL)(MSVCRT.DLL)
LoaderLoaderRemotingRemoting
KontextKontextConcurrencyConcurrency
TransaktionenTransaktionen
TypsystemTypsystem
COM+ Runtime(OLE32.DLL)
Layer(VBRUNxx.DLL)(MSVCRT.DLL)
Common Language Runtime
(MSCOREE.DLL)(MSCORLIB.DLL)
Warum eine Runtime?Warum eine Runtime?Einheitliches IntegrationsmodellEinheitliches Integrationsmodell
10
VB
Compiler
IL Code
ASM Code
ÜbersichtÜbersichtC#
Compiler
IL Code
C++
Compiler
IL Code
JIT Compiler
Common Language Runtime
Betriebssystem
11
Sämtlicher Code wird unter Aufsicht der Sämtlicher Code wird unter Aufsicht der Common Language Runtime ausgeführtCommon Language Runtime ausgeführt Runtime führt Sicherheitsüberprüfungen Runtime führt Sicherheitsüberprüfungen
und Fehlerbehandlung (und Fehlerbehandlung ( GC, Exceptions) GC, Exceptions) Runtime führt Versionsprüfungen ausRuntime führt Versionsprüfungen aus Dieser Code wird als Dieser Code wird als Managed Code Managed Code
bezeichnetbezeichnet
BasicsBasicsManaged CodeManaged Code
12
Compiler erzeugen keinen native Code Compiler erzeugen keinen native Code sondern eine prozessorunabhängige sondern eine prozessorunabhängige ZwischenspracheZwischensprache Sprachintegration erfolgt auf CodeebeneSprachintegration erfolgt auf Codeebene MSIL MSIL –– Microsoft Intermediate Language Microsoft Intermediate Language MSIL wird oft auch mit IL bezeichnet MSIL wird oft auch mit IL bezeichnet
BasicsBasicsMicrosoft Intermediate LanguageMicrosoft Intermediate Language
13
IL-Code wird vor der Ausführung IL-Code wird vor der Ausführung immer (!) durch Compiler in echten immer (!) durch Compiler in echten Maschinencode übersetzt Maschinencode übersetzt Unabhängigkeit von HardwareplattformenUnabhängigkeit von Hardwareplattformen unter Windows CE bereits mit einemunter Windows CE bereits mit einem
IL-Vorläufer im EinsatzIL-Vorläufer im Einsatz
BasicsBasicsCode wird kompiliertCode wird kompiliert
14
JIT Compiler
Klasse A
Methode 1 (IL)
Methode 2 (IL)
Methode 3 (IL)
Methode 4 (IL)
Klasse B
Methode 1 (IL)
Methode 2 (IL)
(1) Methodenaufruf
(2) IL-Codedurch native
Code ersetzen
Methode 1 (ASM)
BasicsBasicsCode wird kompiliertCode wird kompiliert
15
Die IL unterscheidet sich von Die IL unterscheidet sich von „reinen“ Assemblersprachen„reinen“ Assemblersprachen komplexe Datentypen und Objekte komplexe Datentypen und Objekte
sind fester Bestandteilsind fester Bestandteil Konzepte wie Vererbung und Konzepte wie Vererbung und
Polymorphie werden von vornherein Polymorphie werden von vornherein unterstütztunterstützt
BasicsBasicsImplikationenImplikationen
16
Sprachen werden gleichwertig, da alle Sprachen werden gleichwertig, da alle Compiler MSIL-Code erzeugenCompiler MSIL-Code erzeugen „„eine C# Klasse kann von einer VB.NET eine C# Klasse kann von einer VB.NET
Compilerbau wird einfacherCompilerbau wird einfacher kein eigenes Typsystemkein eigenes Typsystem keine eigene Standardbibliothekkeine eigene Standardbibliothek Sprachen sind „per Definition“ Sprachen sind „per Definition“
interoperabelinteroperabel
BasicsImplikationenImplikationen
17
Das Typsystem wandert vom Das Typsystem wandert vom Compiler in die RuntimeCompiler in die Runtime Typen werden eindeutigTypen werden eindeutig
„„ein String unter C# und ein String unter ein String unter C# und ein String unter VB.NET sind identisch“VB.NET sind identisch“
Sprachen werden interoperabel, da Sprachen werden interoperabel, da sie das gleiche Typsystem benutzensie das gleiche Typsystem benutzen
CTS CTS –– Common Type System Common Type System
BasicsCommon Type SystemCommon Type System
18
Object Value Type
Enum
Type
String
Array
Exception
Boolean
Byte
Char
Currency
DateTime
Decimal
Double
Guid
Int16
Int32
Int64
SByte
Single
TimeSpan
TypedRef.
UInt16
UInt32
UInt64
Void
Delegate
Typen imNamespaceSystem
Common Type SystemCommon Type SystemDas ObjektmodellDas Objektmodell
19
Zwei Objekte sind Zwei Objekte sind gleichgleich, wenn deren , wenn deren Inhalte gleich sindInhalte gleich sind
Zwei Objekte sind Zwei Objekte sind identischidentisch, wenn sie , wenn sie die gleiche Instanz referenzierendie gleiche Instanz referenzieren
Gleichheit definiert sich über die Gleichheit definiert sich über die virtuelle Methode System.Object.Equalsvirtuelle Methode System.Object.Equals identisch: System.Object.Equals = trueidentisch: System.Object.Equals = true gleich: System.Object.Equals.Value = truegleich: System.Object.Equals.Value = true
Common Type SystemCommon Type SystemGleichheit und Identität von ObjektenGleichheit und Identität von Objekten
20
Die Common Language Runtime Die Common Language Runtime ermöglicht unabhängig von ermöglicht unabhängig von Programmiersprachen eine durchgängig Programmiersprachen eine durchgängig objekt- und komponentenorientierte objekt- und komponentenorientierte ProgrammierungProgrammierung
.NET Sprachen sollten sich auf die .NET Sprachen sollten sich auf die Typen beschränken, die über das Typen beschränken, die über das Common Type System definiert sind Common Type System definiert sind
BestandsaufnahmeBestandsaufnahme
21
Compiler
(C#, VB.NET, etc.)
Typ A {…}
Source Code
Typ B {…}
Typ C {…}
Metadaten für die Typen A, B und C
MSIL-Code für Typ A
MSIL-Code für Typ B
MSIL-Code für Typ C
Modul
Metadaten und ReflectionMetadaten und ReflectionÜbersetzen von SourcenÜbersetzen von Sourcen
22
Ein Modul dient als Container für TypenEin Modul dient als Container für Typen Ein Modul enthältEin Modul enthält
den IL-Code der Typenden IL-Code der Typen Beschreibung der TypenBeschreibung der Typen
Die Beschreibung der Typen wird mit Die Beschreibung der Typen wird mit MetadatenMetadaten bezeichnet bezeichnet
Jedes Modul enthält MetadatenJedes Modul enthält Metadaten Compiler erstellt Metadaten „on the fly“Compiler erstellt Metadaten „on the fly“
Metadaten und ReflectionMetadaten und Reflection
23
Metadaten sind für alle Module auf die Metadaten sind für alle Module auf die gleiche Art und Weise aufgebautgleiche Art und Weise aufgebaut Einheitliches Format !!! Einheitliches Format !!!
Metadaten eines Moduls können zur Metadaten eines Moduls können zur Laufzeit ausgelesen und geändert Laufzeit ausgelesen und geändert werdenwerden Diesen Vorgang nennt man Diesen Vorgang nennt man ReflectionReflection .NET Framework stellt entsprechende .NET Framework stellt entsprechende
Klassen über den Namespace Klassen über den Namespace System.Reflection bereitSystem.Reflection bereit
Metadaten und ReflectionMetadaten und Reflection
24
.NET Framework
ASPVB Forms MFC & ATL
Windows API
Warum ein Framework?Einheitliches Programmiermodell
25
System
System.Data System.Xml
System.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security
Design
ADO
SQLTypes
SQL
XPath
XSLT
RuntimeInteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
ServicesDescription
Discovery
Protocols
UIHtmlControls
WebControls
System.Drawing
Imaging
Drawing2D
Text
Printing
System.WinForms
Design ComponentModel
Base Class Library
26
Hello, World!Hello, World!C#C#
using System;using System;
namespace namespace HelloWorldHelloWorld
{{
public class Class1public class Class1
{{
public static void Main()public static void Main()
Organisation der DateienOrganisation der Dateien Keine Header-Dateien, Programmcode ist “in-line”Keine Header-Dateien, Programmcode ist “in-line” Die Reihenfolge der Deklarationen ist ohne Die Reihenfolge der Deklarationen ist ohne
BedeutungBedeutung
29
Stabile und dauerhafte SoftwareStabile und dauerhafte Software Automatisches SpeichermanagementAutomatisches Speichermanagement
Keine Speicherlecks oder „wilde Pointer“Keine Speicherlecks oder „wilde Pointer“ Garbage CollectionGarbage Collection C# und VB.NET kommen ohne Pointer ausC# und VB.NET kommen ohne Pointer aus
Eingebauter Typ: Eingebauter Typ: StringString Benutzerdefinierte ReferenztypenBenutzerdefinierte Referenztypen Große Auswahl an KollektionenGroße Auswahl an Kollektionen Referenz- und AusgReferenz- und Ausgaabeparameter (beparameter (out out , , refref))
99% der Pointer werden nicht mehr benötigt99% der Pointer werden nicht mehr benötigt C#: Dennoch sind Pointer über C#: Dennoch sind Pointer über unsafeunsafe-Code verfügbar-Code verfügbar
ExceptionsExceptions Error Handling von Anfang an bedachtError Handling von Anfang an bedacht
Typsicherheit (type safety)Typsicherheit (type safety) Keine uninitialisierten VariablenKeine uninitialisierten Variablen Keine unsichere CastsKeine unsichere Casts VersionsverwaltungVersionsverwaltung
Wurde von Grund auf berücksichtigtWurde von Grund auf berücksichtigt
30
Alles ist wirklich ein ObjektAlles ist wirklich ein Objekt
C#/VB.NET vereinen Klassen und „primitive types“C#/VB.NET vereinen Klassen und „primitive types“ Alles ist ein Objekt ohne die Performance-Probleme anderer Alles ist ein Objekt ohne die Performance-Probleme anderer
SystemeSystemeDim s as String, o as ObjectDim s as String, o as Object
o = so = s
Einfach und erweiterbarEinfach und erweiterbar Man kann neue „primitive types“ erzeugenMan kann neue „primitive types“ erzeugen Intuitiv in Syntax und SemantikIntuitiv in Syntax und Semantik VB.NET: VB.NET: VariantVariant entfällt entfällt
COM-Interop:COM-Interop: Transparenter Zugriff auf COM-ObjekteTransparenter Zugriff auf COM-Objekte .NET-Objekte über COM nutzbar.NET-Objekte über COM nutzbar
31
Zwei Arten von Typen
Value Value (struct)(struct) Reference Reference (class)(class)
Operator Overloading (C#) Die meisten Operatoren können überladen Die meisten Operatoren können überladen
werdenwerden Arithmetische, Vergleichs-, Logik- und BedingungsoperatorenArithmetische, Vergleichs-, Logik- und Bedingungsoperatoren Allerdings nicht: Zuweisungsop., Spezialop. (Allerdings nicht: Zuweisungsop., Spezialop. (sizeof, new, is, sizeof, new, is,
typeof)typeof)
class Matrix {...Matrix operator +(Matrix l, Matrix r){
Matrix e = new Matrix();e = l mit r verknüpfenreturn e;
}}...Matrix a = new Matrix(...), b = new Matrix(...);Matrix c = a + b;
35
Interface InheritanceInterface erbt von Interface
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
36
Propertypublic class Button: Controlpublic class Button: Control{{ private string caption;private string caption;
public string Caption {public string Caption { get {get { return caption;return caption; }} set {set { caption = caption = valuevalue;; Repaint();Repaint(); }} }}}} Button b = new Button();
string s = b.Caption;b.Caption = "OK";
37
Indexer (C#)public class ListBox: Controlpublic class ListBox: Control{{ private string[] items;private string[] items;
public string this[int index]{public string this[int index]{ get {get { return items[index];return items[index]; }} set {set {
Zusammenschluss vonZusammenschluss vonDaten und CodeDaten und Code WerttypWerttyp Keine VererbungKeine Vererbung LeichtgewichtigerLeichtgewichtiger
DatencontainerDatencontainer
39
Attribute
public class OrderProcessorpublic class OrderProcessor{{ [WebMethod][WebMethod] public void SubmitOrder(PurchaseOrder order) {...}public void SubmitOrder(PurchaseOrder order) {...}}}
[XmlRoot("Order", Namespace="urn:acme.b2b-schema.v1")][XmlRoot("Order", Namespace="urn:acme.b2b-schema.v1")]public class PurchaseOrderpublic class PurchaseOrder{{ [XmlElement("shipTo")][XmlElement("shipTo")] public Address ShipTo; public Address ShipTo; [XmlElement("billTo")] public Address BillTo;[XmlElement("billTo")] public Address BillTo; [XmlElement("comment")] public string Comment;[XmlElement("comment")] public string Comment; [XmlElement("items")] public Item[] Items;[XmlElement("items")] public Item[] Items; [XmlAttribute("date")] public DateTime OrderDate;[XmlAttribute("date")] public DateTime OrderDate;}}
40
Ausnahmebehandlung
Try auszuführende AnweisungenCatch e As COMException FehlerbehandlungCatch e As Exception ...Catch When Err.Number = 5 ...Catch ...Finally Abschließende Behandlung, auch ohne FehlerEnd Try
41
Delegates
Delegate Empfänger
Delegate
n:1
Empfänger
MulticastDelegate
MulticastDelegate
n:m
Empfänger
Delegate Empfänger1:1
EmpfängerMulticastDelegate
Empfänger
1:n
42
C# und VB.NET
C# VB.NET
43
WebFormsWebForms Keine Scriptsprachen mehr!Keine Scriptsprachen mehr!
Ein Assembly ist ein Container für Ein Assembly ist ein Container für ModuleModule
Sämliche Sicherheits- und Sämliche Sicherheits- und Versionsüberprüfungen durch die CLR Versionsüberprüfungen durch die CLR erfolgen auf der Basis von Assemblies !!!erfolgen auf der Basis von Assemblies !!!
46
Compiler
(C#, VB.NET, etc.)
Typ A {…}
Source Code
Typ B {…}
Typ C {…}
Metadaten für die Typen A, B und C
MSIL-Code für Typ A
MSIL-Code für Typ B
MSIL-Code für Typ C
Modul
(app1.vb)
Manifest
Assembly (app1.dll)
AssembliesAssembliesÜbersetzen von SourcenÜbersetzen von Sourcen
47
AssembliesAssemblies
Sobald ein Modul kompiliert ist, Sobald ein Modul kompiliert ist, gehört es zu einem Assemblygehört es zu einem Assembly Compiler erstellt Assembly „on the fly“Compiler erstellt Assembly „on the fly“ .NET Framework stellt entsprechende .NET Framework stellt entsprechende
Klassen über den Namespace Klassen über den Namespace System.Reflection.Emit bereitSystem.Reflection.Emit bereit
Die im Modul vorhandenen Typen Die im Modul vorhandenen Typen sind nur innerhalb des Assemblies sind nur innerhalb des Assemblies bekanntbekannt
48
Metadaten für D und E
Modul 1 (app2.dll)
Manifest
Assembly (app1.dll)
MSIL-Code für Typ D
MSIL-Code für Typ E
Metadaten für F und G
Modul 2 (app3.dll)
MSIL-Code für Typ F
MSIL-Code für Typ G
AssembliesAssembliesContainer für mehrere ModuleContainer für mehrere Module
49
Jedes Assembly enthält genau ein Jedes Assembly enthält genau ein ManifestManifest
Das Manifest beschreibt das AssemblyDas Manifest beschreibt das Assembly Keine HeaderdateienKeine Headerdateien Keine TypenbibliothekKeine Typenbibliothek
AssembliesAssembliesManifestManifest
50
Das Manifest beinhaltetDas Manifest beinhaltet Assembly-Identität = Name + Version + Assembly-Identität = Name + Version +
LändercodeLändercode Liste der Module, aus denen das Assembly Liste der Module, aus denen das Assembly
bestehtbesteht Referenzierte AssembliesReferenzierte Assemblies Exportierte Typen und ResourcenExportierte Typen und Resourcen AttributeAttribute
AssembliesAssembliesManifestManifest
51
Private AssemblyPrivate Assembly Assembly kann nur von genau einer Assembly kann nur von genau einer
Anwendung benutzt werdenAnwendung benutzt werden Shared AssembyShared Assemby
Assembly kann global von allen Assembly kann global von allen Anwendungen benutzt werdenAnwendungen benutzt werden
AssembliesAssembliesKategorienKategorien
52
Identifikation anhand eines einfachen Identifikation anhand eines einfachen Namens, z.B. “Reverse” Namens, z.B. “Reverse”
Keine Versionsüberprüfung Keine Versionsüberprüfung Installation per Filecopy Installation per Filecopy
Standardmäßig befinden sich Assembly Standardmäßig befinden sich Assembly und Anwendung im gleichen Verzeichnisund Anwendung im gleichen Verzeichnis
Verzeichnis kann per CFG-Datei definiert Verzeichnis kann per CFG-Datei definiert werdenwerden
Identifikation über einen Identifikation über einen Strong NameStrong Name Eindeutig per Public-Key-VerschlüsselungEindeutig per Public-Key-Verschlüsselung Strong Name = Identität + Public KeyStrong Name = Identität + Public Key
Versionsüberprüfung durch die RuntimeVersionsüberprüfung durch die Runtime Installation im Global Assembly CacheInstallation im Global Assembly Cache
(( SDK-Tool al.exe oder gacutil.exe) SDK-Tool al.exe oder gacutil.exe) systemweiter “Speicherbereich” systemweiter “Speicherbereich” normale Dateiennormale Dateien keine Registry-Einträge, o. ä.keine Registry-Einträge, o. ä.