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