1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chejiangyi-Dyd.BaseService.TaskManager

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Разветвление: на основе BSF

Данное разветвление является разработкой, основанной на BSF.

Изменения:

  1. SDK расширяется от BSF в виде плагина.
  2. Пространство имён проекта изменено с Dyd.BaseService.TaskManager на TaskManager.
  3. Созданы пакеты установки, которые могут быть непосредственно использованы третьими сторонами.
  4. Для старой версии XXF.dll следует использовать мастер-разветвление.

Можно напрямую использовать установочный пакет «Установка платформы диспетчеризации задач» для пробной установки.

Новые функции: 5. Добавлена внутренняя функция мгновенного уведомления Redis, оптимизирующая связь между веб и узлами. 6. Добавлена общая функция конфигурации, позволяющая всем задачам совместно использовать эти конфигурации. 7. Устранена ошибка, из-за которой узел мониторинга задач постоянно выдавал ошибку.

Проблемы компиляции

После загрузки исходного кода с помощью git некоторые разработчики не смогли скомпилировать код (довольно загадочная проблема). Можно попробовать решить проблему следующими способами:

  1. Переключиться на .NET Framework 4.5 и повторить попытку.
  2. Скачать исходный код BSF и скомпилировать его напрямую.
  3. Установить версию 2.0 пакета System.Net.Http для всех проектов (правый клик по решению → Nuget позволяет установить этот пакет для всех проектов).

Причина: BSF ссылается на system.Net.Http версии 2.0, но Windows по умолчанию использует .NETFramework версии 4.5, который содержит system.Net.Http версии 4.0.

.NET Простая платформа диспетчеризации задач

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

  1. Платформа разработана на основе Quartz.NET для функций диспетчеризации задач с использованием C# кода и поддерживает выражения corn и пользовательские расширения выражений corn.

  2. Архитектура разработана в виде плагинов, обеспечивая хорошую расширяемость функций, стабильность, простоту и удобство для дальнейшей разработки функций третьими лицами.

  3. Поддерживает многоузловые кластеры, облегчая эффективное распределение ресурсов кластера серверов и изоляцию задач.

  4. Поддерживает оповещения об ошибках в форме электронной почты, что облегчает обработку задач и управление ими.

Dyd.BaseService.TaskManager Исходный код развёртывания

    1. Удалить ссылки на Newtonsoft.Json.dll в каждом проекте.
    1. Проверить ссылки на XXF.dll в каждом проекте и убедиться, что они указывают на файл XXF.dll в папке «Ссылки».
    1. Выполнить скрипт моделирования SQL Server в файле .txt.
    1. Развернуть веб-сайт «Dyd.BaseService.TaskManager.Web», который является интерфейсом управления задачами, и изменить строку подключения к базе данных в web.config.
    1. Изменить код входа и права пользователя (см. исходный код), не используя внутренний вход через CRM.
    1. Сгенерировать заново и упаковать файл «Dyd.BaseService.TaskManager.MonitorTasks», который используется для мониторинга задач.
    1. Установить службу «Dyd.BaseService.TaskManager.WinService», изменив путь к фактическому файлу установки.
    1. После успешного доступа к интерфейсу управления можно следовать «Процесс установки платформы диспетчеризации задач (пример).xls», чтобы создать новые задачи, а затем запустить их. Если задачи работают нормально, установка считается успешной.

(Благодарим студента Юй Чжунляна за организацию)

Группа открытого исходного кода: .NET Открытый базовый сервис 851340557 (У всех есть основная работа, и они могут не иметь возможности быстро реагировать и отслеживать решение проблем. Пожалуйста, поймите.)

Справочные документы

(Соответствующие документы, пожалуйста, обратитесь к основной ветке, но основная ветка относительно старая)

  • Документ\Реализация анализа задач диспетчеризации (TaskManage).docx — предоставлен Сюй Пином.
  • Документ\Развёртывание платформы диспетчеризации задач — версия для лёгкого понимания.docx — предоставлено Пекином-Се Цзяном.

