Интеграция Directum RX и «Галактика» на Oracle: как победить 32-битность и .NET Core

В этом материале — наш опыт подключения Directum RX к базе данных «Галактики», где пришлось совместить старое и новое: от установки легаси-библиотек до адаптации под .NET Core в Directum RX 4.2.
Задача: актуализация данных из «Галактики» в Directum RX
Клиент использует «Галактику» как основную систему учёта, включая кадровые и финансовые данные. Для автоматизации бизнес-процессов в Directum RX требовался прямой доступ к данным — например, для автозаполнения карточек документов, согласований и отчётности.
Проблема: 32-битный Oracle Client и .NET Core
«Галактика» работает на Oracle 10g, а клиентская библиотека — 32-разрядная (x86). А Directum RX — 64-разрядная система, и с версии 4.2 по умолчанию работает на .NET Core, который не поддерживает старые COM-компоненты.
Шаг 1: Установка совместимого Oracle Client
Первый вызов — подключиться к базе Oracle 10g с современного сервера.
Проблема: Стандартные 64-битные клиенты Oracle не могут работать с устаревшими настройками и драйверами, используемыми в «Галактике».
Решение: Установили 32-битную версию Oracle Client, предоставленную заказчиком. Это позволило:
— Восстановить подключение к базе данных.
— Использовать привычный tnsnames.ora и настройки из документации «Галактики».
Настройка переменных среды:
ORACLE_HOME = C:\oracle\product\11.2.0\client_32
TNS_ADMIN = C:\oracle\product\11.2.0\client_32\network\admin
PATH += C:\oracle\product\11.2.0\client_32\bin
Для IIS: В пуле приложений включили поддержку 32-битных приложений:
Enable 32-Bit Applications = True
Теперь Visual Studio могла подключаться к базе через System.Data.OracleClient, и мы разработали первую версию интеграционной библиотеки.
Шаг 2: Обновление Directum RX до версии 4.2 — и новая проблема
При переходе на Directum RX 4.2 интеграция перестала работать.
Причина: С версии 4.2 Directum RX по умолчанию использует .NET Core, а System.Data.OracleClient и 32-битные COM-компоненты в нём не поддерживаются.
Варианты:
1. Оставить .NET Framework — возможно, но не рекомендуется для новых проектов.
2. Перейти на современные библиотеки — ODP.NET от Oracle.
Мы выбрали второй путь.
Шаг 3: Переход на ODP.NET — современное подключение к Oracle
Использовали Oracle Data Provider for .NET (ODP.NET) — официальный, высокопроизводительный драйвер от Oracle.
Что сделали:
1. Установили пакет odp.net.x64 через NuGet.
2. Разработали два класса:
— DBOracleUtils — для подключения и выполнения запросов.
— DBUtils — с параметрами подключения к базе заказчика.
using Oracle.DataAccess.Client;
public class DBOracleUtils
{
public static OracleConnection GetConnection(string connectionString)
{
var connection = new OracleConnection(connectionString);
connection.Open();
return connection;
}
}
Преимущества ODP.NET:
— Поддержка .NET Framework и .NET Core.
— Высокая производительность.
— Надёжная работа с Oracle 10g–19c.
— Совместимость с асинхронными обработчиками Directum RX.
Шаг 4: Работа с разрядностью — 32 и 64 бита на одном сервере
Чтобы не терять совместимость с другими системы, на сервере были установлены обе версии Oracle Client:
— 32-битная — для «Галактики» и других legacy-приложений.
— 64-битная — для Directum RX и новых сервисов.
Ключевой момент: Чёткое разделение путей в PATH, ORACLE_HOME и TNS_ADMIN, чтобы не было конфликтов библиотек.
Шаг 5: Интеграция заработала
После всех настроек:
— Directum RX стабильно читает данные из Oracle.
— Информация о сотрудниках, подразделениях и договорах автоматически подтягивается.
— Система успешно обновлена до Directum RX 4.5.
— Интеграция работает в продакшене без сбоев.
Итог: как подружить старое и новое
Устаревший Oracle Client (32-bit) — Установка 32-битного клиента и настройка среды
Несовместимость с .NET Core — Переход на ODP.NET
Обновление Directum RX — Использование NuGet-пакетов и современных драйверов
Конфликт разрядности — Раздельная установка 32 и 64-битных клиентов
Рекомендации от ЦВД
1. Не игнорируйте архитектуру ERP-системы при планировании интеграции.
2. Используйте ODP.NET вместо System.Data.OracleClient — это будущее.
3. Храните дистрибутивы старых клиентов — они могут исчезнуть с официальных сайтов.
4. Тестируйте на стенде, близком к продакшену — особенно при обновлении платформы.
5. Планируйте миграцию заранее — переход на .NET Core требует адаптации интеграций.
Заключение
Интеграция с «Галактикой» — не приговор. Даже при работе с устаревшими технологиями можно построить надёжное и современное решение. Главное — грамотный подход, понимание архитектуры и готовность к нестандартным решениям.
В ЦВД мы регулярно сталкиваемся с подобными задачами. Если у вас — ERP, 1С, SAP или другая legacy-система — мы поможем интегрировать её с Directum RX без простоев.
— Бесплатная консультация по сценариям вашей интеграции
— Демонстрация решения в течение 24 часов