Comment mettre en file d'attente des tâches d'arrière-plan dans l'API Web ASP.NET

J'ai un webapi qui est conçu pour traiter les rapports dans une file d'attente de la mode. Les étapes de l'application sont les suivantes:

  • Recevoir le contenu
  • Carte le contenu d'un objet et de le placer dans la file d'attente
  • Sondage pour les éléments en attente dans la file d'attente
  • Éléments de processus dans la file d'attente, un à un

Je pensais l'utiliser Entity Framework pour créer une base de données de la file d'attente des éléments, tels que:

public class EFBatchItem
{
    [Key]
    public string BatchId { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateCompleted { get; set; }
    public string BatchItem { get; set; }
    public BatchStatus Status { get; set; }
}

Ma question existe - il un moyen plus efficace, à l'aide de NServiceBus, BlockingCollection ou ConcurrentQeueue, que de constamment interroger la base de données et de sortir en attendant les éléments un par un? Je n'ai pas utilisé les files d'attente.

Une seule pensée est de créer une file d'attente de tâches, et sur un thread séparé traiter toutes les tâches en attente. Un peu similaire à Le moyen le plus efficace pour traiter une file d'attente avec les threads mais je veux m'assurer que je vais l'itinéraire le plus efficace.

EDIT:
Une grande question que je me pose ici est la meilleure façon d'afficher la progression de l'utilisateur. Une fois que l'utilisateur envoie le contenu, il obtient redirigé vers une nouvelle page, et peut afficher l'état par l'identificateur de lot. Est MSMQ nécessaire, ou NServiceBus, afin d'informer l'utilisateur? Cela semble être une variation de la Demande/Reconnaissent/Push paradigme?

source d'informationauteur appsecguy