Пример демонстрационной задачи

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dyd.BaseService.TaskManager.Demo
{
    /// <summary>
    /// 任务调度平台 任务插件的写法demo及说明
    /// </summary>
    public class DemoTask : XXF.BaseService.TaskManager.BaseDllTask
    {
        /// <summary>
        /// 任务调度平台根据发布的任务时间配置,定时回调运行方法
        /// 开发人员的任务插件必须要重载并该方法
        /// </summary>
        public override void Run()
        {
            /* 
             * this.OpenOperator 用于任务调度平台提供给第三方使用的所有api接口封装
             */

            /*获取当前任务dll安装目录*/
            this.OpenOperator.GetTaskInstallDirectory();

            /*打印一条日志到任务调度平台,因为日志会存到平台数据库,所以日志要精简,对任务出错时有分析价值【注意:不要频繁打印无用的,非必要的,对分析无价值的日志信息】*/
            this.OpenOperator.Log("这里打印一条日志到任务调ду платформы");

            /*打印一条错误到任务调度平台,因为日志会存到平台数据库,所以日志要精简,对任务出错时有分析价值【注意:不要频繁打印无用的,非必要的,对分析无价值的日志信息】
             *后续任务会有增加优先级区分,根据任务的优先级,错误的出现频率等,错误日志会定期推送到开发者邮箱和短信*/
            this.OpenOperator.Error("Здесь печатается одна ошибка журнала на платформу диспетчеризации задач", new Exception("Сообщение об ошибке"));

            /*从数据库获取任务的临时数据,临时数据以jason的形式保存在数据库里面,便于任务上下文的恢复和信息传递【注意:不应用于"频繁的"存储"大量的"临时数据,会操作网络耗时和数据库性能差】*/
            var databasetempinfo = this.OpenOperator.GetDataBaseTempData<DemoTaskDatabaseTempInfo>();
            if (databasetempinfo == null)//若任务第一次运行,可能没有临时数据。当然也可以在发布任务的时候配置临时数据也可。
            {
                databasetempinfo = new DemoTaskDatabaseTempInfo();
                databasetempinfo.LastLogID = 0;
            }

            /*将任务的临时数据持久化到数据库中,临时数据以json的形式保存在数据库里面,便于任务上下контекста и информации передачи【注意:не применяется к"часто"хранения"большого количества"временных данных,будет работать сеть и база данных производительность】
              Если временные данные используются для следующего использования, необходимо выполнить этот метод, иначе он не сможет получить следующий раз【Примечание: выполнение этого метода, текущие временные данные могут быть сброшены до нуля, чтобы облегчить освобождение памяти】*/
            this.OpenOperator.SaveDataBaseTempData(databasetempinfo);

            /*从本地安装目录中获取任务的临时数据,临时数据以jason的形式保存在本地,便于任务上下文的恢复和信息传递【注意:本地临时数据一般用于保存"大量的"临时数据】*/
            var localtempinfo = this.OpenOperator.GetLocalTempData<DemoTaskLocalTempInfo>();
            if (localtempinfo == null)//若任务第一次运行,可能没有临时数据。当然也可以在发布任务的时候上传临时数据json至安装压缩包中也可。
            {
                localtempinfo = new DemoTaskLocalTempInfo();
                localtempinfo.file = new byte[0];
            }

            /*将任务的临时数据持久化到本地安装目录中,临时数据以json的形式保存在本地安装目录里面,便于任务上下文的恢复和信息传�чту【注意:本地临时数据一般用于保存"大量的"临时数据】

В этом тексте нет ошибок, требующих перевода. **Текст на русском языке:**

Если временные данные используются повторно, необходимо выполнить этот метод, иначе при следующем использовании они могут быть не получены. Обратите внимание: выполнение этого метода может привести к тому, что текущие временные данные будут сброшены в null для освобождения ресурсов памяти.

this.OpenOperator.SaveLocalTempData(localtempinfo); { string msg = "Выполнение бизнес-операции..."; msg += this.AppConfig["sendmailhost"]; Debug.WriteLine(msg); System.IO.File.AppendAllText(this.OpenOperator.GetTaskInstallDirectory() + "бизнес.txt", msg); } } ///

/// Вход для самостоятельного тестирования разработчика. /// Необходимо настроить проект как -> Консольное приложение и написать класс Program и функцию Main. /// public override void TestRun() { /В тестовой среде конфигурация задачи должна быть заполнена вручную, в производственной среде она должна быть настроена в центре конфигурации задач/ this.AppConfig = new XXF.BaseService.TaskManager.SystemRuntime.TaskAppConfigInfo(); this.AppConfig.Add("sendmailhost", "smtp.163.com"); this.AppConfig.Add("sendmailname", "fengyeguigui@163.com"); this.AppConfig.Add("password", "******");

base.TestRun();

}

} ///

/// Информация о временных данных задачи, используемая для передачи контекста задачи. /// Будет сохранён в формате json в базе данных платформы диспетчеризации задач и будет восстановлен и использован при повторном вызове. Обратите внимание: не подходит для «частого» хранения «большого» объёма временных данных, это может повлиять на производительность сети и базы данных. /// public class DemoTaskDatabaseTempInfo { public int LastLogID { get; set; } } /// /// Информация о временных данных задачи, используемая для передачи контекста задачи. /// Будет сохранён в локальном установочном каталоге платформы диспетчеризации задач в виде файла и будет восстановлен и использован при повторном вызове. Обратите внимание: локальные временные данные обычно используются для сохранения «больших» объёмов временных данных. /// public class DemoTaskLocalTempInfo { public byte[] file { get; set; } }

Изображения:

  • Изображение 1: Снимок экрана с веб-интерфейсом.
  • Изображение 2: Снимок экрана с веб-интерфейсом.
  • Изображение 3: Снимок экрана с веб-интерфейсом.
  • Изображение 4: Снимок экрана с веб-интерфейсом.
  • Изображение 5: Снимок экрана с веб-интерфейсом.
  • Изображение 6: Снимок экрана с веб-интерфейсом.
  • Изображение 7: Снимок экрана с веб-интерфейсом.
  • Изображение 8: Снимок экрана с веб-интерфейсом.
  • Изображение 9: Снимок экрана с веб-интерфейсом.
  • Изображение 10: Снимок экрана с веб-интерфейсом.
  • Изображение 11: Снимок экрана с веб-интерфейсом.

Будущие идеи:

  1. Перенос отказавших задач: если задача продолжает отказывать n раз или частота отказов высока, можно рассмотреть запуск задачи на другом узле или в кластере узлов. Это позволит обеспечить восстановление после отказа.

  2. Балансировка нагрузки задач: несколько задач выполняются параллельно для выполнения высоконагруженных задач на нескольких узлах.

  3. Разделение задач: родительская задача может создавать несколько дочерних задач, управлять ими, планировать их выполнение, восстанавливать после отказов и выдавать предупреждения.

  4. Процессуализация и управление задачами.

.NET Open Source Development Learning Path:

Существует три пути изучения и разработки проектов с открытым исходным кодом на платформе .NET:

  • Путь 1: скачать исходный код проекта с открытым исходным кодом → изучить проект с открытым исходным кодом → успешно развернуть проект (с помощью документации по проекту с открытым исходным кодом или помощи администратора группы QQ) → стать администратором группы QQ, связанным с проектом → решать повседневные проблемы проекта с открытым исходным кодом → обобщать и систематизировать документацию по проектам с открытым исходным кодом и делиться ею с другими или продвигать её → стать разработчиком и участником проекта git.

  • Путь 2: скачать исходный код проекта с открытым исходным кодом → изучить проект с открытым исходным кодом → успешно развернуть проект (с помощью документации по проекту с открытым исходным кодом или помощи администратора группы QQ) → обнаружить ошибку во время фактического использования и отправить ошибку администратору соответствующего проекта.

  • Путь 3: скачать исходный код проекта с открытым исходным кодом → изучить проект с открытым исходным кодом → успешно развернуть проект (с помощью документации по проекту с открытым исходным кодом или помощи администратора группы QQ) → создать ветку проекта с открытым исходным кодом самостоятельно → отправить новую функцию в ветке официальному разработчику проекта → официальный разработчик проекта объединит новую функцию и выпустит новую версию в соответствии с ситуацией проекта.

О концепции экосистемы .NET с открытым исходным кодом:

Экосистема .NET с открытым исходным кодом представляет собой замкнутый цикл, состоящий из официальных проектов с открытым исходным кодом, участия третьих сторон в изучении, улучшениях третьих сторон и отправке новых функций или ошибок, объединении новых функций или исправлении ошибок официальными лицами и выпуске новых версий.

Почему открытый исходный код? Экосистема .NET с открытым исходным кодом сама по себе слаба, но сильна благодаря вам и мне, постоянно учась, делясь по крупицам, помогая друг другу и совместно создавая хорошую экосистему .NET.

Идея открытого исходного кода: открытый исходный код — это отношение, обмен — это дух, обучение всё ещё требует настойчивости, прогресс всё ещё требует усилий, экосистема .NET становится лучше благодаря вам и мне.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

.NET простая платформа для планирования задач, предназначенная для загрузки, изоляции, планирования выполнения, контроля доступа, мониторинга, управления, ведения журналов, оповещения об ошибках, анализа производительности и других задач для .NET DLL и EXE. Платформа разработана на основе Quartz.NET для реализации функций планирования задач. Ко... Развернуть Свернуть
C# и 5 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chejiangyi-Dyd.BaseService.TaskManager.git
git@api.gitlife.ru:oschina-mirror/chejiangyi-Dyd.BaseService.TaskManager.git
oschina-mirror
chejiangyi-Dyd.BaseService.TaskManager
chejiangyi-Dyd.BaseService.TaskManager
BSF_TaskManager20160929