View
106
Download
1
Category
Preview:
Citation preview
1
Anwendungen der nächsten GenerationAnwendungen der nächsten Generation
StandardStandardBrowsersBrowsers
StandardStandardBrowsersBrowsers
SmarterSmarterClientsClients
SmarterSmarterClientsClients
SmarterSmarterDevicesDevices
SmarterSmarterDevicesDevices Offene Internet Protokolle Offene Internet Protokolle
(HTTP, SMTP, XML, SOAP) (HTTP, SMTP, XML, SOAP) Anwendungen rufenAnwendungen rufen
weltweit lose gekoppelteweltweit lose gekoppelteDienstleistung aufDienstleistung auf
Anwendungen werdenAnwendungen werdenWebServicesWebServices
OS OS ServicesServices
BizBizTier LogicTier Logic
BizBizTier LogicTier LogicBiz Logic Biz Logic & & Web ServiceWeb Service
OSOSServicesServices
OSOSServicesServices
Public WebPublic WebServicesServices
Building BlockBuilding BlockServicesServices
InternalInternalServicesServices
XMLXML
XMLXML
XMLXML
ServersServersData, HostsData, Hosts
ServersServersData, HostsData, Hosts
XMLXML
OtherOther ServicesServices XMLXML
XMLXML
XMLXML
HTMLHTML
2
Die 3. Generation von Internet-AppsDie 3. Generation von Internet-Apps
1. Generation1. Generation
1994-961994-96
2. Generation2. Generation
1996-20001996-2000
Statische SeitenStatische Seiten Dyn. SeitenDyn. Seiten
E-mail,E-mail,einfache Infoeinfache Info
Personalisation,Personalisation,E-CommerceE-Commerce
IE, IISIE, IIS Windows DNAWindows DNA
3. Generation3. Generation
2000+2000+
Mehr als SurfenMehr als Surfen
Web ServicesWeb Services
Microsoft .NETMicrosoft .NET
3
WebServiceWebServiceProviderProvider
BusinessBusinessPartnersPartners
.NET.NETBuilding Block Building Block
Services Services
Service FederationService FederationLose gekoppelte DienstleistungenLose gekoppelte Dienstleistungen
Finance
News
B2B
.NET.NETEnterprise Enterprise
ServerServer
BizTalkMessaging
SQL ServerXML
ExchangeWebStorage
Open Standards:
TCP/IPXML
HTTPSMTPSOAP
Enterprise Applikationen
AccountingAccounting
Order/Order/Sales Dept.Sales Dept.
Knowledge Knowledge ManagementManagement
WebsiteWebsite
XML
EDIFACT
X12
4
.NET Building Block Services.NET Building Block Services
Verteilte, XML-basierte DiensteVerteilte, XML-basierte Dienste Arbeiten online oder offline Arbeiten online oder offline
(Intranet)(Intranet)IdentityIdentity
Notification, MessagingNotification, MessagingPersonalizationPersonalization
XML StorageXML StorageCalendarCalendar
Directory and SearchDirectory and SearchSoftware DeliverySoftware Delivery
5
WebServicesWebServices
Open Internet Protocols
Internal Internal CorporateCorporateServicesServices
MicrosoftMicrosoft BuildingBuildingBlock Block ServicesServices
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
Passport – Identity ServicePassport – Identity ServicePassport – Identity ServicePassport – Identity 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
ausaus Runtime übernimmt Speicherverwaltung Runtime übernimmt Speicherverwaltung
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
Klasse abgeleitet sein“Klasse abgeleitet sein“ einheitliche Fehlerbehandlungeinheitliche Fehlerbehandlung
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()
{{
Console.WriteLine("Hello, World!");Console.WriteLine("Hello, World!");
}}
}}
}}
VB.NETVB.NET
Imports SystemImports System
Namespace HelloWorldNamespace HelloWorld
Class Class1Class Class1
Shared Sub Main()Shared Sub Main()
Console.WriteLine("Hello, World!")Console.WriteLine("Hello, World!")
End SubEnd Sub
End ClassEnd Class
End NamespaceEnd Namespace
Alternativ:Alternativ:
Module Module1Module Module1
Sub Main()Sub Main()
Console.WriteLine("Hello, World!")Console.WriteLine("Hello, World!")
End SubEnd Sub
End ModuleEnd Module
27
Hello, World: C# ILHello, World: C# IL.namespace HelloWorld.namespace HelloWorld{{ .class public auto ansi Class1.class public auto ansi Class1 extends [mscorlib]System.Objectextends [mscorlib]System.Object {{ .method public hidebysig static void Main().method public hidebysig static void Main() il managed il managed {{ .entrypoint.entrypoint .maxstack 8.maxstack 8 IL_0000: ldstr "Hello, World!"IL_0000: ldstr "Hello, World!" IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String) IL_000a: retIL_000a: ret }} .method public hidebysig specialname rtspecialname .method public hidebysig specialname rtspecialname instance void .ctor() il managedinstance void .ctor() il managed {{ .maxstack 8.maxstack 8 IL_0000: ldarg.0IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor()IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: retIL_0006: ret }} }}}}
28
C# und VB.NET GemeinsamkeitenC# und VB.NET Gemeinsamkeiten NamespacesNamespaces
Enthalten Typdefinitionen und NamespacesEnthalten Typdefinitionen und Namespaces Typdefinitionen Typdefinitionen
Klassen, Strukturen, Interfaces, Delegates ...Klassen, Strukturen, Interfaces, Delegates ... Elemente von TypenElemente von Typen
Konstanten, Felder, Methoden, Properties, Events, Konstanten, Felder, Methoden, Properties, Events, Operatoren, Konstruktoren, DestruktorenOperatoren, Konstruktoren, Destruktoren
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)
Variable enthältVariable enthält WertWert ReferenzReferenz
SpeicherSpeicher StackStack HeapHeap
Initialisiert mitInitialisiert mit Alles 0Alles 0 Konstante: Konstante: nullnull
ZuweisungZuweisung kopiert Wertkopiert Wert kopiert Referenzkopiert Referenz
int i = 123;int i = 123;string s = "Hello world";string s = "Hello world";
123123ii
ss "Hello world""Hello world"
123123jj
tt
int j = i;int j = i;string t = s;string t = s;
32
Boxing und Unboxing Jeder Datentyp kann als Objekt gespeichert Jeder Datentyp kann als Objekt gespeichert
oder übergeben werdenoder übergeben werden
int int i = 123;i = 123;object o = i;object o = i;int int j = (int)o;j = (int)o;
123123i
o
123123
System.Int32System.Int32 }} ““Boxing”Boxing”
123123j }} ““Unboxing”Unboxing”
33
Implementation Inheritance Einfachvererbung (single inheritance)Einfachvererbung (single inheritance)
Auch über Sprachgrenzen hinwegAuch über Sprachgrenzen hinweg Abstrakte Klassen, finale KlassenAbstrakte Klassen, finale Klassen
Implementierung von beliebig vielen InterfacesImplementierung von beliebig vielen Interfaces Elemente einer KlasseElemente einer Klasse
Konstanten, Felder, Methoden, Konstruktoren, Destruktoren, Konstanten, Felder, Methoden, Konstruktoren, Destruktoren, Operatoren (C#)Operatoren (C#)
Properties, Indexer (C#), Properties, Indexer (C#), Events (VB.NET)Events (VB.NET)
Verschachtelte TypenVerschachtelte Typen Statische ElementeStatische Elemente Virtuelle MethodenVirtuelle Methoden
VB.NET: Alle MethodenVB.NET: Alle Methodenimmer virtuellimmer virtuell
ZugriffsschutzZugriffsschutz public, protected, internal, privatepublic, 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 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 {
items[index] = value; items[index] = value; Repaint();Repaint(); }} }}}} ListBox listBox = new ListBox();
string s = listBox[0]listBox[0] = "hello";listBox[1] = "world";
38
Strukturenstruct Point struct Point {{
private double m_x, m_y;private double m_x, m_y;
public Point(double x, double y) {public Point(double x, double y) {
m_x = x; m_y = y;m_x = x; m_y = y;
}}
public double xpublic double x {{
get {get { return m_x;return m_x; }}
set {set { m_x = value;m_x = value; }}
}}
......
public static Point operator+(Point l, Point r) public static Point operator+(Point l, Point r) {{
return new Point(l.x+r.x, l.y+r.y);return new Point(l.x+r.x, l.y+r.y);
}}
public override string ToString() public override string ToString() {{
return "(" + m_x + ", " + m_y + ")";return "(" + m_x + ", " + m_y + ")";
}}
}}
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!
Verwenden „echter“ Sprachen: VB.NET, Verwenden „echter“ Sprachen: VB.NET, C#, ...C#, ...
Seite wird beim ersten Aufruf komplett auf Seite wird beim ersten Aufruf komplett auf dem Server kompiliertdem Server kompiliert
Kompiliat wird beim Aufruf gerendertKompiliat wird beim Aufruf gerendert Browser bekommen „reines“ HTML zu Browser bekommen „reines“ HTML zu
sehensehen Seiten können serverseitigeSeiten können serverseitige
UI-Controls verwendenUI-Controls verwenden Diese Controls werden Diese Controls werden WebControlsWebControls
genanntgenannt
44
ADO.NET ArchitekturADO.NET Architektur
Managed ProviderManaged Provider
DataSet-DataSet-CommandCommand
DataReaderDataReader
CommandCommandConnectionConnection
XmlDocumentXmlDocument
XmlReaderXmlReader
XmlText-XmlText-ReaderReader
XmlNode-XmlNode-ReaderReaderTextReaderTextReader
StringString StreamStream
<xml><xml>……
</xml></xml>
““<xml><xml>……
</xml>”</xml>”
Web/Windows Web/Windows Form ControlsForm ControlsVS.NET VS.NET
DesignersDesigners
myDataSetmyDataSet
ItemItem
CustCustOrderOrder
VS.NET Class VS.NET Class GeneratorGenerator
45
AssembliesAssemblies .NET Anwendungen bestehen aus .NET Anwendungen bestehen aus
AssembliesAssemblies Assembly = KomponenteAssembly = Komponente
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
AssembliesAssembliesPrivate AssemblyPrivate Assembly
53
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. ä.
AssembliesAssembliesShared AssemblyShared Assembly
54
VersionierungVersionierungAufbau der VersionsnummerAufbau der Versionsnummer
55
<Configuration><BindingMode> <AppBindingMode Mode="safe"/> <!-- normal | safe --> </BindingMode></ Configuration>
<Configuration><BindingPolicy> <BindingRedir Name=“[Assembly Name]" Originator="[Public Key]" Version="*" VersionNew=“[Versionsnummer]" UseLatestBuildRevision=“no"/> <!-- no | yes --> </BindingPolicy></Configuration>
VersionierungVersionierungVorgaben per CFG-Datei definierenVorgaben per CFG-Datei definieren
56
Mehr InformationenMehr Informationen http://www.microsoft.com/nethttp://www.microsoft.com/net http://msdn.microsoft.com/nethttp://msdn.microsoft.com/net http://www.gotdotnet.comhttp://www.gotdotnet.com http://www.dotnetgerman.http://www.dotnetgerman.comcom http://http://wwwwww..devxdevx..comcom//dotnetdotnet// http://http://discussdiscuss..developdevelop..comcom//dotnetdotnet..htmlhtml
Recommended