Wie verbindet man .NET mit einem IBM i (AS/400)?

Wie verbindet man sich von einer .NET-Anwendung mit einem IBM i (AS/400)-System? Diese Frage stellen sich nach wie vor viele Teams, seien es Entwickler oder technische Leiter. Die Antwort liegt in einer Lösung: NTi Data Provider.

Illustrationsbild zu Artikel

Der übliche Reflex besteht darin, externe Treiber wie ODBC oder OleDB zu verwenden. Diese Lösungen, oft kostenlos und noch im Einsatz, haben lange Zeit gute Dienste geleistet. Ebenfalls verfügbar ist DB2 Connect von IBM, eine vollständigere, aber teure und aufwändig einzurichtende Lösung. Dennoch basieren alle auf nativ kompiliertem Code für jede Architektur und laufen außerhalb der CLR (.NET Common Language Runtime, die Standardausführungsumgebung von .NET). Das Ergebnis: eine unvollständige Integration in das .NET-Ökosystem, streng auf die Datenbank beschränkt, mit umgebungsspezifischen Abhängigkeiten und verringerter Portabilität der Anwendungen.

Vergleich zwischen ODBC/OleDB/DB2 Connect und NTi Data Provider zur Verbindung von IBM i mit .NET

NTi bringt einen anderen, entschieden modernen Ansatz. Vollständig auf der .NET-CLR basierend, ist es plattformübergreifend (Windows, Linux, macOS) und benötigt keine externen Abhängigkeiten. Auf der IBM i-Seite ist keine Installation erforderlich – alles läuft in der .NET-Umgebung, wie bei jedem anderen Provider.

Der Zugriff beschränkt sich also nicht mehr nur auf DB2 for i: Sie können CL-Befehle ausführen, RPG-Programme aufrufen und allgemeiner auf alle IBM i-Ressourcen mit einer standardmäßigen .NET-Syntax zugreifen. Bis heute finden Sie auf dem Markt kein Äquivalent, das dieses Integrationsniveau zwischen .NET und IBM i bietet.

NTi Data Provider plattformübergreifend: ARM64-, AMD64- und ppc64le-Kompatibilität mit .NET

Verbindung.

In der Praxis erfolgt die Verbindung zu IBM i wie bei jedem anderen von .NET unterstützten DBMS. Der wesentliche Unterschied besteht darin, dass es sich um einen dedizierten ADO.NET-Provider für IBM i, AS/400, iSeries handelt – entworfen und optimiert für DB2 for i. Mit anderen Worten: das Prinzip ist genau dasselbe wie bei anderen Datenbanken:

  • Für SQL Server, verwendet man SqlConnection.
  • Für PostgreSQL, verwendet man NpgsqlConnection.
  • Für IBM i, verwendet man NTiConnection.

Der Code ist in seiner Struktur identisch, egal ob es darum geht, eine Verbindung zu öffnen oder einen SQL-Befehl auszuführen. Der einzige Unterschied liegt in der verwendeten Klasse und der Verbindungszeichenfolge, alles andere basiert auf dem standardisierten ADO.NET-Modell.

NuGet-Pakete installieren.

In Visual Studio die Konsole öffnen und installieren:

Install-Package Aumerial.Data.NTi

Basisverbindung.

using Aumerial.Data.Nti;
using var conn = new NTiConnection("server=myIBMi;user=myUser;password=myPassword;");
conn.Open();

 try
 {
     conn.ExecuteClCommand("CRTLIB LIB(MYLIB) TEXT('new library')");
 }
 catch(NTiException ex)
 {
     Console.WriteLine(ex.Message);
 }
 conn.Close();

Wenn Sie SqlConnection kennen, kennen Sie bereits NTi. Sie haben somit die Garantie einer sofortigen Einarbeitung für jedes Team mit .NET-Kenntnissen, ohne dass spezifisches IBM i-Wissen erforderlich ist.

Neuheiten und Verbindungseigenschaften

NTi hat sich in den letzten Versionen weiterentwickelt, um den Leistungs- und Sicherheitsanforderungen moderner Anwendungen sowie den Erwartungen unserer Kunden gerecht zu werden. Diese Funktionen werden direkt in der Verbindungszeichenfolge aktiviert, ebenso wie die klassischen Parameter server, user und password.

Seit Version 3.2.3 ist ein Connection Pool verfügbar und standardmäßig aktiviert. Konkret bedeutet dies, dass IBM i-Sitzungen wiederverwendet werden, anstatt bei jeder Anfrage einen neuen Job (QZDASOINIT) zu erstellen. Dies reduziert die Antwortzeiten drastisch und verbessert die Skalierbarkeit von Anwendungen, insbesondere mit Entity Framework Core.

Auch die Sicherheit wurde durch die Unterstützung der Multi-Faktor-Authentifizierung (MFA) ab Version 4.4.0 verstärkt. NTi stützt sich dabei auf den von IBM in Version V7R6 des Betriebssystems eingeführten TOTP-Mechanismus. Ein Einmalcode kann direkt in der Verbindungszeichenfolge übergeben oder über ein Callback abgerufen werden, wodurch sich MFA problemlos in bestehende .NET-Anwendungen integrieren lässt.

