控制台应用程序通过Windows服务的好处
我有一个.Net控制台应用程序使用预定事件将开始,调用一个mweb服务方法和关闭。这运行每小时/每天。虽然执行过程没有任何“错误”,但我想知道是否有任何好处将它作为一个Windows服务来实现。控制台应用程序通过Windows服务的好处
在这种情况下,有没有人会有什么最佳做法?
我觉得Windows服务难以调试,所以我倾向于只使用它们时:
(A)我在做什么是很复杂或
(B)需要运行所有的时间(示例:监视某些变化)
我发现大多数事情通常可以通过控制台应用程序的一些命令行参数和Windows调度程序来完成。
服务是从应用程序的不同方式有三种:
- 它运行,而不需要用户登录到系统
- 它不能有任何的用户界面(控制台过一个UI)
- 它可以在提升的权限(SYSTEM帐户)下运行,从而执行用户不允许的操作。
这里要问的问题是:您需要服务可以给您的不同选项吗?如果答案是否定的,则不要使用服务。
我从你的问题推断,你需要一个没有任何用户界面的背景应用程序(上面的第2项)。您似乎不需要项目1或3.您可以在没有任何窗口(控制台或其他)的情况下通过不创建纯背景应用程序来获得纯背景应用程序。只需创建一个简单的Windows应用程序并更改
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
到
static class Program
{
[STAThread]
static void Main()
{
// Application.EnableVisualStyles();
// Application.SetCompatibleTextRenderingDefault(false);
// Application.Run(new Form1());
DoWhateverYouWant();
}
}
哦,是的,和克里斯是完全正确的是调试服务是一个真正的痛苦!
我认为你所做的是最佳实践。没有什么比讨厌添加自己的服务的应用程序更讨厌定期做小事。随着更新的事件日志/任务调度程序集成到> Vista中,更少的应用程序确实需要更多的服务,如果他们这样做,它可以按需提供。
你让世界变得更美好。
:-)
哦,是一个控制台应用程序,使得它,这样你们可以根据需要手动轻松地运行它,这是伟大的可调试。
澄清:继续,你做对了。
需要考虑的一件重要事情是,控制台应用程序支持命名空间,这意味着您可以打印。它有点在Windows服务中有效,但它不受支持并且不完全稳定。
好处:如果您的计算机重新启动(即服务器),您不必登录即可重新开始工作。
我同意调试windows服务SUCKS!这太可怕了,MS应该真正解决调试服务的能力。
但是......有一些免费软件工具可以帮助您大幅度提高过程。 Anderson Imes有一个很好的实用工具,就像编写一个控制台应用程序一样,即使在调试过程中也可以编写Windows服务。
检查了他的维修调试公用事业单位以http://theimes.com/files/
他实现的最好的部分是,它是在你的代码中的1线的变化,你可以轻松地与#如果DEBUG参数管理,如果你不” t想要在你的生产实例中使用他的库。
调试服务有一个简单的解决方法。您创建一个组合的控制台/服务应用程序
您检查一些命令行参数(如-debug),然后执行您的OnStart代码,等待按键,执行OnStop代码。
我使用相同的方法来提供接口来安装,卸载,启动和停止从同一个EXE我的服务。
Creego的两点和treb的三点不能否认。但是,我发现SQL Server Agent 05/08/R2是一个非常可靠和有用的任务调度器。它比Windows任务计划更可靠,您不必担心批量权限或用户登录。
我有一个后台系统程序,每2分钟通过SQL Server代理运行一次。我强烈考虑将其转换为Windows服务,但我无法证明它的理由。
虽然在另一种情况下,秤可以很容易地倾斜。
这不是你的问题,但我通常结合这两种方法。
我使用控制台进行调试,并使用Windows服务共享相同的库和规则。
涵盖了我的所有想法; -p – 2009-01-21 12:45:31
通过使用VS.NET中的附加到进程选项,您可以非常容易地调试Windows服务。安装服务时创建一个调试版本。然后在运行时附加到它并设置断点。为我工作像黄油。 – 2009-01-21 22:44:53