创建 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 服务的指南?的主要内容,如果未能解决你的问题,请参考以下文章

Windows API 学习指南

Windows服务器安全配置指南

python学习指南—Windows 平台下载安装 Anaconda 及 Python 虚拟环境创建

python学习指南—Windows 平台下载安装 Anaconda 及 Python 虚拟环境创建

python学习指南—Windows 平台下载安装 Anaconda 及 Python 虚拟环境创建

git windows快速接入github指南