Einführung in .NET
-
Upload
andreas-heil -
Category
Technology
-
view
424 -
download
1
Transcript of Einführung in .NET
Einführung in .NETEinführung in .NET
Martin Saternus & Andreas HeilMartin Saternus & Andreas HeilSenior Student PartnerSenior Student Partner
MAP - Microsoft Academic ProgramMAP - Microsoft Academic Program
Microsoft Deutschland GmbHMicrosoft Deutschland GmbH
AgendaAgenda
Microsoft .NET FrameworkMicrosoft .NET Framework .NET 2.0.NET 2.0 .NET vs. Java.NET vs. Java …… ……
Die „Problemchen“Die „Problemchen“
Deployment komponentenbasierter Deployment komponentenbasierter Anwendungen ist nicht einfachAnwendungen ist nicht einfach Es droht die DLL-HölleEs droht die DLL-Hölle
Das Web-ProgrammierungsparadigmaDas Web-Programmierungsparadigma Zustandslose HTML-Seiten (oder Web-Zustandslose HTML-Seiten (oder Web-
Applikationen) sind schwer zu entwickelnApplikationen) sind schwer zu entwickeln
API‘sAPI‘s Es gibt eine Vielzahl von API‘s (COM, Win32, Es gibt eine Vielzahl von API‘s (COM, Win32,
MFC, usw.)MFC, usw.) Plattformabhängigkeit der API‘sPlattformabhängigkeit der API‘s
Die „Problemchen“Die „Problemchen“
Applikationen integrierenApplikationen integrieren Sprachen haben unterschiedliche TypsystemeSprachen haben unterschiedliche Typsysteme
Denken Sie nur mal an Strings...Denken Sie nur mal an Strings...
COM „sitzt auf“ anderen ObjektkonzeptenCOM „sitzt auf“ anderen Objektkonzepten COM ist ein binärer Kommunikations-standardCOM ist ein binärer Kommunikations-standard DCOM und Firewalls sind problematischDCOM und Firewalls sind problematisch
Dienst- und PlattformintegrationDienst- und Plattformintegration Keine Standards für die InteroperabilitätKeine Standards für die Interoperabilität
Die Welt hat sich verändertDie Welt hat sich verändert
Microsoft ist groß geworden in einer Welt...Microsoft ist groß geworden in einer Welt... ...mit Desktops...mit Desktops ...mit lokalen Netzwerken...mit lokalen Netzwerken
Die zukünftige Welt bringt uns...Die zukünftige Welt bringt uns... ...eine große Vielfalt von Computern (Devices)...eine große Vielfalt von Computern (Devices) ...eine Vernetzung aller Computer über das ...eine Vernetzung aller Computer über das
InternetInternet
Software als ServiceSoftware als Service Unterstützung von Smart DevicesUnterstützung von Smart Devices offene Standards als offene Standards als
GrundlageGrundlage
Partner Web Services
Microsoft Web Services
andere Web Services
Datenzugriff und -speicherung
Geschäftslogik der Applikation
Ihr Unternehmen.com
Internet + XML
andere Applikationen
Clients
VisionVision
Herausforderungen (1/2)Herausforderungen (1/2)
Wie verändert ein globales Netzwerk die Wie verändert ein globales Netzwerk die Softwarewelt?Softwarewelt? Neue Möglichkeiten für das DeploymentNeue Möglichkeiten für das Deployment Neue GeschäftsmodelleNeue Geschäftsmodelle Möglichkeit der Anwendungsintegration via Möglichkeit der Anwendungsintegration via
NetzwerkNetzwerk Plattformunabhängigkeit (OS, Hardware, Plattformunabhängigkeit (OS, Hardware,
Komponententechnologien)Komponententechnologien)
Sicherheitsanforderungen steigenSicherheitsanforderungen steigen Web-Programmierung muss effizienter werdenWeb-Programmierung muss effizienter werden
Herausforderungen (2/2)Herausforderungen (2/2)
Wie verändert die große Device-Vielfalt die Wie verändert die große Device-Vielfalt die Softwarewelt?Softwarewelt? Die Zielplattform für den Code ist unbekanntDie Zielplattform für den Code ist unbekannt Es wird plattform-unabhängiger Code gebrauchtEs wird plattform-unabhängiger Code gebraucht Was auf dem Desktop geht, muss auch auf einem Was auf dem Desktop geht, muss auch auf einem
Palmtop (o. ä.) funktionierenPalmtop (o. ä.) funktionieren
Lösungsansatz .NET FrameworkLösungsansatz .NET Framework
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET and XMLADO.NET and XML
ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# JScriptJScript J#J#
Visu
al S
tud
io.N
ET
Visu
al S
tud
io.N
ET
.NET Framework Standards.NET Framework Standards
SSCLI
RotorCLI + mehr
CLI
ECMA/ISO StandardCommon Language
Infrastructure
.NET
.NET Framework
CE
AndreasAndreas
Runtime CompilerRuntime Compiler
CLR
VBSource Code
Compiler
C++C#
Assembly AssemblyAssembly
Operating System Services
IL Code
Common Language Runtime JIT Compiler
Compiler Compiler
NativeCode
ManagedCode
ManagedCode
ManagedCode
UnmanagedCode
CLR Services
Ngen
Andreas (Java Teil)Andreas (Java Teil)
AssembliesAssemblies
.NET Anwendungen bestehen aus Assemblies.NET Anwendungen bestehen aus Assemblies Private AssembliesPrivate Assemblies
Identifikation anhand eines einfachen NamensIdentifikation anhand eines einfachen Namens Keine Versionsüberprüfung Keine Versionsüberprüfung Installation per Filecopy Installation per Filecopy
Standardmäßig befinden sich Assembly und Anwendung im Standardmäßig befinden sich Assembly und Anwendung im gleichen Verzeichnisgleichen Verzeichnis
Verzeichnis kann per CFG-Datei definiert werdenVerzeichnis kann per CFG-Datei definiert werden
Shared AssemblyShared Assembly 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
Strong Name & CodesigningStrong Name & Codesigning
Strong Name garantiert Strong Name garantiert CodeintegritätCodeintegrität Unbemerktes Einschleusen von modifiziertem Unbemerktes Einschleusen von modifiziertem
Code wird verhindertCode wird verhindert Aber: Auch böse Menschen arbeiten mit Strong Aber: Auch böse Menschen arbeiten mit Strong
NamesNames
Code-Signing garantiert Code-Signing garantiert CodeidentitätCodeidentität Code ist aufgrund seines X.509-Zertifikats Code ist aufgrund seines X.509-Zertifikats
eindeutig identifizierbareindeutig identifizierbar
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET and XMLADO.NET and XML
ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# JScriptJScript J#J#V
isua
l Stu
dio
.NE
TV
isua
l Stu
dio
.NE
T
.NET Framework.NET Framework
Einheitliches Programmier ModelEinheitliches Programmier Model
Windows APIWindows API
.NET Framework.NET Framework
Gleiche API ungeachtet der Gleiche API ungeachtet der Sprache und des ModelsSprache und des Models
ASPASPMFC/ATLMFC/ATLVB FormsVB Forms
Wieviel einfacher?Wieviel einfacher?
Windows APIWindows APIHWND hwndMain = CreateWindowEx(HWND hwndMain = CreateWindowEx( 0, "MainWClass", "Main Window",0, "MainWClass", "Main Window", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL, hInstance, NULL); (HWND)NULL, (HMENU)NULL, hInstance, NULL); ShowWindow(hwndMain, SW_SHOWDEFAULT); ShowWindow(hwndMain, SW_SHOWDEFAULT); UpdateWindow(hwndMain);UpdateWindow(hwndMain);
.NET Framework.NET Framework
Form Form form =form = new new Form() Form()form.Text = "Main Window"form.Text = "Main Window"form.Show()form.Show()
System System
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalization
DiagnosticsDiagnostics
ConfigurationConfiguration
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
TextText
ServiceProcessServiceProcess
SecuritySecurity
CommonCommon
OleDbOleDb
SQLTypesSQLTypes
SqlClientSqlClient
XPathXPath
XSLTXSLT
RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.DrawingSystem.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.Windows.FormsSystem.Windows.Forms
DesignDesign ComponentModelComponentModel
KlassenbibliothekKlassenbibliothek
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET and XMLADO.NET and XML
ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# JScriptJScript J#J#V
isua
l Stu
dio
.NE
TV
isua
l Stu
dio
.NE
T
Framework, Languages und ToolsFramework, Languages und Tools
SprachenSprachen
Die .NET Plattform ist SprachneutralDie .NET Plattform ist Sprachneutral Alle .NET Sprachen sind gleich berechtigtAlle .NET Sprachen sind gleich berechtigt Wahl der Sprache nach Ihren FähigkeitenWahl der Sprache nach Ihren Fähigkeiten
Common language specification (CLS)Common language specification (CLS) Satz an Merkmalen, die in jeder Sprache garantiert sindSatz an Merkmalen, die in jeder Sprache garantiert sind
Microsoft liefertMicrosoft liefert Visual BasicVisual Basic®®, C++, C#, J#, JScript, C++, C#, J#, JScript®®
Drittanbieter liefernDrittanbieter liefern APL, COBOL, Delphi, Pascal, Eiffel, Haskell, ML, Oberon, APL, COBOL, Delphi, Pascal, Eiffel, Haskell, ML, Oberon,
Perl, Python, Scheme, Smalltalk…Perl, Python, Scheme, Smalltalk…
AgendaAgenda
Microsoft .NET FrameworkMicrosoft .NET Framework .NET 2.0.NET 2.0 Web ServicesWeb Services
GenericsGenerics
VB VC++ C# ...
MS-IL
NativeCode
Common Language Runtime
JScript
Support für Generics/
Polymorphismus
UND hier…
...UND hier
GC
JITLoaderVerifier
...
AndreasAndreas
Generics BeispielGenerics Beispiel
class Node<T> {class Node<T> {
T m_data;T m_data;
Node<T> m_next;Node<T> m_next;
public Node(T data, Node<T> next) {public Node(T data, Node<T> next) {
m_data = data;m_data = data;
m_next = next;m_next = next;
}}
// Access the data for the node// Access the data for the node
public T Data {public T Data {
get { return m_data; } get { return m_data; }
set { m_data = value; }set { m_data = value; }
}}
// Access the next node// Access the next node
public Node<T> Next {public Node<T> Next {
get { return m_next; } get { return m_next; }
set { m_next = value; }set { m_next = value; }
}}
//Create a linked list of integers//Create a linked list of integers
Node<Int32> head = new Node<Int32> head = new Node<Int32>(5, null);Node<Int32>(5, null); head = new Node<Int32> (10, head);head = new Node<Int32> (10, head);
head = new Node<Int32> (15, head);head = new Node<Int32> (15, head);
// Sum up integers by traversing linked list// Sum up integers by traversing linked listInt32 sum = 0;Int32 sum = 0;for (Node<Int32> current = head; for (Node<Int32> current = head; current != null; current != null; current = current.Next) {current = current.Next) { sum += current.Data;sum += current.Data;} }
Generics vs Polymorphismus (1/2)Generics vs Polymorphismus (1/2)
Staff object p
Student object s
Contractor object cr[1] = p
r[2]=s
r[3]=c
Polymorphisches Register SortedList r
vom Typ object
Student t = (Student) r[2];
•Dynamische Typinforamtion in r• Überpüfung bei Zuweisung!
Generisches Register SortedList gr
Generics vs Polymorphismus (2/2)Generics vs Polymorphismus (2/2)
Staff object p
Student object s
Contractor object cgr[1] = p
gr[2]=s
gr[3]=c
vom Typ <IAccess> objects
Student t = gr[2];
•Information für gr zur Kompliierzeit•Kein Casting für Zuweisung nötig
Java vs .NETJava vs .NET
AgendaAgenda
Microsoft .NET FrameworkMicrosoft .NET Framework .NET 2.0.NET 2.0 Web ServicesWeb Services
Was ist ein Web Services?Was ist ein Web Services? Dienste im Netz, die über Standard-Protokolle erreichbar sindDienste im Netz, die über Standard-Protokolle erreichbar sind Datenaustausch basiert auf XML- DokumentenDatenaustausch basiert auf XML- Dokumenten Plattform- und unternehmensübergreifende TransaktionenPlattform- und unternehmensübergreifende Transaktionen
Lieferant BLieferant B
IhrIhrUnternehmenUnternehmen
Verbinden (Web)Verbinden (Web) Lieferant CLieferant C
Bestell-Bestell-wesenwesen
Lieferant ALieferant A
KundenKundenFinden (UDDI)Finden (UDDI)Daten (XML)Daten (XML)Interagieren (SOAP)Interagieren (SOAP)
LagerLager
Was ist ein Web Service? Was ist ein Web Service?
WebService
RMIService
DCOMService
Client
Firewall
Port 80
eine Komponente, eine Komponente, die die über Standard-über Standard-Webprotokolle Webprotokolle interagiertinteragiert
Universal Firewall Universal Firewall PenetrationPenetration Protokoll Protokoll
Web Services StackWeb Services Stack
Kommunikationsnetz : Kommunikationsnetz : InternetInternet
Universelles Datenformat :Universelles Datenformat : XMLXML
Datenaustausch zw. WS :Datenaustausch zw. WS : SOAPSOAP
Web Service Directory :Web Service Directory : UDDIUDDI
einfache, offene und akzeptierte Standardseinfache, offene und akzeptierte Standards
Beschreibung von WS :Beschreibung von WS : WSDLWSDL
SOAPSOAP
Früher: Simple Object Access ProtocolFrüher: Simple Object Access Protocol Mechanismus zum Austausch von strukturierter Mechanismus zum Austausch von strukturierter
und typisierter Information zwischen und typisierter Information zwischen Kommunikationsendpunkten im Internet auf Basis Kommunikationsendpunkten im Internet auf Basis von XMLvon XML
HTTP als TransportprotokollHTTP als Transportprotokoll XML zur DatenkapselungXML zur Datenkapselung Spezifikation enthältSpezifikation enthält
SOAP Envelope (für Framework)SOAP Envelope (für Framework) SOAP Encoding (optional, für plattform-übergreifendes SOAP Encoding (optional, für plattform-übergreifendes
Marshaling von Daten/Objekten)Marshaling von Daten/Objekten)
Web Service Prog.modellWeb Service Prog.modell
Erstellen Sie eine .asmx Datei, die eine Klasse mit den Erstellen Sie eine .asmx Datei, die eine Klasse mit den Methoden enthält, die Sie zur Verfügung stellen Methoden enthält, die Sie zur Verfügung stellen möchtenmöchten
Das Hinzufügen des Attributs Das Hinzufügen des Attributs WebMethod WebMethod zu einer zu einer Public-Methode macht sie automatisch zu einem Web Public-Methode macht sie automatisch zu einem Web ServiceService
ASP.NET macht den "Rest"ASP.NET macht den "Rest" Erzeugen der Service-Beschreibung alsErzeugen der Service-Beschreibung als
WSDL-Datei (Web Service Description Language)WSDL-Datei (Web Service Description Language) Compile on demandCompile on demand
Fragen ???Fragen ???