Ein Thema, das übrigens hochaktuell ist: Es wurde erneut ausführlich auf der Veranstaltung Securit.i Ausgabe 2025 diskutiert – dem Referenztreffen für IBM i-Sicherheit –, bei dem die V7R6-Neuheiten und MFA im Mittelpunkt standen. Mit NTi ist diese Entwicklung bereits heute in Ihren .NET-Projekten verfügbar und einsatzbereit.

Ebenso ist zu beachten, dass NTi die Verbindung zu IBM i über standardmäßige TCP/IP-Kanäle herstellt, indem es sich auf die üblichen Systemdienste stützt:

  • QZDASOINIT für die Datenbank
  • QZRCSRVS für Programme und Befehle
  • QZSOSIGN für das Sign-on

Es ist möglich, eine verschlüsselte SSL/TLS-Verbindung mit einem einfachen Parameter in der Verbindungszeichenfolge zu aktivieren, wodurch sichergestellt wird, dass die Kommunikation zwischen der .NET-Anwendung und IBM i geschützt bleibt. Die SSL-Konfiguration muss natürlich im Vorfeld durchgeführt werden, um diese Art von Verbindung herzustellen.

Entity Framework Core mit NTi

Entity Framework Core (EF Core) ist Microsofts offizielles Framework für den Datenzugriff in .NET. Es bietet eine Abstraktionsschicht, die es ermöglicht, Daten direkt über C# (LINQ) zu verarbeiten, ohne explizit SQL zu schreiben.

Mit der EF-Core-Erweiterung, die mit NTi verfügbar ist, profitieren Sie von diesem Standardansatz, jedoch speziell für DB2 for i. Ihre Geschäftslogik bleibt vollständig in C#, und die SQL-Abfragen werden automatisch an IBM i generiert.

Zwei Ansätze sind möglich, je nach Bedarf:

  • Database First (DB First):aus bestehenden DB2 for i-Tabellen und -Schemas generieren Sie direkt Ihre C#-Entitäten. Dies ist die ideale Lösung, um eine bereits produktive Datenbank zu modernisieren, ohne die Fachabteilungen zu stören.
  • Code First: Sie definieren Ihre Entitäten direkt in C#, und EF Core erstellt die entsprechende Struktur in DB2 for i, mit automatischem Mapping der richtigen Typen. Ideal für neue Projekte.

Alle klassischen Operationen sind abgedeckt: Erstellen, Lesen, Schreiben und Löschen (CRUD), aber auch Joins, Aggregationen, Paginierung oder parametrisierte Abfragen. Der .NET-Entwickler bleibt in einem homogenen Rahmen, ohne sich um die Besonderheiten von DB2 for i kümmern zu müssen.

Beispiel:


var ctx = new ProductDbContext();
string filter = "PROD";

var data = ctx.Products
              .Where(p => p.Label.Contains(filter))
              .Select(p => p.Label.Trim())
              .ToList();

Automatisch auf IBM i generiert:

SELECT TRIM(p.Label)
FROM Products AS p
WHERE POSITION(@__filter_0, p.Label) <> 0

Die neueste Version der Erweiterung geht noch weiter, indem sie ein präzises Mapping der nativen DB2 for i-Skalarenfunktionen hinzufügt. Konkret bedeutet dies: Wenn ein Entwickler gängige C#-Methoden (Strings, Zahlen usw.) verwendet, werden diese in DB2 for i-typisierte SQL-Anweisungen übersetzt. Berechnungen und Transformationen werden somit nicht mehr auf der .NET-Seite simuliert, sondern direkt von DB2 selbst auf IBM i ausgeführt. Und da IBM i dafür ausgelegt ist, hohe Lasten zuverlässig zu verarbeiten, ist es der beste Ort, um diese Operationen auszuführen und so präzise Ergebnisse und optimale Leistung sicherzustellen.

Fazit.

Die Zukunft baut man nicht mit den Werkzeugen der Vergangenheit. Historische Treiber haben Sie sicherlich lange begleitet, zeigen heute jedoch deutlich ihre Grenzen, sobald es um Weiterentwicklung, Cloud, Container oder Portabilität geht. Sich weiterhin auf sie zu stützen, bedeutet, eine wachsende technische Schuld in Kauf zu nehmen und die Probleme auf morgen zu verschieben.

Mit NTi ändern Sie die Perspektive: Entscheiden Sie sich für einen nativen, stabilen und sicheren .NET-Connector, der entwickelt wurde, um sich langfristig nahtlos in Ihre .NET/IBM i-Projekte zu integrieren.

Wenn also die Frage bleibt — Wie verbinden Sie Ihr IBM i (AS/400) mit .NET? — ist die Antwort nun eindeutig: nicht mit Software-Flickwerk, sondern mit der derzeit besten Lösung auf dem Markt. Und der beste Weg, sich zu überzeugen, ist immer noch, es auszuprobieren.

Fordern Sie noch heute Ihre NTi-Testlizenz an und überzeugen Sie sich selbst vom Unterschied.


Quentin Destrade