Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• .NET Klassenbibliothek• Zukunft
Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• .NET Klassenbibliothek• Zukunft
Die heutigen Probleme (1/2)
• Deployment komponentenbasierter Anwendungen ist nicht einfach– Es droht die DLL-Hölle
• Das Web-Programmierungsparadigma– Zustandslose HTML-Seiten (oder Web-
Applikationen) sind schwer zu entwickeln
• API‘s– Es gibt eine Vielzahl von API‘s (COM, Win32, MFC,
usw.)– Plattformabhängigkeit der API‘s
Die heutigen Probleme (2/2)
• Applikationen integrieren– Sprachen haben unterschiedliche Typsysteme
• COM „sitzt auf“ anderen Objektkonzepten– „Internetfähigkeit“ von COM
• Dienst- und Plattformintegration– Keine Standards für die Interoperabilität
• Kontrolle von Code• Ressourcenverwaltung• Fehler bei der Entwicklung
• Software als Service• Unterstützung von Smart Devices• offene Standards als
GrundlagePartner Web Services
Microsoft Web Services
andere Web Services
Datenzugriff und -speicherung
Geschäftslogik der Applikation
Ihr Unternehmen.com
Internet + XML
andere Applikationen
Clients
Vision / Zukunft
.NET Framework
Base Class Library
Common Language Specification
Common Language Runtime
ADO.NET and XML
VB C++ C#V
isual S
tud
io.N
ET
ASP.NET
J# …
Windows Forms
Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• .NET Klassenbibliothek• Zukunft
.NET für Entwickler
Base Class Library
Common Language Specification
Common Language Runtime
ADO.NET and XML
VB C++ C#V
isual S
tud
io.N
ET
ASP.NET
J# …
Windows Forms
Der Weg zum Maschienencode
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
Assemblies (1/2)
• .NET Anwendungen bestehen aus Assemblies• Private Assemblies
– Identifikation anhand eines einfachen Namens– Keine Versionsüberprüfung – Installation per Filecopy
• Standardmäßig befinden sich Assembly und Anwendung im gleichen Verzeichnis
• Verzeichnis kann per CFG-Datei definiert werden• Shared Assembly
– Identifikation über einen Strong Name• Eindeutig per Public-Key-Verschlüsselung• Strong Name = Identität + Public Key
– Versionsüberprüfung durch die Runtime– Installation im Global Assembly Cache
Assemblies (2/2)
• Strong Name garantiert Codeintegrität– Unbemerktes Einschleusen von modifiziertem Code
wird verhindert– Aber: Auch böse Menschen arbeiten mit Strong
Names
• Code-Signing garantiert Codeidentität– Code ist aufgrund seines X.509-Zertifikats eindeutig
identifizierbar
Code wird kompiliert
• IL-Code wird vor der Ausführung immer (!) durch Compiler in echten Maschinencode übersetzt
• IL-Code ist unabhängig von Hardwareplattformen
Common 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 „per Definition“ interoperabel, da sie das gleiche Typsystem benutzen
• Compilerbau wird einfacher
Alles ist ein Objekt!
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 Language Specification
• „Kleinster gemeinsamer Nenner“ für Typen– C++ und C# kennen Zeiger; VB.NET nicht– C++ kennt die STL; VB.NET und C# nicht– „komplette“ Sprachintegration schwierig
• Die Common Language Specification (CLS) definiert den kleinsten gemeinsamen Nenner aus dem Common Type System, den jeder Compiler unterstützen sollte
• „Mapping“ der CLR-Typen auf Sprachtypen– Integer unter VB.NET entspr. bspw. System.Int32– Für COM-Programmierer ist System.Object die moderne
Form eines Variant ;-)
• C# Typen sind Managed Types (!)
Implikation / Zusammenfassung
• Sprachen werden gleichwertig, da alle Compiler IL-Code erzeugen– Eine C# Klasse kann (z.B.) von einer VB.NET
Klasse abgeleitet sein• Vererbungsfähigkeit kommt aus der
Runtime– Einheitliche Fehlerbehandlung– Ähnliche Performance
„The language doesn‘t matter!“Dan Appleman
Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• .NET Klassenbibliothek• Zukunft
Common Language Runtime
Base Class Library
Common Language Specification
Common Language Runtime
ADO.NET and XML
VB C++ C#V
isual S
tud
io.N
ET
ASP.NET
J# …
Windows Forms
Robust und sicher
• Automatisches Lifetime Management– Alle .NET Objekte werden ‘garbage collected’– Keine ‘Stray Pointers’, keine zirkulären Referenzen
• Eingebautes, strukturiertes Exception Handling– keine HRESULTS (kryptische Fehlernummern) mehr!
• Prüfbar und Typsicher– Verhindert die häufigsten Programmierfehler
• Evidence-based Sicherheit– Herkunft des Codes und Benutzerrechte – Erweiterbare Rechte (Extensible permissions)
Plattform für alle Sprachen
• Alle Features des .NET Framework sind in jeder .NET Programmiersprache zugänglich
• Nahtlose Mehrsprachige Entwicklung– Vererbung über Sprachgrenzen hinweg
• Implementierungen verschiedener Sprachen– Perl, COBOL, Eiffel, Python, etc.– Andere wie APL, Smalltalk, Lisp
• Hochproduktive Werkzeuge– Debugger, Profilers, Code Analyzers, etc.
arbeiten für alle Sprachen.
Wartung und Verteilung
• Keine Registrierung notwendig– Einfach die Applikationskomponenten kopieren
(xcopy deployment)– Der Code ist vollständig selbstbeschreibend
(MetaDaten [Manifest])– Nebenwirkungsfreie Installation (Zero-impact install)
• ‘Side-by-Side’ Ausführung– Verschiedene Versionen derselben Komponente
können sogar in einem Prozess kooexistieren
Web Service
Demo
Zusammenfassung CLR
• Einheitliches Typsystem• Sprachen werden gleichwertig• Alles ist von Object abgeleitet• Das Common Type System definiert welche
Typen nach außen gegeben werden sollten
Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• .NET Klassenbibliothek
– ADO.NET und XML– Web Services und Web Applikationen
• Zukunft
.NET Klassenbibliothek
Base Class Library
Common Language Specification
Common Language Runtime
ADO.NET and XML
VB C++ C#V
isual S
tud
io.N
ET
ASP.NET
J# …
Windows Forms
Putting it all together
Windows API
.NET Framework
Unabhängigkeit von der verwendeten Programmiersprache
ASPMFC/ATLVisual Basic®
Forms
RAD,Composition,Delegation
Subclassing, Power,Expressiveness
Stateless,Code embeddedin HTML pages
System.Web
.NET Framework Namespaces
System
System.Data System.Xml
Design
ADO
SQLTypes
SQL
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security RuntimeInteropServices
Remoting
Serialization
XPath
XSLT Serialization
System.Drawing
System.Windows.Forms
Imaging
Drawing2D
Text
Printing
Design ComponentModelServices
Configuration SessionState
Caching Security
UIHtmlControls
WebControls
Description
Discovery
Protocols
Agenda
• Situation heute• Common Language Spezification (CLS)• Common Language Runtime (CLR)• .NET Klassenbibliothek
– ADO.NET und XML– Web Services und Web Applikationen
• Zukunft
.NET Framework Namespaces
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.Windows.Forms
Design ComponentModel
ADO.NET und XML
• Verarbeitet alle Arten von Daten– XML (hierarchical), Relational
• Leistungsfähiger In-Memory Daten Cache – Lightweight, stateless, disconnected– sowohl relational wie XML Zugriff, unabhängig von
der Datenquelle
• XML Unterstützung: – W3C DOM, XSL/T, XPath und Schema
• Data Reader für Streamzugriff mit geringem Overhead
Das DataSet
• Relationale Sicht der Daten– Tabellen, Spalten, Zeilen,
Beschränkungen, Beziehungen
• Direkte Erzeugung vonMetadaten einfaches Einfügenvon Daten
• Explizites Cache Modell– Disconnected, remotable Objekt– Hat keine Kenntnis über die Datenquelle Zugriff wie
auf ein Array– Strong Typing möglich– Filtern und Aggregieren möglich
DataSet
Tables
Table
Columns
ColumnColumnConstraints
ConstraintRows
RowRelations
Relation
Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• .NET Klassenbibliothek
– ADO.NET und XML– Web Services und Web Applikationen
• Zukunft
.NET Framework Namespaces
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.Windows.Forms
Design ComponentModel
Web Forms
• Einheitliches Modell• Trennung zwischen Form und Code• Ereignisorientiert• Viel bessere Performance als ASP
• Neu in ASP.Net 2.0: viele neue Controls für Standardaufgaben– Bsp.: Userverwaltung, Masterpages, Profiles, etc.
Web Web SiteSiteWeb Web
ServiceService
Veränderungen am ServerWeb Services: Mehr als Browsen
Web Web ServiceService
XMLXML
HTMLHTML
ClientClient
XML
XML
ClientClientXMLXML
Web Web ServiceService
XMLXML
Web Web ServiceService
XMLXML
XM
LX
ML
Web Services
• Technische Definition - "Eine programmierbare Anwendung, auf die über Standardwebprotokolle zugegriffen werden kann"– Basiert auf SOAP
• „Aufbau“ Web Service Stack– SOAP (Codierung, Transport)– UDDI (Finden, Suchen)– WSDL (Schnittstellenbeschreibung)
Datenaustausch
Web Services
SOAPSOAP
XMLXML
Web Service
Demo
Agenda
• Situation heute• .NET für den Entwickler• Common Language Runtime (CLR)• Base Libraries
– ADO.NET und XML– Web Services und Web Applikationen
• Zukunft
Zukunft
• Windows Communication Foundation (WCF)– ehemals Codename „Indigo“– Beschreibung von Services ( Contracts )– Nachrichten basierend
Quelle:http://www.dotnetpro.de/articles/freearticles/pdf/2005-11-Indigo.pdf
Fragen?
Links
• http://msdn.microsoft.com/webservices/indigo/default.aspx
• http://msdn.microsoft.com/netframework
• http://www.codeproject.com• http://www.guidetocsharp.de• http://www.codezone.de
• http://www.terraserver.com
Events an der TU-Ilmenau
• Ready to Launch Event– Veröffentlichung von Visual Studio 2005 und SQL
Server 2005– Vorträge
• .NET Usergroup Ilmenau– Vorträge, Workshops zu .NET Themen
• Informationen unter– http://www.studentprogram.de/ilmenau– Mail: [email protected]
Danke!
Vielen Dank fürIhre Aufmerksamkeit !