Einf hrung in microsoft net 2 0
This presentation is the property of its rightful owner.
Sponsored Links
1 / 51

Einführung in Microsoft .NET 2.0 PowerPoint PPT Presentation


  • 63 Views
  • Uploaded on
  • Presentation posted in: General

Einführung in Microsoft .NET 2.0. Daniel Kirstenpfad Microsoft Senior Student Partner [email protected] Agenda. Was ist .NET? Visual Studio 2005 C# 2.0. Clients. Services. Tools. Experiences & Solutions. Server. Die .NET Plattform. .NET basiert auf offenen Standards.

Download Presentation

Einführung in Microsoft .NET 2.0

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Einf hrung in microsoft net 2 0

Einführung in Microsoft .NET 2.0

Daniel Kirstenpfad

Microsoft Senior Student Partner

[email protected]


Agenda

Agenda

  • Was ist .NET?

  • Visual Studio 2005

  • C# 2.0


Die net plattform

Clients

Services

Tools

Experiences & Solutions

Server

Die .NET Plattform


Net basiert auf offenen standards

.NET basiert auf offenen Standards

  • ECMA-334, ISO/IEC 23270: C# Language Specifiaction, 2nd edition

  • ECMA-335, ISO/IEC 23271: Common Language Infrastructure, 2nd ed.

  • ISO/IEC 23272: CLI TR

  • nicht nur Microsoft: HP, Intel, Fujitsu-Siemens, Sun Microsystems, …

    ECMA = European Computer Manufacturers Association

    ISO = International Standardization Organisation


Net ist einfacher

.NET Framework

Form form = new Form()

form.Text = "Main Window"

form.Show()

.NET ist 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 ist sprachunabh ngig

.NET ist Sprachunabhängig

  • .NET Anwendungen kann man in (fast) jeder Sprache programmieren

  • Dabei kann man auch mehrere Sprachen innerhalb einer Anwendung mischen

  • Dies ist möglich durch

    • Common Language Infrastructure (CLI),

    • Common Language Specification (CLS),

    • Common Type System (CTS) und

    • eine gemeinsame Klassenbibliothek (FCL)


Net ist sprachunabh ngig1

.NET ist Sprachunabhängig

DEMO


Die common language runtime

Die Common Language Runtime

  • … ist die Laufzeitumgebung des .NET Frameworks

  • Sie führt .NET Programme aus

  • Die CLR ist eine einheitliche Umgebung, unabhängig von der verwendeten Programmiersprache

  • Sie stellt Basisdienste bereit, z.B. den Garbage Collector, Code Access Security (CAS), und die Framework Class Library (FCL)


Cli cls cts

CLI/CLS/CTS

  • Die Common Language Infrastructure (CLI) definiert Dateiformate, IL-Befehlssatz usw.

  • Die Common Language Specification (CLS) legt bestimmte Eigenschaften fest, die alle .NET Sprachen erfüllen müssen/sollten (z.B. Regeln für die Benennung von Variablen/Methoden/Klassen usw.)

  • Das Common Type System (CTS) legt die Datentypen fest, die .NET Sprachen verwenden dürfen. Alle Datentypen sind in allen .NET Sprachen gleich.

  • Dadurch ist es möglich, Programme in mehreren verschiedenen .NET Sprachen zu schreiben. Man kann z.B. eine Klasse in C# schreiben, in VB.NET davon eine Klasse ableiten, und diese dann in C++ verwenden.


Die klassenbibliothek

Die Klassenbibliothek

  • Die Framework Class Library ist eine gemeinsame Klassenbibliothek für alle .NET Sprachen

  • Da alle .NET Sprachen die selbe Klassenbibliothek verwenden, sind alle .NET Sprachen gleich mächtig, d.h. alles was man mit C# machen kann geht auch in VB.NET und umgekehrt.

  • Ausnahme: C++ (kann auch unmanaged Code erzeugen)

  • Base Class Library (BCL): Der Teil der FCL, der im ECMA Standard beschrieben ist (Im Prinzip FCL ohne Windows Forms, ADO.NET und ASP.NET)


