Approccio per inviare aggiornamenti di dati ai client degli iscritti C #

-1

Vorremmo inviare e-mail tempestive agli abbonati su aggiornamenti / modifiche al database. Quale sarebbe un approccio ottimale a questo. Considerare SignalR un buon percorso?

Esempio: Supponiamo di avere un elenco di telefoni con funzioni specifiche nel database. L'utente desidera ricevere una notifica ogni volta che viene immesso sul mercato un nuovo telefono con fotocamera frontale da 8 megapixel.

Considerata la possibilità di archiviare gli abbonati e-mail e le loro condizioni, controllare il database ogni notte e inviare e-mail.

Leggi su SignalR e aggiornamenti in tempo reale ma non riesci a comprendere le sue applicazioni. Può essere applicato a uno scenario che ho menzionato?

    
posta user2412146 08.10.2014 - 08:14
fonte

1 risposta

1

L'invio di e-mail agli abbonati di tanto in tanto non è in realtà un requisito in tempo reale. Gli abbonati leggono le tue e-mail dopo qualche minuto almeno , quindi perché preoccuparsi di inviarle entro microsecondi di aggiornamenti.

Sarebbe più adatto per un'attività pianificata che viene eseguita a intervalli prestabiliti come 60 secondi.

Ecco una semplice tecnica di pianificazione delle attività che StackOverflow stesso utilizzava nei suoi primi giorni:

  1. All'avvio, aggiungi un elemento a HttpRuntime.Cache con una scadenza fissa.
  2. Quando scade l'elemento della cache, fai il tuo lavoro (invia le tue email)
  3. Aggiungere nuovamente l'elemento alla cache con una scadenza fissa.

Questo entra in Global.asax:

private static CacheItemRemovedCallback OnCacheRemove = null;

protected void Application_Start(object sender, EventArgs e)
{
    AddTask("DoStuff", 60);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null, 
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
    // do stuff here if it matches our taskname, like WebRequest
    // re-add our task so it recurs
    AddTask(k, Convert.ToInt32(v));
}

Fonte: link

    
risposta data 08.10.2014 - 09:47
fonte

Leggi altre domande sui tag