『贴代码』
我的博文
个人作品
优选问答
「搜索」
【本期话题】更多
三人寄语更多
抛开需求讲架构,和纸上谈兵无差!
点赞:1
逻辑注解清晰的代码优于那些一眼看不明白的语法糖
点赞:0
对于答案来说,更重要的是找到答案的这个过程而不是答案本身!
点赞:0
能通过内网IP访问的,尽量不要使用域名访问!
点赞:1
微信的app这个东西很鬼,有时候你刷新页面,会造成部分数据重置,部分不重置,不妨试试把对象放app.globalData里面去,会有意外惊喜!
点赞:0
往往会为了一个项目,搭建适合他专属的脚手架!
点赞:1
由于时间的问题,我们往往会给自己埋坑,等着后续或者下一任来填!
点赞:0
设置后,UI不会变更,要不给他一个SetTimeout试试,原因自己想
点赞:0
时好时坏的结果,往往是多线程引起的逻辑混乱导致的!
点赞:0
测试没问题的不一定没问题,测试有问题的那肯定有问题!
点赞:2
PasteTimer软件介绍
尘埃 2023-02-17 2974 181 1 编辑
PasteTimer的简单介绍

简介

   PasteTimer 是一个开源且商业免费使用的工具函数库。可以让你非常容易地在 ASP.NET 应用(也可以不在 ASP.NET 应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于 Windows Service 后台任务执行器。且任务信息可以被持久保存。

   支持跨平台部署,建议采用Docker部署

   源代码分享地址: https://gitee.com/pastecode/pastetimer

发布

   从上面的gitee地址中拉取项目代码

   使用VS2022打开,你会看到如下代码结构

   image.png

   项目大概分2个模块,一个客户端模块,一个服务端模块,服务端由于PasteTimer本身有任务报表模块,所以他是有客户端的,所以src文件夹的项目有引用client文件夹的项目。

   设置PasteTimer.HttpApi.Host为启动项目后,右键生成,看看是否生成成功!

   如果你使用mysql数据库

1.使用VS2022打开本项目
	首先在appsettings.json中修改数据库链接字符串,也就是在ConnectionStrings:MainConnectionString后面
	然后在appsettings.json中修改TaskConfig:DataType的值修改为mysql
2.设置PasteTimer.HttpApi.Host为启动项目(就是右侧解决方案里面这个项目加粗了)
3.右键2的这个项目进行生成,看看是否生成成功,成功成功后继续往下执行
4.点击上方的工具栏 --》视图 --》其他窗口 --》程序包管理器控制台
5.在VS工具下方找到这个窗口,然后在这个程序包管理器控制台的里面的 默认项目(J)后面下拉选择项目为src\PasteTimer.EntityFrameworkCore
6.下下方输入如下命令add-migration databaseinit -Context MysqlDbContext
7.如果要同步数据库表结构给数据库,则继续执行命令update-database -Context MysqlDbContext

   如果你使用其他数据库

	则可以跳过上面的步骤,只需要在发布的文件夹中修改appsettings.json中的相关配置,系统在启动的时候会自己检查数据库是否创建,数据库表是否创建,默认账号是否配置等操作。

   PasteTimer和本论坛的一般系统一致采用EF模式,所以在数据库的创建上非常简单,你只要填写你的数据库的连接和配置好数据库的类型即可,系统在第一次部署启动后会自动的去完成数据库的相关配置。

   右键发布,选择发布到文件夹,然后采用默认配置或者基于自己的服务器情况配置进行发布,发布成功后就会得到发布的文件列表。

   部署到服务器后,根据配置打开对应的地址,会看到如下图:

   image.png

   就表示你部署成功啦,然后使用appsettings.json里面的默认账号密码进行登陆。

   image.png

   出去基础的管理账号,推送模块等,这里其实有的信息就是节点信息和任务列表,然后是任务报表和任务记录。

   这里有一个概念,就是任务是需要指定组的,任务所在的组和节点所在的组处于同一个组的时候,表示这些任务发布到这个组的节点去执行。如果任务的组你设置为*的话,那么他会发布给所有的节点执行,这种情况一般是失败的,因为任务都是需要按需去实现的。

实现任务

   要实现一个任务,只需要写一个class继承于IPasteCodeTaskBase

   这里有一个案例,你可以查看PasteTimer.HttpApi.Host的项目中的/Service/RemoteTestHandler.cs的内容

   image.png    

   查看和这个RemoteTeshHandler的相关引用,发觉他在这几个地方有代码

   在项目的入口文件PasteTimerHttpApiHostModule.cs中执行了注入

  context.Services.AddTransient<IPasteCodeTaskBase, RemoteTestHandler>();

   基于上面的特性,你可以实现单例,瞬时等!

执行流程

   查看PasteTimer.HttpApi.Host\Service\SlaveHostedService.cs可以了解到,这个服务执行了轮询任务,命中任务后,根据配置规则,推送任务到任务节点,任务节点执行完成任务后,返回任务结果给服务端(PasteTimer.HttpApi.Host\Controllers\TaskController.cs)

       

评论列表
尘封
这个貌似要下线了,很久没更新了,还是上心的?
尘埃
181 2974 1
快捷注册
热门推荐更多
PasteTalk
是在线客服系统更是在线营销系统,引入特有的页面话序机制,能够针对不同访客实现丰富的营销话语,提高开发效率!引入分词功能提升关键字命中概率,提高服务质量!;
最新动态
  • 62.****.9 正在查看 PasteSpider之私有仓库的创建和使用 !
  • 220.****.114 正在查看 记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-动态表单(2) !
  • 99.****.192 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
  • 99.****.192 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
  • 41.****.51 正在查看 PasteSpider中关于Nginx的配置,安装PasteSpider之后查阅 !
  • 41.****.51 正在查看 PasteSpider中关于Nginx的配置,安装PasteSpider之后查阅 !
  • 158.****.213 正在查看 PasteSpider中如何同步文件到服务器包含PasteSpiderFile的下载 !
  • 158.****.213 正在查看 PasteSpider中如何同步文件到服务器包含PasteSpiderFile的下载 !
  • 197.****.106 正在查看 记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-效果展示(4) !
  • 197.****.106 正在查看 记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-效果展示(4) !
  • 35.****.200 正在查看 Serilog在appsettings.json中的配置 !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2