JobRunner.Core 2.0.1

dotnet add package JobRunner.Core --version 2.0.1
                    
NuGet\Install-Package JobRunner.Core -Version 2.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JobRunner.Core" Version="2.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="JobRunner.Core" Version="2.0.1" />
                    
Directory.Packages.props
<PackageReference Include="JobRunner.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add JobRunner.Core --version 2.0.1
                    
#r "nuget: JobRunner.Core, 2.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package JobRunner.Core@2.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=JobRunner.Core&version=2.0.1
                    
Install as a Cake Addin
#tool nuget:?package=JobRunner.Core&version=2.0.1
                    
Install as a Cake Tool

JobRunner.Core

Доменная модель библиотеки JobRunner с интерфейсами для планирования задач Проект не зависит от JobRunner.Quartz. JobRunner.Quartz зависит от JobRunner.Core. подробнее в блоке "Переезд на другую библиотеку"

Установка

dotnet add package JobRunner.Core

Основные интерфейсы

Модели

IJobTask<TId> - основная модель задачи IScheduleSettings - настройки расписания (DailySchedule, WeeklySchedule и др.) INotifySettings - настройки уведомлений IJobTaskMetadata - метаданные выполнения (статистика, PID, IsRunning) IScheduleArguments - аргументы командной строки (с поддержкой шифрования) IRetrySettings - настройки повторных попыток при ошибке IGroupingSettings - настройки группового выполнения задач ExecutionTarget - где выполнять задачу (сервер / удалённый узел)

Метки и группировка IJobTag<TId> - метка для группировки задач AllowGroupRun - разрешить запуск всех задач метки одной командой AllowGroupPause - разрешить приостановку всех задач метки

Распределённое выполнение (Target System) ExecutionTarget - цель выполнения (сервер / конкретный узел / любой узел) ExecutionMode - режим: Server, SpecificNode, AnyNode, RoundRobin IJobNodeRegistry<TId> - реестр узлов-исполнителей NodeInfo / NodeRegistration - информация об узле NodeStatus - статус узла (Online, Offline, Busy, Maintenance)

Операции с сущностями

ICrudService<T, TKey> - CRUD интерфейс для любых сущностей IJobTaskService<T, TId> - специфичные операции с задачами (GetByPIDAsync и др.) IJobTagService<TTag, TId> - специфичные операции с метками (SetColor, CountJobsToTag)

Групповые операции (IJobTagService) PauseAllByTagAsync - приостановить все задачи метки ResumeAllByTagAsync - возобновить все задачи метки RunAllByTagAsync - запустить все задачи метки сейчас GetGroupSummaryAsync - получить сводку по группе (статистика) ApplySettingsToGroupAsync - применить настройки ко всем задачам группы

Режимы группового выполнения (GroupExecutionMode) Parallel - все задачи параллельно Sequential - одна задача за другой Pipeline - конвейер (результат передаётся следующей задаче) RoundRobin - распределение по разным узлам

Интерфейсы сервисов

Сервисы (интерфейсы) IJobExecutor<TId> - исполнитель задачи (запуск внешнего процесса) IJobScheduler<TId> - планировщик (регистрация, запуск, пауза, остановка) IEncryptionService - шифрование чувствительных аргументов INotificationService<TId> - сервис уведомлений (Email, Telegram, Webhook - по каждому статусу) IUiNotificationService - сервис уведомлений UI (SignalR, EventAggregator) IDomainEventDispatcher - диспетчер доменных событий IPlatformDetector - определение ОС (Windows / Linux / macOS) IPlatformFactory - фабрика платформозависимых сервисов IProcessRunner - кросс-платформенный запуск процессов ICommandLineEscaper - экранирование аргументов командной строки IUnitOfWork - атомарное сохранение изменений (всё или ничего)

Управление жизненным циклом задачи

IExecutionScope<TTask, TId> - инкапсулирует состояние выполнения задачи (расшифровка → выполнение → шифрование)

Результаты операций

JobExecutionResult - результат выполнения задачи (Success, ExitCode, stdout/stderr) DomainValidationResult - результат валидации доменной модели PagedRequest / PagedResult - пагинация и фильтрация (безопасная, без Expression)

Типы расписаний (PeriodType.cs и реализации IScheduleSettings)

