首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Webservice/WCF (计时器更新引擎)

Webservice/WCF (计时器更新引擎)
EN

Stack Overflow用户
提问于 2010-08-10 08:41:52
回答 2查看 4.2K关注 0票数 2

我正在尝试构建一个webservice /WCF引擎,它可以执行两个操作:

  1. 有一个计时器(线程),每10-10分钟运行一次,请求在一个数据库中更新一些信息(与其他服务器连接以获取一些信息状态)。(这必须是自动的,不会有人采取行动)。其思想是webservice自动更新数据库(10x10分钟),利用最近的信息状态更新数据库,
  2. one服务方法从一个数据库中获取一些信息。(这是一种简单的方法,可以在某人请求时提供信息)。此方法将负责从数据库中选择状态信息.

问题是第一步,因为第二步非常容易。

谁能帮我,用一些想法或一些代码,如何第一步。任何模式都应该在这里使用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 10:12:01

因为它是一个webapp (例如,VS2010中的“”项目类型),所以您可以连接到应用程序事件。

默认情况下,该项目模板类型不会创建Global.asax,因此您需要“添加新项”并选择“”(如果您已经拥有一个Global.asax,FWIW),它将不可用。

然后,您只需使用应用程序上的开始和结束事件来启动和停止您的计时器,如下所示:

代码语言:javascript
运行
复制
public class Global : System.Web.HttpApplication
{
    private static readonly TimeSpan UpdateEngineTimerFrequency = TimeSpan.FromMinutes(10);
    private Timer UpdateEngineTimer { get; set; }

    private void MyTimerAction(object state)
    {
        // do engine work here - call other servers, bake cookies, etc.
    }

    protected void Application_Start(object sender, EventArgs e)
    {
        this.UpdateEngineTimer = new Timer(MyTimerAction,
                                           null, /* or whatever state object you need to pass */
                                           UpdateEngineTimerFrequency,
                                           UpdateEngineTimerFrequency);
    }


    protected void Application_End(object sender, EventArgs e)
    {
        this.UpdateEngineTimer.Dispose();
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-08-11 04:33:07

单一责任原则建议将这两个责任分成两个服务。一个( Windows服务)将处理定时器。第二个是WCF服务,它只有一个操作来查询数据库并返回数据。

这些都是独立的功能,应该独立实施。

此外,我建议不要依赖于IIS或Application_Start以及类似的方法。这将防止您的WCF服务托管在WAS或其他环境中。请记住,WCF比ASMX web服务灵活得多。它并不限制您服务的宿主位置。在你对自己的服务设置这样的限制之前,你应该仔细考虑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3447266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档