2012-08-15 21 views
5

Si agrego elementos de cola de Windows Azure o referencias de almacenamiento de blob desde una aplicación MVC utilizando el SDK de .NET, ¿cuánto tiempo debería durar cada componente?Azure .NET Component Lifetime (CloudQueueClient, CloudQueue etc.)

Para las colas que tienen CloudStorageAccount, CloudQueueClient y CloudQueue.

Para el almacenamiento de blob, tenemos CloudStorageAccount, CloudBlobClient y CloudBlobContainer.

Supongo que sería mejor crear cada componente una vez por solicitud web, pero realmente no importa cuán caro es crear cada elemento. Una vez más, estoy asumiendo que mantener a los clientes entre las solicitudes web con una vida útil única, por ejemplo, no sería un buen plan, pero no tiene nada que hacer.

Respuesta

6

Los objetos .NET son livianos. Ninguno de ellos asignará recursos ni realizará operaciones de red tan solo mediante su creación. Por lo general, no vale la pena el esfuerzo almacenarlos en caché o agruparlos a menos que crees muchos de ellos.

Ni siquiera nos molestamos en almacenarlos en caché por solicitud; solo los creamos según sea necesario y los desechamos. Almacenarlos en caché puede ahorrarle algo de presión sobre el recolector de basura, pero dudo que sea mucho.

+0

¿Cómo sabes que estos son livianos? ¿Está documentado en alguna parte? – John

+0

Podría ser, pero de ser así no podría decirte dónde estaba mi cabeza. Esta también fue una versión principal completa, por lo que puede que ya no sea así. Sugeriría echar un vistazo a la fuente, ya que estos son de código abierto ahora. –

+0

En [Términos básicos de asp.net] (https://docs.asp.net/en/latest/fundamentals/dependency-injection.html#service-lifetimes-and-registration-options), ¿usaría AddTransient CloudStorageAccount? (En lugar de singleton o scoped) – Ciantic