Windows Forms

Werbung
.NET
Nico Orschel
Microsoft Student Partner, TU-Ilmenau
[email protected]
http://www.studentprogram.de/ilmenau
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
–
•
Das Web-Programmierungsparadigma
–
•
Es droht die DLL-Hölle
Zustandslose HTML-Seiten (oder WebApplikationen) 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
–
•
COM „sitzt auf“ anderen Objektkonzepten
–
•
„Internetfähigkeit“ von COM
Dienst- und Plattformintegration
–
•
•
•
Sprachen haben unterschiedliche Typsysteme
Keine Standards für die Interoperabilität
Kontrolle von Code
Ressourcenverwaltung
Fehler bei der Entwicklung
Vision / Zukunft
• Software als Service
• Unterstützung von Smart Devices
• offene Standards als
Grundlage
Microsoft
Web Services
Partner Web Services
andere
Web Services
Internet + XML
Clients
Ihr Unternehmen.com
Geschäftslogik der Applikation
Datenzugriff und -speicherung
andere Applikationen
.NET Framework
VB
C++
C#
J#
…
Common Language Specification
Windows Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
Visual Studio.NET
ASP.NET
Agenda
•
•
•
•
•
Situation heute
.NET für den Entwickler
Common Language Runtime (CLR)
.NET Klassenbibliothek
Zukunft
.NET für Entwickler
VB
C++
C#
J#
…
Common Language Specification
Windows Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
Visual Studio.NET
ASP.NET
Der Weg zum Maschienencode
Source
Code
IL Code
Ngen
Native
Code
VB
C#
C++
Compiler
Compiler
Compiler
Assembly
Assembly
Assembly
Common Language Runtime JIT Compiler
Managed
Code
CLR Services
Managed
CLR
Code
Managed
Code
Operating System Services
Unmanaged
Code
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
Boolean
Int64
Byte
SByte
Enum
Typen im
Namespace
System
Char
Single
Type
Currency
TimeSpan
DateTime
String
TypedRef.
Decimal
UInt16
Double
Array
UInt32
Guid
UInt64
Exception
Int16
Void
Int32
Delegate
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
VB
C++
C#
J#
…
Common Language Specification
Windows Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
Visual Studio.NET
ASP.NET
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
VB
C++
C#
J#
…
Common Language Specification
Windows Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
Visual Studio.NET
ASP.NET
Putting it all together
Unabhängigkeit von der verwendeten Programmiersprache
.NET Framework
RAD,
Composition,
Delegation
Visual Basic®
Forms
Subclassing, Power,
Expressiveness
MFC/ATL
Windows API
Stateless,
Code embedded
in HTML pages
ASP
.NET Framework Namespaces
System.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.Windows.Forms
Design
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
ADO
SQL
XSLT
Design
SQLTypes
XPath
Serialization
System
Collections
IO
Security
Runtime
InteropServices
Configuration
Net
ServiceProcess
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
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.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.Windows.Forms
Design
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
ADO
SQL
XSLT
Design
SQLTypes
XPath
Serialization
System
Collections
IO
Security
Runtime
InteropServices
Configuration
Net
ServiceProcess
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
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
DataSet
Tables
Table
• Relationale Sicht der Daten
– Tabellen, Spalten, Zeilen,
Beschränkungen, Beziehungen
• Direkte Erzeugung von
Metadaten einfaches Einfügen
von Daten
• Explizites Cache Modell
Columns
Column
Constraints
Constraint
Rows
Relations
Row
Relation
– Disconnected, remotable Objekt
– Hat keine Kenntnis über die Datenquelle Zugriff wie
auf ein Array
– Strong Typing möglich
– Filtern und Aggregieren möglich
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.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.Windows.Forms
Design
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
ADO
SQL
XSLT
Design
SQLTypes
XPath
Serialization
System
Collections
IO
Security
Runtime
InteropServices
Configuration
Net
ServiceProcess
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
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.
Veränderungen am Server
Web Services: Mehr als Browsen
Web
Service
XML
Web
Service
XML
Web
Service
Site
Client
XML
Client
XML
Web
Service
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
SOAP
XML
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ür
Ihre Aufmerksamkeit !
Herunterladen