创建 Windows 服务的指南?
Posted
技术标签:
【中文标题】创建 Windows 服务的指南?【英文标题】:guideline for creating Windows service? 【发布时间】:2013-11-01 03:00:54 【问题描述】:我正在开发一个带有 Windows 服务的 Asp.Net MVC 应用程序。
Windows 服务基本上调用一个基于 Soap 的外部 Web 服务,它接收一些参数并返回数据,Windows 服务会将这些数据存储到 SQL 服务器中。此 Windows 服务将定期自动调用外部 Web 服务。
由于我对服务没有详细的了解。请您指导我以下几行:
-
有哪些技术可以做到这一点?
可以使用 WCF 创建 Windows 服务吗?如果是这样,将使用什么协议?
如何在开发/测试时运行 Windows 服务?
如何安排 Windows 服务调用 Web 服务?
【问题讨论】:
【参考方案1】:由于您已经在使用 Microsoft 技术,我建议您使用 C# 构建 Windows 服务。
查看包含创建简单 Windows 服务的所有详细信息的链接:
用 C# 创建基本的 Windows 服务
http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C
您还需要创建一个计时器来调用网络服务。
也请看这里:
What is the best way to implement a "timer"?
更新:
1- 有哪些技术可以做到这一点?
--> C#
2- 可以使用 WCF 创建 Windows 服务吗?如果是这样,将使用什么协议?
--> 不,它们是两个不同的概念。但是您可以在托管的 Windows 服务中托管 WCF 服务。 看看这里:http://msdn.microsoft.com/en-us/library/ms733069.aspx 我个人不喜欢这种方法。
3- 如何在开发/测试时运行 Windows 服务?
--> 您可以从管理工具启动/停止/暂停 Windows 服务 C:\ProgramData\Microsoft\Windows\开始菜单\程序\管理工具\services.lnk
4- 如何调度 Windows 服务调用 Web 服务?
--> 在windows服务的“OnStart”方法中启动一个定时器来调用web服务
【讨论】:
谢谢,但如果可能的话,请您回复我的问题。再次感谢。【参考方案2】:(1) 看看如何从 System.ServiceProcess.ServiceBase 和 OnStart() 事件创建一个类。
public class MyService : System.ServiceProcess.ServiceBase
protected override void OnStart(string[] args)
(2) 无法通过 wcf 服务调用创建 Windows 服务,但可以发出启动信号。
(3) 我使用 Release|Debug 开关来允许在调试模式下调试服务启动,但是,这对我来说很容易。
static void Main()
#if (!DEBUG)
System.ServiceProcess.ServiceBase[] servicesToRun;
servicesToRun = new System.ServiceProcess.ServiceBase[] new MyService() ;
System.ServiceProcess.ServiceBase.Run(servicesToRun);
#else
MyService service= new MyService();
service.OnStart(null);
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
#endif
(4) 您可能需要设置服务代理计划以按时间间隔运行。查看线程和线程池以及刷新数据和服务运行时间的计时器。
【讨论】:
【参考方案3】:Visual Studio 非常适合创建 Windows 服务。不确定您使用的是哪个 VS 版本。 Windows 服务模板和相关功能在 Visual Studio 的标准版或速成版中不可用。但是您仍然可以配置它们;
参考: http://msdn.microsoft.com/en-us/library/vstudio/76477d2t(v=vs.100).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
WCF 和 Windows 服务也不同; WCF 是 Microsoft 早期所有 Web 服务技术的替代品。 Windows 服务是在没有 UI 的情况下运行的后台服务。
见: Web Service vs WCF Service
【讨论】:
以上是关于创建 Windows 服务的指南?的主要内容,如果未能解决你的问题,请参考以下文章
python学习指南—Windows 平台下载安装 Anaconda 及 Python 虚拟环境创建
python学习指南—Windows 平台下载安装 Anaconda 及 Python 虚拟环境创建