J'ai une exigence de créer un HttpHandler qui servira un fichier image (fichier statique simple) et aussi il va insérer un enregistrement dans la table SQL Server. (par exemple, http://site/some.img, où some.img est un HttpHandler) J'ai besoin d'un objet en mémoire (comme l'objet Generic List) auquel je peux ajouter des éléments sur chaque requête (je dois également prendre en compte quelques centaines ou milliers de requêtes par seconde) Je devrais être capable de décharger cet objet en mémoire dans la table sql en utilisant SqlBulkCopy.Besoin de suggestion pour la file d'attente en mémoire ASP.Net
Liste -> DataTable -> SqlBulkCopy
Je pensais d'utiliser l'objet du cache. Créez un objet Liste générique et enregistrez-le dans HttpContext.Cache et insérez-le à chaque nouvel élément. Cela ne fonctionnera pas car le CacheItemRemovedCallback se déclenchera immédiatement lorsque le HttpHandler essayera d'ajouter un nouvel élément. Je ne peux pas utiliser l'objet Cache comme file d'attente en mémoire.
Tout le monde peut suggérer quelque chose? Serais-je capable d'évoluer à l'avenir si la charge est plus?
Si vous essayez d'insérer des enregistrements un par un, je doute que vous obteniez des performances acceptables. Ce que j'essayais de suggérer est de mettre à jour la base de données dans un volume, avec le nombre d'enregistrements. Jetez un oeil à SqlBulkCopy sur msdn. –
Ah ... OK. Je pense que je vois votre problème maintenant. Vous n'avez pas besoin de replacer l'objet liste dans le cache à chaque requête! Il est là jusqu'à son expiration ou est explicitement supprimé. Utilisez simplement la même liste encore et encore. – Bryan