Универсальный клиент ИРБИС64

Проект Ars Magna представляет универсальный клиент автоматизированной библиотечно-информационной системы ИРБИС64 – ManagedIrbis5.

ManagedIrbis5 – это полностью управляемый фреймворк на базе Microsoft .NET 7, содержащий все необходимые компоненты:

  • Подключение к серверу ИРБИС64, позволяющее отсылать на сервер произвольные команды;
  • Формы и контролы WinForms, в т. ч. редактор записей;
  • Компоненты для импорта и экспорта записей;
  • Веб-компоненты, позволяющие быстро создать веб-интерфейс под произвольные задачи.

В настоящее время поддерживаются:

  • Windows 7/10/11 x86/x64/arm64;
  • MacOS 10.14 и выше;
  • .NET runtime 6.0.0 и выше;
  • NET SDK 7.0.100 и выше.
Codacy Badge Build status GitHub Action FOSSA Status Maintainability CodeFactor


Пример программы


using System;
using ManagedIrbis;
using static System.Console;

try
{
await using var connection = ConnectionFactory.Shared.CreateAsyncConnection();

connection.Host = args.Length == 0 ? "127.0.0.1" : args[0];
connection.Username = "librarian";
connection.Password = "secret";

var success = await connection.ConnectAsync();
if (!success)
{
// не получилось подключиться, жалуемся и завершаемся
await Error.WriteLineAsync ("Can't connect");
await Error.WriteLineAsync (IrbisException.GetErrorDescription (connection.LastError));
return 1;
}

await Out.WriteLineAsync ("Successfully connected");

// Ищем все книги, автором которых является А. С. Пушкин
// Обратите внимание на двойные кавычки в тексте запроса
var found = await connection.SearchAsync
(
"\"A=ПУШКИН$\""
);

await Out.WriteLineAsync ($"Найдено записей: {found.Length}");

// Чтобы не распечатывать все найденные записи,
// отберем только 10 первых
foreach (var mfn in found[..10])
{
// Получаем запись из базы данных
var record = await connection.ReadRecordAsync (mfn);

if (record is not null)
{
// Извлекаем из записи интересующее нас поле и подполе
var title = record.FM (200, 'a');
await Out.WriteLineAsync ($"Title: {title}");
}

// Форматируем запись средствами сервера
var description = await connection.FormatRecordAsync
(
"@brief",
mfn
);
await Out.WriteLineAsync ($"Биб. описание: {description}");

await Out.WriteLineAsync(); // Добавляем пустую строку
}

// Отключаемся от сервера
await connection.DisposeAsync();
await Out.WriteLineAsync ("Successfully disconnected");
}
catch (Exception exception)
{
await Error.WriteLineAsync (exception.ToString());
return 1;
}

return 0;