Wichtige namespaces in der fcl

wichtige Namespaces in der FCL

Namespaces die in der

Base Class Library

fehlen:

  • Windows Forms

    (System.Windows.Forms)

  • ADO.NET

    (System.Data)

  • ASP.NET

    (System.Web)


Net 2 0 wo gibt es nderungen

.NET 2.0 – wo gibt es Änderungen?

Neu

Neu

Namespaces mit neuen /

geänderten Klassen

sind mit einem Stern

markiert ;)

Neu

Neu

Neu

Neu


Einige net sprachen

einige .NET Sprachen…

Perl

Fortran

Java

Python

Smalltalk

Ada

Mercury

Cobol

Delphi

Oberon

RPG

C++

APL

C#

Oz

Visual Basic

J#

Pascal

C

Mondrian

ML

JScript

Haskell

Eiffel


Microsoft intermediate language

Microsoft Intermediate Language

  • Ähnlich wie bei Java, wo Java-Quellcode zu Java Bytecode übersetzt wird, werden .NET Programme in MSIL übersetzt.

  • MSIL ist eine Assemblerähnliche Sprache, und wird in der Regel erst zur Laufzeit („Just in Time“) zu Maschinencode übersetzt.

  • MSIL war von Anfang an dafür gedacht, compiliert zu werden (und nicht interpretiert wie ursprünglich mal beim Java Byte Code)

  • Kann schon bei Installation einer Anwendung komplett zu Native-Code übersetzt werden (oder auch „just in time“)


Compilierung nach msil

Compilierung nach MSIL


C vb net hello world in msil

C#/VB.NET „Hello World“ in MSIL


Net reflector

.NET Reflector

DEMO

ILDASM: im .NET Framework enthalten

.NET Reflector: http://www.aisto.com/roeder/dotnet


Assemblies

Assemblies

  • Assemblies sind .NET .exe oder .dll Dateien

  • Assemblies bestehen aus einem Manifest und MSIL Code und/oder Ressourcen (Bilder, Texte, …)

  • Das Manifest enthält Informationen wie z.B.

    • die Version und den Ländercode der Assembly

    • Abhängigkeiten von anderen Assemblies

    • Metadaten über die Typen in der Assembly

    • von der Assembly exportierte Typen

    • Rechte die zur Ausführung nötig sind


Der global assembly cache

Der Global Assembly Cache

  • Gemeinsam genutzte Assemblies werden im Global Assembly Cache (GAC) gespeichert

  • z.B. c:\windows\assembly

  • Von einer Assembly können mehrere Versionen parallel installiert und ausgeführt werden („side-by-side execution“)

  • Es wird automatisch die korrekte Version verwendet

  • Assemblies im GAC haben einen Strong-Name, d.h. sie sind signiert

  • Der GAC löst das „DLL-Hell“-Problem


Der global assembly cache1

Der Global Assembly Cache

DEMO

  • Schlüsselpaar erzeugen: Schlüsselpaar: sn -k key

  • Signieren:

    al /out:Assembly.dll MyModule.netmodule /keyfile:key.snk


Der garbage collector

Der Garbage Collector

  • Der Garbage Collector ist Teil der Common Language Runtime

  • Er ist zuständig für die Speicherverwaltung

  • Er reserviert Speicher für neue Objekte, und löscht Speicher, wenn sie nicht mehr verwendet werden

  • Die Freigabe des Speichers erfolgt nichtdeterministisch, z.B. wenn der freie Speicher knapp wird

  • deterministische Freigabe ist durch das IDisposable-Pattern möglich

  • Objekte werden in 3 Generationen verwaltet


Themen bis jetzt

Themen bis jetzt…

.NET = sehr viele Abkürzungen und Begriffe :

managed/unmanaged

GAC

CLI

Metadaten

CAS

CLS

CTS

MSIL

Assemblies

