1

我正在开发一个将具有 Windows 服务的 Asp.Net MVC 应用程序。

Windows 服务基本上调用一个基于 Soap 的外部 Web 服务,该服务接收一些参数并返回数据,Windows 服务会将这些数据存储到 SQL 服务器中。此 Windows 服务将定期自动调用外部 Web 服务。

由于我对服务没有详细的了解。请您指导我以下几行:

  1. 有什么技术可以做到这一点?
  2. 可以使用 WCF 创建 Windows 服务吗?如果是这样,将使用什么协议?
  3. 如何在开发/测试时运行 Windows 服务?
  4. 如何安排 Windows 服务调用 Web 服务?
4

3 回答 3

2

由于您已经在使用 Microsoft 技术,我建议您使用 C# 构建 Windows 服务。

查看该链接,其中包含创建简单 Windows 服务的所有详细信息:

在 C# 中创建基本的 Windows 服务

http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C

您还需要创建一个计时器,您将在其中调用 Web 服务。

也看看这里:

实现“计时器”的最佳方法是什么?

更新

1-有什么技术可以做到这一点?

--> C#

2- 可以使用 WCF 创建 Windows 服务吗?如果是这样,将使用什么协议?

--> 不,它们是两个不同的概念。但是您可以在托管的 Windows 服务中托管 WCF 服务。看看这里: http: //msdn.microsoft.com/en-us/library/ms733069.aspx 我个人不喜欢这种方法。

3- 如何在开发/测试时运行 Windows 服务?

--> 您可以从管理工具 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\services.lnk 启动/停止/暂停 Windows 服务

4-如何安排Windows服务调用Web服务?

--> 在windows服务“OnStart”方法中启动一个定时器来调用web服务

于 2013-10-23T02:06:06.130 回答
1

(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) 您可能需要设置服务代理计划以按时间间隔运行。查看线程和线程池以及刷新数据和服务运行时间的计时器。

于 2013-10-23T02:24:59.523 回答
0

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 服务与 WCF 服务

于 2014-08-26T02:16:37.930 回答