Installation

L'installation se déroule en deux temps : côté IBM i (services TCP et licence, une seule fois par partition), puis côté .NET (le package NuGet et un premier programme).

1. Démarrer les services TCP/IP de l'IBM i

Les services TCP *DATABASE, *RMTCMD et *SIGNON doivent être démarrés. S'ils ne le sont pas, démarrez-les avec les commandes suivantes :

  • STRTCPSVR SVR(*DATABASE)
  • STRTCPSVR SVR(*RMTCMD)
  • STRTCPSVR SVR(*SIGNON)

2. Installer la licence NTi (IBM i)

Récupérez le script SQL généré automatiquement depuis votre espace client. Il contient votre clé de licence et les valeurs associées à votre partition (une licence d'essai gratuite de 30 jours est disponible).

Ouvrez Run SQL Scripts (ACS) puis exécutez le script fourni par l'espace client (le script ci-dessous est donné à titre indicatif) :

CL: CRTLIB KNTI;
CREATE TABLE KNTI.NTI (SN VARCHAR(10), PN VARCHAR(10), DAT CHAR(8), NTI VARCHAR(344));
LABEL ON TABLE KNTI.NTI IS 'AUMERIAL NTi License';
LABEL ON COLUMN KNTI.NTI.SN IS 'System serial number';
LABEL ON COLUMN KNTI.NTI.PN IS 'LPAR Id';
LABEL ON COLUMN KNTI.NTI.DAT IS 'End date';
LABEL ON COLUMN KNTI.NTI.NTI IS 'License key';
INSERT INTO KNTI.NTI (SN, PN, DAT, NTI) VALUES ('...', '...', '...', '...');

Pour renouveler la licence, récupérez le script de renouvellement depuis l'espace client et exécutez-le de la même façon. La mise à jour prend effet immédiatement, sans aucune action côté .NET :

UPDATE KNTI.NTI SET DAT = '...', NTI = '...';

Note : la licence est recherchée par défaut dans la bibliothèque KNTI. Une autre bibliothèque peut être désignée avec le mot-clé de connexion license library. Chaque clé est liée à une partition (numéro de série et identifiant de partition) et valide pour une durée limitée.


3. Référencer le package NuGet

Ajoutez le package Aumerial.Data.Nti à votre projet :

dotnet add package Aumerial.Data.Nti --version 5.0.0

ou directement dans le fichier projet :

<PackageReference Include="Aumerial.Data.Nti" Version="5.0.0" />

Le package est 100 % managé et AnyCPU : rien d'autre à installer, ni côté client, ni côté IBM i.

Note : les applications déjà écrites pour une génération antérieure de NTi compilent et s'exécutent sur la 5.0.0 sans modification. Pour Entity Framework Core, ajoutez également le package Aumerial.EntityFrameworkCore dans la version correspondant à votre EF Core : 8.5.0 (EF Core 8), 9.5.0 (EF Core 9) ou 10.5.0 (EF Core 10).


4. Premier programme

Le programme suivant ouvre une connexion, vérifie la licence au passage et exécute une première requête SQL. C'est la façon la plus rapide de valider l'installation complète (services TCP/IP, licence, réseau). L'asynchrone est la voie normale de NTi : l'ouverture, l'exécution et la libération honorent le jeton d'annulation de bout en bout.

using System;
using System.Data;
using System.Threading.Tasks;
using Aumerial.Data.Nti;

class Program
{
    static async Task Main()
    {
        // Remplacez SERVER, USERNAME et PASSWORD par l'adresse (IP ou nom d'hôte)
        // de votre partition IBM i, votre profil utilisateur et votre mot de passe.
        var connectionString = "server=SERVER;user=USERNAME;password=PASSWORD;pooling=true";
        await using var connection = new NTiConnection(connectionString);
        await connection.OpenAsync();
        if (connection.State == ConnectionState.Open)
        {
            Console.WriteLine("Connexion IBM i et licence NTi OK.");
            Console.WriteLine($"Job SQL : {connection.DatabaseJob}");
        }
        using var command = connection.CreateCommand();
        command.CommandText = "SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1";
        var database = await command.ExecuteScalarAsync();
        Console.WriteLine($"Base de données courante : {database}");
    }
}

La même chose existe en synchrone (Open, ExecuteScalar), notamment pour .NET Framework ou du code existant :

using System;
using System.Data;
using Aumerial.Data.Nti;

class Program
{
    static void Main()
    {
        var connectionString = "server=SERVER;user=USERNAME;password=PASSWORD";
        using (var connection = new NTiConnection(connectionString))
        {
            connection.Open();
            Console.WriteLine("Connexion IBM i et licence NTi OK.");
            using (var command = connection.CreateCommand())
            {
                command.CommandText = "SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1";
                Console.WriteLine($"Base de données courante : {command.ExecuteScalar()}");
            }
        }
    }
}

Note : le pool de connexions est inactif par défaut. pooling=true est fortement recommandé pour les charges web et services. Tous les timeouts sont illimités par défaut (0 = infini). Voir la page Connexion pour l'ensemble des mots-clés.


5. Assistants IA : installer le skill NTi (optionnel)

Le package embarque un skill à destination des agents de développement (Claude Code et agents compatibles) : chaînes de connexion, SQL, commandes CL, appels de programmes et pièges IBM i y sont décrits pour que l'agent produise directement du code NTi correct. L'installation est volontaire (opt-in), rien n'est installé par défaut :

dotnet msbuild -t:NTiInstallAgentSkills

La cible copie le skill dans .claude/skills/nti-ibmi-provider/ à la racine du dépôt. Il est ensuite chargé automatiquement par l'agent lorsque le code manipule NTi.


Et maintenant ?

Votre environnement est prêt. Continuez avec :

Reconnexion au serveur...

La connexion au serveur a été perdue. La page va se recharger.