Click here to Skip to main content
15,867,686 members
Articles / Programming Languages / ASP
Article

Keep Web Service Objects States

Rate me:
Please Sign up or sign in to vote.
2.60/5 (2 votes)
26 Mar 2008CPOL 20.1K   12   2
keep web service running without users

Introduction

This service keep one web service instance live for a long time.

Background

I recently found here on code project article that explaining "simulation of windows service" by using cache expiring event. You can read it here. And then I came to idea to use it keep my web service alive long time without users.

Using the code

You should make pattern for hitting page as described in article and in your web service implement singleton pattern. Code described in article simulates timer that hitting page every minute. As you can make instance of your web service in you web page first time you visit it and then every next hit will return your instance and will keep your web service alive. So that means that you can use for example timers or other object in your service without fear of loosing their states.

Implement singleton to be sure that you will not make thousands of instances.

    static WebService instance = null;
    static readonly object singletonSync = new object();
    public static WebService Instance
    {
        get
        {
            lock (singletonSync)
            {
                if (instance == null)
                {
                    instance = new WebService();
                }
                return instance;
            }
        }
    }  
// next code goes to global asax 

protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.Url.ToString() == defaultUrl)
        {
            NewCacheEntry();
        }
    }

    private void NewCacheEntry()
    {
        if (null != HttpContext.Current.Cache[newCacheItemKey])
        {
            return;
        }

        HttpContext.Current.Cache.Add(
            newCacheItemKey, 
            "value", 
            null, 
            DateTime.MaxValue,
            TimeSpan.FromMinutes(1), 
            CacheItemPriority.NotRemovable,
            new CacheItemRemovedCallback(CacheItemRemoved));

    }

    public void CacheItemRemoved(string key, object value, CacheItemRemovedReason reason)
    {
        CliDownloadThePage();
    }
    private void CliDownloadThePage()
    {
        System.Net.WebClient client = new System.Net.WebClient();
        client.DownloadData(defaultUrl);
    }

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Junior)
Yugoslavia Yugoslavia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionCoke? Pin
Mladen Janković26-Mar-08 6:44
Mladen Janković26-Mar-08 6:44 
Ti li si, brate? Smile | :)

Mostly, when you see programmers, they aren't doing anything. One of the attractive things about programmers is that you cannot tell whether or not they are working simply by looking at them. Very often they're sitting there seemingly drinking coffee and gossiping, or just staring into space. What the programmer is trying to do is get a handle on all the individual and unrelated ideas that are scampering around in his head. (Charles M Strauss)

GeneralRe: Coke? Pin
Stojan Trajkovic26-Mar-08 22:45
Stojan Trajkovic26-Mar-08 22:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.