我知道已经有人问过这个主题的变化,但这是我的情况:
我有大约30个FTP接口应用程序。每个接口都有自己的要求和配置,但基本上它从源服务器下载文件 - 有时是每天,有时是每分钟(有些,甚至可能在几秒钟内安排)
对于我的初步开发,我编写了一个C#类库来完成所有FTP工作。此应用程序(无论是控制台应用程序还是Windows服务)很可能在Windows Server 2012下运行。
现在是下一篇文章,我正在尝试决定:
1)编写一个带命令的控制台应用程序(或powershell脚本?) 行输入加上每个接口的配置文件。我会 使用Windows任务计划程序安排此操作。用于部署这些 接口,我可以创建一个使用“schtasks.exe”的批处理文件 创建和配置任务。每个接口的一项任务。声音 容易腻子......
OR
2)编写一个Windows服务应用程序......但是在这里,我很困惑。我 为我的每个接口创建和安装服务? (即仅 不同的东西可能是配置文件)。或者,我创建一个主要 为单个中定义的每个接口生成线程的服务 配置文件?
如果我将此作为单项服务,我该如何管理 维护/部署这个?如果我停止服务,不会 影响所有接口?我如何执行实际操作 调度?我读过的建议是使用Quartz.Net调度程序或 只是.Net计时器。
- - -
一些额外的想法: 以下是StackOverflow的一些读物,它们提出了这些主题/关注点:
windows service vs scheduled task Scheduled console app vs Windows service? When is it appropriate to use each
任务计划程序问题
Windows服务问题
控制台应用+计划任务问题
期待一些反馈,并提供示例代码/脚本,如果相关,也非常感谢。
由于
答案 0 :(得分:2)
您可以使用PowerShell访问您的c#类
add-type
或[System.Reflection.Assembly]
- 请查看此SO帖子以获取示例 - Can I access My Custom .NET Class from PowerShell?
你可以在powershell中使用start-job
等来完成所有操作,但是你的控制脚本需要付出很多努力。
我很想使用Powershell内置(在版本3中)cmdlet来创建/修改任务调度程序和自定义触发器中的预定作业 - http://blogs.technet.com/b/heyscriptingguy/archive/2012/09/18/create-a-powershell-scheduled-job.aspx
让它安排正在运行.ps1 powershell脚本的作业,每个转移一个或相关转移组例如Monthly_Payroll_xfer.ps1
,Weekly_Expenses_xfer.ps1
具有与该转移相关的逻辑,电子邮件成功/失败警报等。
唯一没有解决的是同时处理相同的文件/目标但是如果它们已经在运行,您可以在开始时检查单个脚本 - 请参阅此帖子的接受答案 - {{3 }}
对于Windows提示,您可以作为不会登录的用户运行计划任务,并且您将看不到powershell命令窗口,因为它们将位于不同的控制台上 - 请确保不要设置{ {1}}切换powershell.exe,以便在完成后消失。
必须在工作中为一个仅作为GUI运行的工具,而不是作为服务运行,并且不能用-noexit
等运行 - 我们设置一个运行(启动时)的计划任务服务帐户并运行运行GUI.exe的PowerShell脚本
然后我们使用powershell脚本来srvany
来杀死它,禁用/启用任务(比如禁用/启用服务)和一个来运行任务。
这是一个淤泥,但它确实有效。
道歉我没有在代码示例方面给出太多帮助,在我的手机上做了这个,但可能会给你一些想法。
你也可以在c#中完成所有这一切 - 我们有一个内部开发的应用程序,带有SQL后端,它完全符合你想要实现的目标,非常成功,多线程,非常大量的数据被清除掉..
但是,我的雇主的知识产权和其他政策阻止我分享更多关于它的信息: - (