OnceSchedule - однократное выполнение DailySchedule - ежедневное выполнение WeeklySchedule - еженедельное выполнение MonthlySchedule - ежемесячное выполнение YearlySchedule - ежегодное выполнение EveryMinutesSchedule - с интервалом в минутах HourlySchedule - с интервалом в часах QuarterlySchedule - ежеквартальное выполнение IntervalSchedule - периодическое (кастомизируемое, в разработке)

Перечисления

Статусы (EventType.cs)

TaskCreated --> Задача создана TaskUpdated --> Задача обновлена TaskDeleted --> Задача удалена TaskStarted --> Задача запущена TaskCompleted --> Задача завершена (успешно или с ошибкой) TaskPaused --> Задача приостановлена TaskResumed --> Задача возобновлена TaskStopped --> Задача остановлена принудительно TaskSkipped --> Задача пропущена (например, из-за блокировки) TaskFailed --> Ошибка выполнения задачи TaskTimedOut --> Задача истекла по таймауту

Типы оповещений (NotificationType.cs)

Popup --> Всплывающее окно (Desktop) Sound --> Звук (Desktop) Email --> Email (SMTP) LogFile --> Файловый лог (сервер) EventLog --> Windows Event Log Webhook --> HTTP-вызов на указанный URL Monitoring --> Sentry, OpenTelemetry Telegram --> Telegram уведомление (сообщение)

Уровень важности (NotificationSeverity)

Info, Success, Warning, Error

Стратегии повторов (RetryStrategy)

None, FixedDelay, ExponentialBackoff, Incremental

Состояние сущности в UoW (EntityState)

Detached, Added, Modified, Deleted, Unchanged

Уровень важности уведомлений (NotificationSeverity.cs)

Info --> Информационное сообщение (низкая важность) Success --> Успешное выполнение операции Warning --> Предупреждение (требует внимания, не критично, но может упасть) Error --> Критическая ошибка (требует немедленного вмешательства)

Переезд на другую библиотеку

Если вы хотите избавиться от зависимости JobRunner.Quartz в своем проекте, можно переписать реализацию промежуточного слоя под вашу библиотеку.

Так как JobRunner.Quartz зависит от JobRunner.Core, доменную модель можно использовать для построения нового проекта. Минимальный набор того, что нужно будет реализовать:

  • Конвертацию пользовательского формата настроек задачи под логику вашей библиотеки
  • Настройку ExecutionScope для управления жизненным циклом (расшифровка → выполнение → шифрование)
  • Шифрование/дешифрование аргументов через IEncryptionService
  • Регистрацию задач в вашем планировщике через IJobScheduler
  • Хранение задач через ICrudService (EF Core / Dapper / ADO.NET)
  • Отправку уведомлений через INotificationService
  • Детекцию платформы через IPlatformDetector (если нужен кросс-платформенный запуск)
  • Реестр узлов через IJobNodeRegistry (если нужно распределённое выполнение)
  • Unit of Work через IUnitOfWork (если нужна атомарность)

Зависимости

Библиотека не имеет внешних зависимостей (кроме .NET стандартных сборок)

Microsoft.Extensions.DependencyInjection - используется только в DomainEventDispatcher (можно заменить на любую другую реализацию DI или убрать, реализовав свой диспетчер)

последние изменения (v.2.0.1)

  1. Изменение логики работы с кварталами (1,2,3,4)
  2. Добавление расписания "список однократных выполнений"
  3. новые сервисы и DTO для программных реализаций задачи
  4. мелкие фиксы (изменение пространств имён и тд)
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on JobRunner.Core:

Package Downloads
JobRunner.Quartz

Quartz.NET implementation for JobRunner

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.1 144 7/24/2026
2.0.0 147 6/28/2026
1.3.0 133 6/26/2026
1.2.4 129 6/22/2026
1.2.3 131 6/19/2026
1.2.2 141 6/16/2026
1.2.1 110 6/14/2026
1.2.0 138 6/12/2026
1.1.0 127 6/8/2026
1.0.11 134 6/6/2026
1.0.10 128 6/2/2026
1.0.9 115 5/12/2026
1.0.8 126 5/11/2026
1.0.7 127 5/9/2026
1.0.6 108 5/7/2026
1.0.5 114 5/7/2026
1.0.4 142 4/28/2026
1.0.3 109 4/28/2026
1.0.2 124 4/28/2026
1.0.1 122 4/26/2026
Loading failed