1. Einführung in .NET
Martin Saternus & Andreas Heil
Senior Student Partner
MAP - Microsoft Academic Program
Microsoft Deutschland GmbH
2. Agenda
Microsoft .NET Framework
.NET 2.0
.NET vs. Java
…
…
3. Die „Problemchen“
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
4. Die „Problemchen“
Applikationen integrieren
Sprachen haben unterschiedliche Typsysteme
Denken Sie nur mal an Strings...
COM „sitzt auf“ anderen Objektkonzepten
COM ist ein binärer Kommunikations-standard
DCOM und Firewalls sind problematisch
Dienst- und Plattformintegration
Keine Standards für die Interoperabilität
5. Die Welt hat sich verändert
Microsoft ist groß geworden in einer Welt...
...mit Desktops
...mit lokalen Netzwerken
Die zukünftige Welt bringt uns...
...eine große Vielfalt von Computern (Devices)
...eine Vernetzung aller Computer über das
Internet
6. Vision
Software als Service
Unterstützung von Smart Devices
Microsoft
offene Standards als Web Services
Grundlage
Partner Web Services
andere
Web Services
Internet + XML
Clients
Ihr Unternehmen.com
Geschäftslogik der Applikation
Datenzugriff und -speicherung
andere Applikationen
7. Herausforderungen (1/2)
Wie verändert ein globales Netzwerk die
Softwarewelt?
Neue Möglichkeiten für das Deployment
Neue Geschäftsmodelle
Möglichkeit der Anwendungsintegration via
Netzwerk
Plattformunabhängigkeit (OS, Hardware,
Komponententechnologien)
Sicherheitsanforderungen steigen
Web-Programmierung muss effizienter werden
8. Herausforderungen (2/2)
Wie verändert die große Device-Vielfalt die
Softwarewelt?
Die Zielplattform für den Code ist unbekannt
Es wird plattform-unabhängiger Code gebraucht
Was auf dem Desktop geht, muss auch auf einem
Palmtop (o. ä.) funktionieren
9. Lösungsansatz .NET Framework
VB C++ C# JScript J#
Common Language Specification
ASP.NET
Visual Studio.NET
Visual Studio.NET
Windows
Web Forms Web Services
Forms
Mobile Internet Toolkit
ADO.NET and XML
Base Class Library
Common Language Runtime
Operating System
10. .NET Framework Standards
Rotor ECMA/ISO Standard
CLI + mehr Common Language
Infrastructure
.NET Framework
SSCLI
.NET CLI
CE
11. Runtime Compiler
Source
VB C# C++
Code
Compiler Compiler Compiler
IL Code Assembly Assembly Assembly
Ngen Common Language Runtime JIT Compiler
Native Managed Managed Managed Unmanaged
Code Code CLR
Code Code Code
CLR Services
Operating System Services
12. Assemblies
.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
13. Strong Name & Codesigning
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
14. .NET Framework
VB C++ C# JScript J#
Common Language Specification
ASP.NET
Windows
Visual Studio.NET
Visual Studio.NET
Web Forms Web Services
Forms
Mobile Internet Toolkit
ADO.NET and XML
Base Class Library
Common Language Runtime
Operating System
15. Einheitliches Programmier Model
Gleiche API ungeachtet der
Sprache und des Models
.NET Framework
VB Forms MFC/ATL ASP
Windows API
16. Wieviel einfacher?
Windows API
HWND hwndMain = CreateWindowEx(
0, "MainWClass", "Main Window",
WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
(HWND)NULL, (HMENU)NULL, hInstance, NULL);
ShowWindow(hwndMain, SW_SHOWDEFAULT);
UpdateWindow(hwndMain);
.NET Framework
Form form = new Form()
form.Text = "Main Window"
form.Show()
17. Klassenbibliothek
System.Web System.Windows.Forms
Services UI Design ComponentModel
Description HtmlControls
Discovery WebControls
Protocols System.Drawing
Caching Security Drawing2D Printing
Configuration SessionState Imaging Text
System.Data System.Xml
OleDb SqlClient XSLT Serialization
Common SQLTypes XPath
System
Collections IO Security Runtime
Configuration Net ServiceProcess InteropServices
Diagnostics Reflection Text Remoting
Globalization Resources Threading Serialization
18. Framework, Languages und Tools
VB C++ C# JScript J#
Common Language Specification
ASP.NET
Windows
Visual Studio.NET
Visual Studio.NET
Web Forms Web Services
Forms
Mobile Internet Toolkit
ADO.NET and XML
Base Class Library
Common Language Runtime
Operating System
19. Sprachen
Die .NET Plattform ist Sprachneutral
Alle .NET Sprachen sind gleich berechtigt
Wahl der Sprache nach Ihren Fähigkeiten
Common language specification (CLS)
Satz an Merkmalen, die in jeder Sprache garantiert sind
Microsoft liefert
Visual Basic®, C++, C#, J#, JScript®
Drittanbieter liefern
APL, COBOL, Delphi, Pascal, Eiffel, Haskell, ML, Oberon,
Perl, Python, Scheme, Smalltalk…
20. Agenda
Microsoft .NET Framework
.NET 2.0
Web Services
21. Generics ...UND hier
VB VC++ C# ... JScript
UND hier…
Support für
MS-IL
Generics/
Polymorphismus
Common Language Runtime
Loader
JIT
Verifier
...
GC Native
Code
22. Generics Beispiel
class Node<T> {
T m_data; //Create a linked list of integers
Node<T> m_next; Node<Int32> head = new
Node<Int32>(5, null);
public Node(T data, Node<T> next) { head = new Node<Int32> (10, head);
m_data = data; head = new Node<Int32> (15, head);
m_next = next;
} // Sum up integers by traversing linked list
Int32 sum = 0;
for (Node<Int32> current = head;
// Access the data for the node
current != null;
public T Data {
current = current.Next) {
get { return m_data; }
sum += current.Data;
set { m_data = value; } }
}
// Access the next node
public Node<T> Next {
get { return m_next; }
set { m_next = value; }
}
23. Generics vs Polymorphismus (1/2)
Staff object p
Polymorphisches Register
SortedList r Student object s
r[1] = p Contractor object c
r[2]=s
r[3]=c Student t = (Student) r[2];
vom Typ object •Dynamische Typinforamtion in r
• Überpüfung bei Zuweisung!
24. Generics vs Polymorphismus (2/2)
Staff object p
Generisches Register
SortedList gr Student object s
gr[1] = p Contractor object c
gr[2]=s
gr[3]=c Student t = gr[2];
vom Typ <IAccess> objects •Information für gr zur Kompliierzeit
•Kein Casting für Zuweisung nötig
26. Agenda
Microsoft .NET Framework
.NET 2.0
Web Services
27. Was ist ein Web Services?
Dienste im Netz, die über Standard-Protokolle erreichbar sind
Datenaustausch basiert auf XML- Dokumenten
Plattform- und unternehmensübergreifende Transaktionen
Lager Lieferant A
Lieferant B
Ihr
Unternehmen Bestell-
wesen
Verbinden (Web) Lieferant C
Finden (UDDI)
Kunden
Daten (XML)
Interagieren (SOAP)
28. Was ist ein Web Service?
DCOM
Service
Web
Client Port 80 Service
RMI
Service
Firewall
eine Komponente, die über Standard-
Webprotokolle interagiert
Universal Firewall Penetration Protokoll
29. Web Services Stack
Web Service Directory : UDDI
Beschreibung von WS : WSDL
Datenaustausch zw. WS : SOAP
Universelles Datenformat : XML
Kommunikationsnetz : Internet
einfache, offene und akzeptierte Standards
30. SOAP
Früher: Simple Object Access Protocol
Mechanismus zum Austausch von strukturierter
und typisierter Information zwischen
Kommunikationsendpunkten im Internet auf Basis
von XML
HTTP als Transportprotokoll
XML zur Datenkapselung
Spezifikation enthält
SOAP Envelope (für Framework)
SOAP Encoding (optional, für plattform-übergreifendes
Marshaling von Daten/Objekten)
31. Web Service Prog.modell
Erstellen Sie eine .asmx Datei, die eine Klasse mit den
Methoden enthält, die Sie zur Verfügung stellen
möchten
Das Hinzufügen des Attributs WebMethod zu einer
Public-Methode macht sie automatisch zu einem Web
Service
ASP.NET macht den "Rest"
Erzeugen der Service-Beschreibung als
WSDL-Datei (Web Service Description Language)
Compile on demand