我正在开发一个具有Windows服务的Asp.Net MVC应用程序。
Windows服务基本上调用基于外部Soap的Web服务,该服务接收一些参数并返回数据,Windows服务将该数据存储到SQL服务器中。此Windows服务将定期自动调用外部Web服务。
由于我对服务没有详细了解。能指导我以下几行:
答案 0 :(得分:2)
由于您已经在使用Microsoft技术,我建议使用C#构建Windows服务。
查看该链接,其中包含创建简单Windows服务的所有详细信息:
在C#中创建基本Windows服务
http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C
您还需要创建一个计时器,您可以在其中调用Web服务。
看看这里:
What is the best way to implement a "timer"?
<强>更新强>:
1-实现这一目标的技术是什么?
- &GT; C#
2-可以使用WCF创建Windows服务吗?如果是的话,将使用哪种协议?
- &GT;不,它们是两个不同的概念。但您可以在托管Windows服务中托管WCF服务。 看看这里:http://msdn.microsoft.com/en-us/library/ms733069.aspx 就个人而言,我不喜欢这种做法。
3-开发/测试时如何运行Windows服务?
- &GT;您可以从“管理工具”启动/停止/暂停Windows服务 C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Administrative Tools \ services.lnk
4-如何安排Windows服务调用Web服务?
- &GT;在将调用Web服务的Windows服务“OnStart”方法中启动计时器
答案 1 :(得分: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)您可能需要设置服务代理程序计划以按时间间隔运行。查看用于刷新数据和服务运行时的线程和线程池和计时器。
答案 2 :(得分:0)
Visual Studio适用于创建Windows服务。不确定您使用的是哪个VS版本。 Windows服务模板和相关功能在Visual Studio的标准版或快速版中不可用。但你仍然可以配置那些;
WCF和Windows服务也不同; WCF是Microsoft所有早期Web服务技术的替代品。 Windows服务是在没有UI的情况下运行的后台服务。