2009-04-22 58 views
0

我需要创建一个可以用批处理文件激活的应用程序。什么样的应用程序最适合非交互式运行?

应用程序将接受文件名的单个字符串参数。然后,它会使用此文件运行一些处理,并将另一个文件放入预定位置并退出。

该应用程序不需要与实际用户交互。

我的首选平台是使用C#的.net。

我原本计划编写一个控制台应用程序,但我不确定这是否是最好的主意。

完成此任务的最佳方法是什么?有没有办法创建一个批处理文件触发的Windows服务?这是更可取的吗? Windows Form项目会更受欢迎吗?

回答

3

选项一:控制台应用程序。使用Windows计划程序在计划时间运行它。 (推荐)

选项二:Windows Service具有一些内置调度程序或轮询器。

0

如果它是非交互式的,控制台几乎肯定是要走的路,因为您可以简单地将它放在后台并保持独立。

0

您当然可以创建一个Windows服务,用于监视要放入特定文件夹的文件。批处理文件可以将文件放入该文件夹中。

虽然我建议您找到更好的理由来做到这一点。问问自己,“比起只运行一个控制台程序并指定文件名的批处理作业,哪种方式更好?”?

1

开发最快的东西可能是一个控制台应用程序,带有由Windows Scheduled Tasks(或类似的东西)触发的批处理文件。

这样,你只需要开发应用程序本身的功能,而不是提出一个调度框架。

您还可以利用计划任务提供的功能,如日志记录,轻松定制计划,错误报告等。Windows Schdeduled任务的另一个选项可能是使用SQL Server计划任务,这也提供了一个很好的工作经历。所有这一切,如果你沿着这条路走下去,你确实有额外的依赖关系,如果你编写了自己的Windows服务,你可能会消除这些依赖关系。 此外,如果部署是一个问题,那么使用安装程序编写Windows服务可以更好地控制安装过程。

0

带有FileSystemWatcher的Windows服务,用于监视相关文件夹而不是始终在线的控制台应用程序。这就是他们的目的,如果系统失败了,你不必记得把文件放在上面,你不必把它放到你的Windows启动中。只需将服务设置为自动启动即可。

3

我最喜欢的选项,其中一个我确信我以前的雇主采取作为公司的政策,如下:

所有服务器类型的应用程序在编写时没有任何形式的直接连接的UI。无论是编译为控制台应用程序,作为Windows应用程序,还是在设计阶段都无关紧要 - 使用.NET,其差异归结为翻转编译器开关。但是,一般来说,由于该程序在没有直接人为干预的情况下运行,因此我们通常将其设计为作为服务运行 - 服务控制管理器负责启动和关闭,可以在失败时重新启动应用程序,并且执行很多优化在编写桌面应用程序时很难自行完成的东西。

接下来,您有服务器应用程序监听网络上的“admin”进行连接。此管理连接是您的用户界面。像SSL加密和身份验证等事情取决于您和您的公司,但在其基础上,我会建议构建一个基于行的人类可读界面。通过这种方式,您可以使用telnet连接到它并发出诸如“show connections”,“drop user 52”和“restart”之类的命令。使用此界面可以显示任何类型的管理行为,以及任何类型的状态和统计信息。首先,这有助于调试,其次,它导致下一步...

最后你建立一个用户界面。一个简单的可能。该用户界面的一部分配置是指定要连接的主机和端口,以及任何验证位。 UI应用程序连接到运行服务的计算机,并通过网络管理界面发出命令,并解释结果。在我们公司,每个新的用户界面都是一个管理单元模块,作为大型项目的一部分。该项目将显示代表各种服务器及其状态的红绿灯。点击服务器将允许您“深入”到该服务器并检查其状态或配置的各个方面。

尽管该项目仅在一两台服务器上作为我的小程序开始,但它迅速发展成包括数十台运行少数服务的服务器,运行在各种操作系统和世界各地的众多城市。这种简单的用户界面策略使我们能够轻松地从单一座位跟踪和控制数百种这些服务,或同时在不同办公室的不同办公室中跟踪和控制这些服务。

可伸缩性意味着不需要电脑前的某个人点击您编写的程序上的按钮。

相关问题