8a. Exkurs .NET 8a.1 .NET Architektur

Werbung
8a. Exkurs .NET
Inhalt:
8a.1 .NET Architektur
8a.2 Kooperation von Anwendungen über ADO -.NET
8a.3 Unterschiede gegenüber gewöhnlicher WIN32Programmierung
Peter Sobe
1
8a.1 .NET Architektur
Bislang wurden die C/C++ Programme nach dem Übersetzen und Linken
direkt auf der Betriebssystemplattform ausgeführt (in der Übung war das
Windows mit der Win32-Schnittstelle)
.NET ist eine Framework mit einer Laufzeitumgebung zwischen den
Anwendungsprogrammen und der Betriebssystemschnittstelle:
CLR - Common Language Runtime
Projekte innerhalb Visual Studio können auf die .NET Plattform kompiliert
werden. Die Schnittstelle heißt CLI – Common Language Intermediate. Auf
dieser Ebene wird die Zusammenarbeit mit Modulen gewährleistet, die in
verschiedenen Programmiersprachen geschrieben wurden.
Peter Sobe
2
8a.1 .NET Architektur
Der Zugriff auf Datenbanken aus C/C++ Programmen wird durch das
.NET Framework gewährleistet.
Dabei werden Module des Datenbankmanagementsystems
(z.B. MS-Access, SQL-Server) ausgeführt.
.NET besitzt eine Klassenbibliothek mit einer Reihen von Funktionalitäten
(vorgefertigte Klassen und Methoden), z.B. zum Zugriff auf das Netzwerk,
für Ein und Ausgabe von XML-Dateien, Windows-FensterProgrammierung.
Diese Funktionalitäten sind in s.g. Namespaces eingeteilt.
CLR stellt eine erweiterte Technik für die dynamische Speicherverwaltung
bereit: Garbage Collector … mehr dazu in Abschnitt 8a.3
Peter Sobe
3
.NET Architektur
Microsoft
VB
Zum Vergleich SUN
C++
C#
Common Intermediate Language
Common Language Runtime
Betriebssystem
Hardware
Peter Sobe
Java
Java
Bytecode
Java
vgl.
SunRuntime
Betriebbss.
Hardware
4
8a.2 Kooperation von Anwendungen
über ADO- .NET
Durch .NET Programme (z.B. Visual C++, Visual Basic) können auch
Microsoft-Office-Anwendungen automatisiert werden.
Diese Technik basiert auf den s.g. Interop-Assemblys – das sind
Sammlungen von Funktionen und Objekten, die gemeinsam durch
verschiedene auf der .NET Plattform ausgeführten Anwendungen
benutzt werden können.
Installierte Assemblys sind gelistet unter C:\Windows\assembly
Peter Sobe
5
Kooperation von Anwendungen
über ADO- .NET
Assemblys, verwaltet von der CLR
Assembly
Manifest
Modul
Metadaten
Code Intermediate Language
Typ (Klasse, Struktur)
Eigenschaften
Methoden
Felder
Peter Sobe
6
Kooperation von Anwendungen
über ADO- .NET
Zum Abrufen von Datenbank-Inhalten:
 ADO.NET stellt konsistenten Zugriff auf Datenquellen bereit, die
durch OLE DB und ODBC verfügbar gemacht werden.
 C++-Anwendungen (oder C#, Visual Basic) können über
ADO.NET eine Verbindung mit diesen Datenquellen herstellen
und die enthaltenen Daten abrufen, verarbeiten und
aktualisieren.
 Mit ADO können alle gebräuchlichen Datenbanken
angesprochen werden, wie z. B. Microsoft Access, SQL-Server
oder Oracle.
Abkürzungen:
ADO: Nachfolger von DAO (Data Access Objects), jetzt ADO.NET
OLE DB: Object Linking and Embedding, Database
ODBC: Open Database Connectivity (offenes Protokoll zur
Datenbank Anbindung)
Peter Sobe
7
Kooperation von Anwendungen
über ADO- .NET
Beispiel zum Abrufen von Datenbank-Inhalten:
String^ conn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\Temp\\db.accdb";
System::Data::OleDb::OleDbCommand ^command;
System::Data::OleDb::OleDbDataReader ^reader;
System::Data::OleDb::OleDbConnection^ connObj = gcnew
System::Data::OleDb::OleDbConnection(conn);
connObj->Open();
command = connObj->CreateCommand();
command->CommandText = "SELECT * FROM dbtabelle";
reader = command->ExecuteReader();
Console::WriteLine("Auflistung des Tabelleninhalts:");
while (reader->Read())
{ Console::Write(reader->GetInt32(0)); Console::Write("\t");
Console::Write(reader->GetString(1)); Console::Write("\t");
Console::WriteLine(reader->GetString(2));
}
reader->Close();
Peter Sobe
8
8a.3 Unterschiede gegenüber gewöhnlicher
WIN32-Programmierung
Verwalteter .NET Code kann den Garbage Collector benutzten.
Traditionelles C++ Programm:
Verwaltetes C++ Programm:
meineKlasse *objekt;
meineKlasse^ objekt;
objekt = new meineKlasse();
…
objekt = gcnew meineKlasse();
…
// hier folgt Anwendungscode
// hier folgt Anwendungscode
delete objekt;
// Die Freigabe des Objekts
// erfolgt automatisch durch den
// Garbage Collector, wenn der
// Zeiger objekt neu beschrieben
// wird, oder seine Gültigkeit verliert.
Peter Sobe
9
Unterschiede gegenüber gewöhnlicher
WIN32-Programmierung
Benutzung der .NET –Klassenbibliothek
.NET Anwendungen werden als CLR-Anwendung erstellt (anstatt WIN32)
Varianten:
 CLR-Konsolenanwendung
 Leeres CLR-Projekt
 CLR-Windows Forms Anwendung
Anstatt des Zeiger-Operators * wird ^ verwendet.
Peter Sobe
10
Unterschiede gegenüber gewöhnlicher
WIN32-Programmierung
Benutzung der .NET –Klassenbibliothek
Mit Visual Studio 2010 und .NET Framework 4.0 stehen mehr als 40.000
verschiedene Klassen bereit
Ausgewählte Funktionalitäten nach Namespaces geordnet:
System -- Basisfunktionen, wie z.B. Ein- und Ausgabe über die Konsole
System::Collections -- Klassen für Datenstrukturen: Felder, Sortierte
Felder, Hashtabellen, Bitfelder u. a.
System::Windows::Forms – Klassen zur Steuerung der grafischen
Benutzeroberfläche eines fensterorientieren
Programms.
System:: Drawing – Methoden zum Zeichnen in Fenster, Textdarstellung,
2D-Vektorgrafik, Anzeige von Bildern (gif, jpg u.ä.)
System::Data – z.B. zum Zugriff auf Datenbanken
System::IO – Zugriff auf das Dateisystem
Peter Sobe
11
Unterschiede gegenüber gewöhnlicher
WIN32-Programmierung
Beispiel:
Traditionelles C-Programm:
#include <stdio.h>
main()
{ char input[100];
printf(“Hallo!\n“); scanf(“%s“,input);
return 0;
}
.NET C++ Programm:
using namespace System;
main(array <System:String^> ^args)
{
Console::WriteLine(L“Hallo!“);
Console::ReadLine();
Traditionelles C++ Programm:
#include <iostream>
using namespace std;
main()
{ char input[100];
cout << „Hallo!“ << “\n“;
cin>>input;
return 0;
}
Peter Sobe
return 0;
}
12
Herunterladen