Manifest

FCL

Garbage Collector

Strong-Name

CLR

BCL

„side-by-side execution“


Was ist net

„Was ist .NET“?

Fragen zum ersten Teil?


Agenda1

Agenda

  • Was ist .NET?

  • Visual Studio 2005

  • C# 2.0


Vs 2005 edit continue

VS 2005: Edit & Continue

DEMO


Vs 2005 click once deployment

VS 2005: Click Once Deployment

DEMO


Agenda2

Agenda

  • Was ist .NET?

  • Visual Studio 2005

  • C# 2.0


Attribute

Attribute

  • Mit Attributen kann man „Kommentare, die ein Programm lesen kann“ schreiben

  • Attribute können vergeben werden für

    • Assembly, Klasse, Konstruktor, Delegate, Enum, Event, Eigenschaft, Felder, Interface, Methode, Modul, Parameter, Rückgabewerte und Struct

  • Beispiele: DebuggerStepThrough, DesignerCategory, AssemblyVersion, FileIOPermission, …


Attribute beispiel

Attribute: Beispiel

[FileIOPermission(SecurityAction.Demand, unrestricted=true)]

public void SchreibeDaten()

{

try

{

StreamWriter sw = new StreamWriter(dateiName);

sw.Write("Hallo Welt!");

sw.Close();

} catch (IOException ex)

{

MessageBox.Show(ex.Message);

}

}


Generische datentypen

Generische Datentypen

  • Generierung typsicherer Datenstrukturen

    • Sonst werden Daten oft als object abgespeichert

    • Danach muss auf den korrekten Typ „gecastet“ werden

Stack s = new Stack();// Daten werden als object abgelegt

s.Push(3); // Integer

int i = (int)s.Pop(); // cast auf int


Generics

Generics

  • Generics sind .NET Typen und Methoden, die durch Typparameter abstrahiert werden können

  • Einfaches Beispiel: Sortierung

    • Man kann int, string, double, ... sortieren

    • Mit generischen Typen schreibt man nur eine Sortierungs-Methode

    • Diese kann dann mit den unterschiedlichen Typen „angewendet“ werden


Generics1

Generics

  • Der Code der generischen Klasse wird für den/die Datentypen aufgebaut

    • Legt man einen Stack für int und einen für double an, so enthält Applikation zweimal den jeweiligen Code

Stack<int> s = new Stack<int>();// Daten werden als int abgelegt

s.Push(3); // Integer

int i = s.Pop();


Generics2

Generics

  • Es sind auch generische Methoden möglich

  • Generics können mit Klassen oder Strukturen als Typ-Parameter aufgerufen werden.

public class G1<T> {…};

public interface I1<T> {…};

public struct S1<T> {…};

public class Test<T>

{

public T Min<T>(T t1, T t2) {…};

}


Iteratoren

Iteratoren

  • Vereinfacht: macht bei Methodenaufruf da weiter machen, wo das letzte return aufgehört hat

public IEnumerator DemoMethode()

{

yield return "Montag";

yield return "Dienstag";

// Mittwoch, Donnerstag, Freitag, …

}

public void andereMethode()

{

foreach (string tag in DemoMethode)

Console.WriteLine(tag);

}


Iteratoren 2

Iteratoren (2)

  • Der Rückgabewert einer Iterator-Methode muss IEnumerable oder IEnumerator sein

  • yield return statt return


Baum f r das iteratoren beispiel

Baum für das Iteratoren-Beispiel


Partielle klassen

Partielle Klassen

  • Klassen können aus mehreren Dateien bestehen:

    publicpartial class C { //Datei Part1.cs

    int x;

    public void M1(...) {...}

    public int M2(...) {...}

    }

    publicpartial class C { //Datei Part2.cs

    string y;

    public void M3(...) {...}

    public void M4(...) {...}

    }


Partielle klassen1

