JobRunner.Core
2.0.1
dotnet add package JobRunner.Core --version 2.0.1
NuGet\Install-Package JobRunner.Core -Version 2.0.1
<PackageReference Include="JobRunner.Core" Version="2.0.1" />
<PackageVersion Include="JobRunner.Core" Version="2.0.1" />
<PackageReference Include="JobRunner.Core" />
paket add JobRunner.Core --version 2.0.1
#r "nuget: JobRunner.Core, 2.0.1"
#:package JobRunner.Core@2.0.1
#addin nuget:?package=JobRunner.Core&version=2.0.1
#tool nuget:?package=JobRunner.Core&version=2.0.1
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,2,3,4)
- Добавление расписания "список однократных выполнений"
- новые сервисы и DTO для программных реализаций задачи
- мелкие фиксы (изменение пространств имён и тд)
| Product | Versions 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. |
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- System.Collections.Immutable (>= 8.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Text.Json (>= 6.0.11)
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 |