Einführung.NET Tobias Richling Microsoft Student Partner Student der Wirtschaftsinformatik...

Post on 05-Apr-2015

111 views 2 download

Transcript of Einführung.NET Tobias Richling Microsoft Student Partner Student der Wirtschaftsinformatik...

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/