El reflejo habitual consiste en utilizar controladores externos como ODBC u OleDB. Estas soluciones, a menudo gratuitas y todavía en uso, han sido útiles durante mucho tiempo. También está disponible DB2 Connect, la solución más completa de IBM pero costosa y complicada de implementar. Sin embargo, todas se basan en código nativo compilado para cada arquitectura y funcionan fuera de la CLR (.NET Common Language Runtime, el motor de ejecución estándar de .NET). Resultado: una integración incompleta en el ecosistema .NET, limitada únicamente a la base de datos, con dependencias específicas de cada entorno y una portabilidad reducida de las aplicaciones.
NTi aporta un enfoque diferente, decididamente moderno. Basado íntegramente en la CLR de .NET, es multiplataforma (Windows, Linux, macOS) y no requiere ninguna dependencia externa. No es necesaria ninguna instalación en el lado de IBM i, todo se ejecuta en el entorno .NET, como cualquier otro proveedor.
El acceso ya no se limita a DB2 for i: puede ejecutar comandos CL, llamar programas RPG y, en general, acceder a todos los recursos de IBM i con una sintaxis estándar de .NET. Hasta la fecha, no encontrará ningún equivalente en el mercado que ofrezca este nivel de integración entre .NET e IBM i.
Conexión.
En la práctica, la conexión a IBM i se realiza como con cualquier otro SGBD soportado por .NET. La diferencia esencial es que se trata de un proveedor ADO.NET dedicado a IBM i, AS/400, iSeries, diseñado y optimizado para DB2 for i. En otras palabras, el principio es exactamente el mismo que para las demás bases de datos:
- Para SQL Server, se utiliza
SqlConnection
. - Para PostgreSQL, se utiliza
NpgsqlConnection
. - Para IBM i, se utiliza
NTiConnection
.
El código es idéntico en su estructura, tanto para abrir una conexión como para ejecutar un comando SQL. La única diferencia se encuentra en la clase utilizada y en la cadena de conexión, todo lo demás se basa en el modelo estandarizado ADO.NET.
Instalar los paquetes NuGet
En Visual Studio, abra la consola e instale:
Install-Package Aumerial.Data.NTi
Conexión básica.
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();
Si conoce
SqlConnection
, ya conoce NTi. Tiene así la garantía de una adopción inmediata para cualquier equipo que ya tenga la competencia en .NET, sin necesidad de conocimientos específicos de IBM i.
Novedades y propiedades de conexión.
NTi ha evolucionado en sus últimas versiones para responder a las necesidades de rendimiento y seguridad de las aplicaciones modernas, así como a las expectativas planteadas por nuestros clientes. Estas funcionalidades se activan directamente en la cadena de conexión, al igual que los parámetros clásicos server, user y password.
Desde la versión 3.2.3, está disponible un pool de conexiones, activado por defecto. Concretamente, las sesiones de IBM i se reutilizan en lugar de crear un job (QZDASOINIT) en cada petición, reduciendo drásticamente los tiempos de respuesta y mejorando la escalabilidad de las aplicaciones, especialmente con Entity Framework Core.
La seguridad también se ha reforzado con el soporte de la autenticación multifactor (MFA) a partir de la versión 4.4.0. NTi se basa en el mecanismo TOTP introducido por IBM en la versión V7R6 de su sistema operativo. Un código de un solo uso puede transmitirse directamente en la cadena de conexión o recuperarse mediante un callback, permitiendo integrar fácilmente el MFA en aplicaciones .NET ya existentes.
Un tema, por cierto, en el centro de la actualidad: fue ampliamente discutido durante el evento Securit.i edición 2025, encuentro de referencia sobre la seguridad de IBM i, donde las novedades de la V7R6 y el MFA ocuparon un lugar central. Con NTi, esta evolución ya está disponible y operativa en sus proyectos .NET.
Cabe señalar también que NTi establece la conexión a IBM i a través de canales estándar TCP/IP, apoyándose en los servicios habituales del sistema:
- QZDASOINIT para la base de datos.
- QZRCSRVS para programas y comandos.
- QZSOSIGN para el Signon
Es posible activar una conexión cifrada SSL/TLS mediante un simple parámetro en la cadena de conexión, garantizando que los intercambios entre la aplicación .NET e IBM i permanezcan protegidos. La configuración SSL debe, obviamente, realizarse de antemano para poder establecer este tipo de conexión.
Entity Framework Core con NTi
Entity Framework Core (EF Core) es el framework oficial de Microsoft para el acceso a datos en .NET. Proporciona una capa de abstracción que permite manipular los datos directamente mediante código C# (LINQ), sin escribir SQL explícito.
Con la extensión EF Core disponible con NTi, se beneficia de este enfoque estándar pero dedicado a DB2 for i. Su lógica de negocio permanece totalmente en C#, y las consultas SQL se generan automáticamente hacia IBM i. Dos enfoques posibles, según sus necesidades:
- Database First (DB First): a partir de las tablas y esquemas existentes en DB2 for i, genera directamente sus entidades C#. Es la solución ideal para modernizar una base de datos ya en producción sin perturbar a los equipos de negocio.
- Code First: define sus entidades directamente en C#, y EF Core crea la estructura correspondiente en DB2 for i, con el mapeo automático de los tipos correctos. Ideal para proyectos nuevos.
Todas las operaciones clásicas están cubiertas: creación, lectura, escritura y eliminación (CRUD), así como joins, agregaciones, paginación o consultas parametrizadas. El desarrollador .NET permanece en un marco homogéneo, sin tener que preocuparse de las especificidades de DB2 for i.
Ejemplo:
var ctx = new ProductDbContext();
string filter = "PROD";
var data = ctx.Products
.Where(p => p.Label.Contains(filter))
.Select(p => p.Label.Trim())
.ToList();
Generado automáticamente en IBM i:
SELECT TRIM(p.Label)
FROM Products AS p
WHERE POSITION(@__filter_0, p.Label) <> 0
La última versión de la extensión va más allá al añadir un mapeo preciso de las funciones escalares nativas de DB2 for i. Concretamente, cuando un desarrollador utiliza métodos comunes en C# (cadenas, números, etc.), estos se traducen en instrucciones SQL tipificadas como “DB2 for i”. Los cálculos y transformaciones ya no se simulan en .NET, sino que se ejecutan directamente por DB2 en IBM i. Y como está diseñado para soportar y procesar cargas elevadas con total fiabilidad, es el mejor lugar para delegar estas operaciones, garantizando resultados precisos y un rendimiento óptimo.
Conclusión.
No se construye el futuro con herramientas del pasado. Los controladores históricos seguramente le han acompañado durante mucho tiempo, pero hoy muestran claramente sus límites en cuanto se habla de evolución, cloud, contenedores o portabilidad. Seguir apoyándose en ellos significa aceptar una deuda técnica creciente y posponer los problemas para mañana.
Con NTi, cambie de perspectiva: opte por un conector .NET nativo, estable y seguro, diseñado y pensado para integrarse de forma natural en sus proyectos .NET/IBM i a largo plazo.
Entonces, si la pregunta sigue siendo — ¿Cómo conectar su IBM i (AS/400) a .NET? — la respuesta es ahora evidente: no con parches de software, sino con lo mejor que ofrece actualmente el mercado. Y la mejor manera de convencerse sigue siendo probarlo.
Solicite hoy mismo su licencia de prueba de NTi y compruebe por sí mismo la diferencia.
Quentin Destrade