Einführung .NET
Tobias RichlingMicrosoft Student PartnerStudent der WirtschaftsinformatikUniversität Münster
Neno LojeMicrosoft Student PartnerStudent der InformatikUniversität Hamburg
Ziele
• Verständnis der Begriffe rund um .NET• „Landkarte“ über .NET• Grundlegendes Verständnis der Arbeitsweise
von und mit .NET• Handlungssicherheit im Umgang mit Quellen
zum Thema .NET
Gliederung
Tobias Richling• Warum .NET / Was ist .NET• Begriffe und ihr Zusammenhang mit .NET
Neno Loje• Basiselemente von .NET• Bereiche von .NET
Die Antwort lautet
Aber wie lautet die Frage?
Microsoft .NET: Was und Warum?
Microsoft .NET: Was und Warum?
• Technologie• Produkt• Architektur• Plattform• Strategie
Was ist .NET
??
Microsoft .NET: Was und Warum?
Ein Blick auf Gestern• Information at your fingertips größtenteils Realität• Vorwiegend isolierte Desktoprechner• Nur vereinzelt lokale Netze
Ein Blick auf Heute und Morgen• Neue Formfaktors mit verschiedener Hardware• Steigender Grad der Vernetzung durch Internet
Herausforderung der Neupositionierung
Probleme mit den eigenen Technologien
• Schwieriges Deployment• Viele historisch gewachsene Techniken• Integration der Techniken schwierig• Web Anwendungen sind schwer zu entwickeln• Plattformunabhängigkeit nicht herstellbar
Microsoft .NET: Was und Warum?
Microsoft .NET: Was und Warum?
Empower peopleEmpower people
through great through great softwaresoftware
any time, any place,any time, any place,
and on any deviceand on any device
Gliederung
Tobias Richling• Warum .NET / Was ist .NET• BegriffeBegriffe und ihr Zusammenhang mit .NETund ihr Zusammenhang mit .NET
Neno Loje• Basiselemente von .NET• Bereiche von .NET
Viele Begriffe…
Managed Code
XML
Assembly CLR
Visual Studio
WebServiceUDDI
WSDL ADO.NET
DataSetSOAP
MSIL BCL
FrameworkECMA
ROTORMONO
CTS
C#
CLS
WindowsForms
GUI
Security
SQL
ASP.NET
VB.NET
JIT
Evidence
Viele Begriffe…
Alles BehaltenAlles Behalten
Ein Ordnungsrahmen
Basis- / SupportfunktionenBasis- / Supportfunktionen
Ex
ternE
xternKernfunktionenKernfunktionen
Ex
ternE
xtern
Administrative FunktionenAdministrative Funktionen
Ein Ordnungsrahmen
MONOMONO
DOT-DOT-GNUGNU
CLR, CTSCLR, CTSBCL, XMLBCL, XML
Visu
al S
tud
io.N
ET
Visu
al S
tud
io.N
ET
ADO.NET, DataSet, SQLADO.NET, DataSet, SQL
Windows-Windows-ApplikationApplikation ASP.NETASP.NET
Windows FormsWindows Forms Web FormsWeb FormsWebServicesWebServices
WSDLWSDLUDDIUDDISOAPSOAP
CLSCLS
VBVB C++C++ C#C# JScriptJScript J#J#
MSIL, Assembly, Managed Code, JITMSIL, Assembly, Managed Code, JIT
Security, EvidenceSecurity, Evidence
ECMAECMAISOISO
ROTORROTOR
Internettiger
Die Vision von .NET…
... setzt Maßstäbe, wie heute und in Zukunft Software entwickelt wird!
Probleme heute
• Applikationen integrieren– Sprachen haben unterschiedl. Typsysteme– COM „sitzt auf“ anderen Objektkonzepten
• Dienst-/Plattformintegration– Keine Standards für die Interoperabilität
• Deployment komponentenbasierter Anwendungen– Es droht die DLL-Hölle
• Das Web-Programmierungsparadigma– Zustandslose HTML-Seiten/Apps sind schwer zu entwickeln
• APIs– Eine Vielzahl von APIs (COM, Win32, MFC usw.)– Plattformabhängigkeit
Design-Ziele: .NET
• Absolut einfach– Keine Registration, GUIDs, .IDL files, HRESULTs, IUnknown,
AddRef/Release, CoCreateInstance, etc.
• Objektorientiert bis ins Mark– Klassen und Vererbung komplett unterstützt– Natürlich auch bei verschiedenen Sprachen!
• Einfache Integration– Jede .NET Klasse kann als COM Klasse benutzt werden
ohne jeglichen Aufwand.– COM Klassen können als .NET Klassen importiert werden.
Die .NET Evolution
Vor der Einführung von COM, waren Anwendungen absolut getrennte Einheiten die fast nie integrierbar waren.
Anwendung
Code und Datenstukture
n
Die .NET Evolution II: COM
COM machte die Integration möglich. Jedoch musste jede Komponente dementsprechend programmiert worden sein.
Die .NET Evolution III: Heute
Im .NET Framework stellt die Common Language Runtime alles zur Verfügung, damit Komponenten direkt miteinander interagieren.
Der Ordnungsrahmen
MONOMONO
DOT-DOT-GNUGNU
CLR, CTSCLR, CTSBCL, XMLBCL, XML
Visu
al S
tud
io.N
ET
Visu
al S
tud
io.N
ET
ADO.NET, DataSet, SQLADO.NET, DataSet, SQL
Windows-Windows-ApplikationApplikation ASP.NETASP.NET
Windows FormsWindows Forms Web FormsWeb FormsWebServicesWebServices
WSDLWSDLUDDIUDDISOAPSOAP
CLSCLS
VBVB C++C++ C#C# JScriptJScript J#J#
MSIL, Assembly, Managed Code, JITMSIL, Assembly, Managed Code, JIT
Security, EvidenceSecurity, Evidence
ECMAECMAISOISO
ROTORROTOR
Internettiger
.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
.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
Common Language Runtime
Der Weg zum Maschienencode
ASM Code
VB C# C++
Compiler
IL Code
Compiler
IL Code
Compiler
IL Code
JIT (Just in Time) Compiler
Betriebssystem
Code wird kompiliert
• IL-Code wird vor der Ausführung immer (!) durch Compiler in echten Maschinencode übersetzt – Unabhängigkeit von Hardwareplattformen– Unter Windows CE bereits mit einem
IL-Vorläufer im Einsatz
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) spezifiziert ein Subset aus dem Common Type System, das 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 (!)
Implikationen
• 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
Die Qual der (Sprach-)Wahl
• IL Assembler (ILASM) – Die Meisten Freiheiten, aber sehr kryptisch
• Managed C++ kann managed und unmanaged Code mischen– Migration, systemnahe Programmierung
• VB.NET: .NET für VB6-Entwickler– Vollständig Objektorientierung, Web für VB– Haben Sie eine Semikolonallergie?
• C# ist syntaktisch nah an C/C++ und leicht für alle OO-Programmierer
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– Der Code ist vollständig selbstbeschreibend– Nebenwirkungsfreie Installation (Zero-impact install)
• ‘Side-by-Side’ Ausführung– Verschiedene Versionen derselben Komponente
können sogar in einem Prozess kooexistieren
Nahtlose Integration
• Alle .NET Klassen können COM Objekte sein– Keine zusätzliche Entwicklung benötigt– Arbeitet mit jedem Clienten (VB6, Office, etc)
• Transparente Nutzung von COM Objekten– Einschließlich benutzerdefinierter Schnittstellen,
ActiveX controls, Automation
• Einfacher zu Nutzen mit COM+ Services– Transaktionen, Objekt Pooling, etc.– Auto-registered — keine Registrierung notwendig
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
.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
.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
Warum etwas ganz Neues?
• Althergebrachte Windows-Programmierung:– API‘s mit C und C++ (alles ist möglich)– MFC mit C++ (einfach mit „Nothaken“)– VB (sehr einfach)
• Alle Varianten: Plattform-abhängig und sind von einer bestimmten Programmiersprache abhängig
• Viele Probleme und Eigenarten
Warum etwas ganz Neues?
• Ideal: Nur EINE Schnittstelle• ...die .NET-Klassenbibliothek• Gemeinsame Schnittstelle für:
– VB, C++, C# und J#
• Grundlage: Das .NET Framework• Vorteil: Die Sprachen „erben“ zusätzlich alle
Möglichkeiten des gesamten Frameworks• Anwendungen mit Windows Forms:
– Benötigter Namensraum ist „System.Windows.Forms“
Windows Forms
• Framework für leistungsfähige Windows Applikationen– Visuelle Formular-Vererbung– Automatisches Layout– Advanced graphics support – GDI+– Einfacher Zugriff auf das Win32 ® API
• Controls im Internet Explorer 5.x nutzen– Keine Installation, Registrierung oder GUIDs– Lightweight -- “Hello World” ~ 3.5K
• Sicher – ‘Code access security’ verhindert Schaden– Keine Internet Explorer Sicherheits-Dialoge!
Windows Forms enthält:
• System.Windows.Forms enthält:– Application-Klasse– Controls-Klassen (Button, Editbox,...)– Klassen für Standarddialoge (Open,...)– Klassen für Menüs– Klassen für Images– Klassen für das Drucken– Klassen für Statuszeile
und Toolbar– Klassen für das Clipboard– u.v.m.
.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
.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
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
Datenaustausch
Web Services
• Technische Definition - "Eine programmierbare Anwendung, auf die über Standardwebprotokolle zugegriffen werden kann"– Basiert auf SOAP
Web Services
SOAPSOAP
XMLXML
Web Service
public class Service1 : System.Web.Services.WebService{
[WebMethod]public DataSet GetCustomers(){
DataSet ds = new DataSet();sqlDataAdapter1.Fill(ds);return ds;
}}
Ein kleines Web Service-Beispiel:
It‘s the question that drives us, NeoThe Matrix
• Why change a winning team?– Das Team war schon am Zurückfallen. Es musste gewechselt
werden, um zukünftigen Herausforderungen gerecht zu werden.
• Ist Microsoft zum Guten Samariter geworden?– Definitiv nein – aber eine veränderte Welt, eine erhöhte
Komplexität erfordert eine andere Politik und mehr Offenheit.
• Was hat Microsoft davon?– Ein neues Geschäftsmodell. Man denkt Web, Dienste, Plattformen.
• Was haben wir davon?– Weniger alte Probleme, einfachere Entwicklung, einfacheres
Deployment, adequatere Programmierparadigmata
ClientClientServerServerOfficeOffice
ClientClientServerServerOfficeOffice
Wie geht es auf der STC weiter?
ADO.NET (200)heute, im Anschluss
Web Technologies mit ASP.NET (200)heute, 15:30
ASP.NET für Fortgeschrittene (200)morgen, 10:30
Microsoft .NET Framework 2.0 (200)morgen, 11:45
Performance-oriented Programming in C# (300)morgen, 14:00
Danke!
Vielen Dank fürIhre Aufmerksamkeit !
Fragen?
Mehr Informationen?
• http://msdn.microsoft.com/net• http://www.gotdotnet.com• http://www.dotnetgerman.com• http://www.dotnet247.com• http://www.codeproject.com• http://www.devx.com/dotnet/