¿Debo crear instancias de CloudStorageAccount y CloudBlobClient cada vez que deseo obtener blob del almacenamiento? Por ejemplo, implementé un proveedor de ruta virtual personalizado para trabajar con un almacenamiento de blobs. Cuál es la mejor solución de diseño: creación de instancias de CloudStorageAccount y CloudBlobClient una vez como campos privados de mi proveedor de rutas virtuales personalizado, o uso de una utilidad con métodos estáticos (compartidos) que crea instancias de CloudStorageAccount y CloudBlobClient cada vez que quiero obtener un blob de un ¿almacenamiento? ¿Qué tan caro es desde el punto de vista del rendimiento?¿Qué tan caro es la creación de instancias de CloudStorageAccount o CloudBlobClient desde el punto de vista del rendimiento?
Respuesta
Puede reutilizar CloudStorageAccount y CloudBlobClient ya que no tienen ningún estado (ver la respuesta de Steve Marx en el enlace de Simon). El SDK es de código abierto y puede simplemente look at the source on GitHub.
Si echas un vistazo a la clase CloudStorageAccount, puedes ver que su objetivo principal es asegurarte de que termines con StorageCredentials con Blob/Queue y TableEndpoint. Al observar el constructor del CloudBlobClient, puede ver que almacena las credenciales de almacenamiento, el punto final Uri y algunos valores predeterminados.
No hay nada complicado aquí y no hay ninguna E/S de red lo que significa que el procesamiento es muy barato. Pero cuando piensas en el rendimiento, cada pequeña optimización puede ser útil, así que puedes almacenarla de forma segura en una variable estática (esto puede afectar las pruebas de tu unidad) o si usas un contenedor IoC puedes elegir usar una única instancia para todo el contenedor.
Ahora debe tener algo en cuenta. Tanto su CloudStorageAccount como su CloudBlobClient guardarán las credenciales de almacenamiento y el punto final Uri. Pero, ¿qué ocurre si cambia esta información a través del portal (es posible que haya cambiado la clave de su cuenta de almacenamiento)? Si almacena una instancia única de CloudStorageAccount/CloudBlobClient, es posible que necesite manejar el evento RoleEnvironment.Changing para 'actualizar' estos objetos con la nueva información de la cuenta de almacenamiento.
Si este es el caso, entonces por qué estoy recibiendo un error, http://stackoverflow.com/questions/24229288/parallel-blob-upload-throwing-404-bad-request-intermittently – user960567
- 1. ¿Qué tan caro es Thread.getStackTrace()?
- 2. ¿Qué tan caro es recargableData de UITableView?
- 3. ¿Qué tan caro es el estado de bloqueo?
- 4. ¿Qué tan caro es .getClass() en Java?
- 5. ¿Qué tan "caro" es Oracle Enterprise Manager?
- 6. ¿Por qué el código GUI es tan costoso desde el punto de vista computacional?
- 7. ¿Qué tan caro es leer las propiedades del archivo? .NET
- 8. ¿Qué tan caro es lanzar un objeto?
- 9. ¿Qué tan significativo es el factor de rendimiento del bazar?
- 10. ¿Qué tan caro es el tiempo de llamada (NULL) en el bucle del servidor?
- 11. ¿Qué tan caro es el tamaño de llamada() en Lista o Mapa en Java?
- 12. ExpandoObject vs. Dictionary desde un punto de vista de rendimiento?
- 13. ¿Qué tan caro es el volcado de hilos de Java (Solr)?
- 14. ¿Por qué DateTime.Now DateTime.UtcNow tan lento/caro?
- 15. EJB Vs WebService? Punto de vista del rendimiento
- 16. preguntas sobre el desarrollo del juego desde el punto de vista del desarrollador web
- 17. ¿Qué tan rápido es la creación de instancias de clase con métodos, pero no campos ni propiedades?
- 18. Entity Framework + MySQL - ¿Por qué el rendimiento es tan terrible?
- 19. ¿Qué tan costoso es JOINs en SQL? Y/o ¿cuál es la compensación entre el rendimiento y la normalización?
- 20. Python: ¿Qué tan caro es crear una pequeña lista muchas veces?
- 21. ¿Qué tan caro es crear un nuevo hilo en Java? ¿Cuándo deberíamos considerar el uso de un grupo de subprocesos?
- 22. javascript/dom - ¿Qué tan caro es crear vs reorganizar nodos dom?
- 23. reutilización de objetos CloudBlobClient
- 24. Desde el punto de vista de la arquitectura, ¿cuál es la mejor aproximación a la sesión [] o las cookies cifradas?
- 25. ¿es posible la creación de instancias de plantilla explícita recursiva?
- 26. ¿Qué tan caro es realizar una operación de lanzamiento Vs i ++?
- 27. ¿Por qué la optimización del enlazador es tan pobre?
- 28. ¿Qué tan estable es el lenguaje Groovy?
- 29. ¿Por qué la salida de la consola es tan lenta?
- 30. Vista de desplazamiento y rendimiento de la vista de tabla al cargar imágenes desde el disco
, consulte http://stackoverflow.com/a/9934393/468244 ... porque la creación no es "gratuita" y la reutilización normalmente no es un problema que probablemente debería preferir reutilizar. –
Ok. Gracias. Pero, ¿estas instancias son seguras en el contexto de VirtualPathProvider? Como entendí, solo hay una instancia de VirtualPathProvider por aplicación (si creo una nueva instancia y la registro en global.asax en application_start), ¿entonces no debería haber ningún problema con una seguridad de hilos? – eternity
como @sandrino afirmó que no debería haber problemas con los hilos. Dependiendo de su aplicación, también podría ser necesario mantener 'CloudBlobContainer's después de' CreateIfNotExist' en ellos. Pero eso depende del caso de uso. –