Partielle Klassen

  • Teile können nach Funktionalitäten gruppiert werden

  • verschiedene Entwickler können gleichzeitig an derselben Klasse arbeiten

  • erster Teil kann maschinengeneriert sein, zweiter Teil handgeschrieben

    Beispiel Windows Form:

    Form1.cs : Design

    Form1.Designer.cs : Code

  • Gilt für Klassen und Strukturen (und in C# für Interfaces)


Delegates

Delegates

  • Was sind Delegates?

  • Neu: Covarianz / Contravarianz bei Delegates


Delegates1

Delegates

  • … speichern die Adresse einer Methode

  • Ein Delegate hat eine bestimmte Signatur, die Rückgabewert und Parameter der Methode(n) die man dem Delegate zuweisen kann vorgibt

  • einfacher Delegate oder MulticastDelegate (kann auf mehrere Methoden verweisen)

namespace DelegateDemo

{

delegate void EinfacheMethodeDelegate();

delegatevoid EinIntParameterDelegate(int i);

delegatedouble FunktionDelegate(double x);

}


Delegates 2

Delegates (2)

  • Ein Delegate wird wie eine Methode aufgerufen

delegate void EinDelegate(int i);

class DelegateDemo

{

void Methode1()

{

EinDelegate d = new EinDelegate(this.Methode2);

d(5);

}

void Methode2(int k)

{

Console.WriteLine("Methode 2: " + k);

}

}


Multicastdelegates

MulticastDelegates

delegatevoid EinDelegate(int i);

class DelegateDemo

{

void Methode1() {

EinDelegate d = new EinDelegate(this.Methode2);

d += new EinDelegate(this.Methode3);

d(5);

}

void Methode2(int k) {

Console.WriteLine("Methode 2: " + k);

}

void Methode3(int j) {

Console.WriteLine("Methode 3: " + j);

}

}


Delegates covarianz

Delegates: Covarianz

  • Der Rückgabewert der Methode darf spezieller sein, als im Delegate angegeben

delegate Tier EinDelegate(int i);

class DelegateDemo

{

void Demo()

{

EinDelegate d = new EinDelegate(this.EineMethode);

}

Hund EineMethode(int k)

{

// …

}

}


Delegates contravarianz

Delegates: Contravarianz

  • Parameter im Delegate dürfen spezieller sein als in der Methode

delegatevoid EinDelegate(Hund i);

class DelegateDemo

{

void Demo()

{

EinDelegate d = new EinDelegate(this.EineMethode);

}

void EineMethode(Tierk)

{

// …

}

}


Delegates vereinfachte zuweisung

Delegates: vereinfachte Zuweisung

delegatevoid EinDelegate(int i);

class DelegateDemo

{

void Demo()

{

// C# 1.0/1.1

EinDelegate d = new EinDelegate(this.EineMethode);

// C# 2.0

EinDeleagate d2 = EineMethode;

}

void EineMethode(int k)

{

// …

}

}


Anonyme methoden

Anonyme Methoden

  • In C# 1.0/1.1 kann man einem Delegate nur eine vorhandene Methode („named Method“) zuweisen

  • In C# 2.0 neu: anonyme Methoden

button.Click +=

delegate { MessageBox.Show("Hallo Welt"); }


Nullable types

Nullable Types

  • Nullable Types können alle Werte des zugrunde liegenden Typen annehmen können - und zusätzlich den Wert null.

  • Null signalisiert dass die Variable noch nicht initialisiert wurden

  • Nullable Types sind als Generics gelöst

  • Sie sind vom Typ: System.Nullable<T>(T gibt den Typ an)

  • zwei Properties:HasValue und Value


Nullable types1

Nullable Types

  • Beispiel:

    int? var;

    if( var == null || var.HasValue == false)

    Console.WriteLine("Nicht initialisiert");

    Else

    Console.WriteLine( var.Value);


Web services

Web Services

DEMO


Windows forms und datenbanken

Windows Forms und Datenbanken

DEMO


Einf hrung in microsoft net 2 01

Einführung in Microsoft .NET 2.0


  • Login