Einführung in Microsoft .NET 2.0

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Deployment und Versioning von .NET Applikationen
DI Christian Donner cd (at) donners.com
Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Microsoft Academic Program C# 2.0 Was gibts da Neues? Student Technology Conference 2005.
Kapselung , toString , equals , Java API
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Ausnahmen HS Merseburg (FH) WS 06/07.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Seminar Sommersemester 2002 ASP.NET Andre Margousian.
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
.NET Nico Orschel Microsoft Student Partner, TU-Ilmenau
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Introducing the .NET Framework
Einführung in Visual C++
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
MSDN Webcast: VB. NET für Einsteiger und Umsteiger Einführung in VB
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Presenter: Daniel Walzenbach Technologieberater
Björn Schmidt, Hoang Truong Nguyen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einführung in die Programmiersprache Java
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
SQL Server 2005 CLR-Integration
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Bonn-to-code.net Thomas van Veen Website:
Variablenkonzept Klassisch, in Java Basistyp
Unterprogramme in JAVA
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Microsoft.NET - Plattform Kurzer Überblick Vergleich mit Java Von Thomas Zahn Januar 2001.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Microsoft Student Partner
Programmierung unter VB.Net mit der IDE VisualStudio. Schritt für Schritt erklärt und beschrieben. Zielgruppe: Komplette Neueinsteiger mit fundiertem Computerwissen.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
9.5 Microsoft .NET Architektur: objektorientiert/Fernaufrufe (8.1.6 )
Hello World! Javakurs 2013 Arne Kappen
Implementieren von Klassen
 Präsentation transkript:

Einführung in Microsoft .NET 2.0 Daniel Kirstenpfad Microsoft Senior Student Partner i-dankir@microsoft.com

Agenda Was ist .NET? Visual Studio 2005 C# 2.0

Experiences & Solutions Die .NET Plattform Clients Services Experiences & Solutions Tools Server

.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… Windows API .NET Framework HWND hwndMain = CreateWindowEx( 0, "MainWClass", "Main Window", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, 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()

.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ängig DEMO

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 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 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 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? Neu Neu Namespaces mit neuen / geänderten Klassen sind mit einem Stern markiert ;) Neu Neu Neu Todo Neu

einige .NET Sprachen… C++ C# Visual Basic J# Perl Fortran Java Python Smalltalk Ada Cobol Mercury Delphi Oberon RPG C++ C# APL Oz Visual Basic J# Pascal C Mondrian JScript ML Haskell Eiffel

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

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

.NET Reflector DEMO ILDASM: im .NET Framework enthalten

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 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 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 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… .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“? Fragen zum ersten Teil?

Agenda Was ist .NET? Visual Studio 2005 C# 2.0

VS 2005: Edit & Continue DEMO

VS 2005: Click Once Deployment DEMO

Agenda Was ist .NET? Visual Studio 2005 C# 2.0

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 [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 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 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

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();

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 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) Der Rückgabewert einer Iterator-Methode muss IEnumerable oder IEnumerator sein yield return statt return

Baum für das Iteratoren-Beispiel

Partielle Klassen Klassen können aus mehreren Dateien bestehen: public partial class C { //Datei Part1.cs int x; public void M1(...) {...} public int M2(...) {...} } public partial class C { //Datei Part2.cs string y; public void M3(...) {...} public void M4(...) {...}

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 Was sind Delegates? Neu: Covarianz / Contravarianz bei Delegates

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(); delegate void EinIntParameterDelegate(int i); delegate double FunktionDelegate(double x); }

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 delegate void 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 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 Parameter im Delegate dürfen spezieller sein als in der Methode delegate void EinDelegate(Hund i); class DelegateDemo { void Demo() EinDelegate d = new EinDelegate(this.EineMethode); } void EineMethode(Tier k) // …

Delegates: vereinfachte Zuweisung delegate void 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 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 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 Types Beispiel: int? var; if( var == null || var.HasValue == false) Console.WriteLine("Nicht initialisiert"); Else Console.WriteLine( var.Value);

Web Services DEMO

Windows Forms und Datenbanken DEMO

Einführung in Microsoft .NET 2.0