Introducción a Azure Storage en C#
Azure Storage es un servicio esencial ofrecido por Microsoft Azure, y cuando se combina con tecnologías .NET, se convierte en una potente herramienta para almacenar y recuperar archivos en la nube. En su tutorial en profundidad "Intro to Azure Storage in C#", Tim Corey guía a los espectadores a través de los pasos exactos para configurar una cuenta de Azure Storage, configurar Azure Blob Storage e integrarlo en un proyecto C# ASP.NET Core MVC.
En este artículo, seguiremos de cerca el vídeo de Tim para explorar todas las fases del proceso y hablar de los conceptos y terminologías clave que se utilizan en el desarrollo de Azure en el mundo real.
Precios y planificación de Azure Storage
Tim comienza explicando la eficiencia económica de utilizar Azure Storage en una aplicación C#. Tanto si utilizas un contenedor blob para almacenar archivos de texto, imágenes o datos binarios, el coste sigue siendo mínimo. Presenta la calculadora de precios de Azure para estimar los cargos basados en características seleccionadas como niveles de rendimiento, configuración de redundancia y operaciones de datos.
Tim elige Block Blob Storage en General-purpose v2 en el portal de Azure y configura el nivel de acceso en caliente para los archivos a los que se accede con frecuencia. Asegura que la cuenta de almacenamiento está utilizando almacenamiento redundante local (LRS) para minimizar los costes al tiempo que se mantiene la seguridad.
"Para una aplicación de demostración que almacene 1 GB de datos y unos cuantos miles de operaciones, el coste se reduce a 13 céntimos al mes", explica Tim.
Creación de la cuenta de almacenamiento de Azure
En el portal de Azure, Tim muestra cómo crear un nuevo grupo de recursos y la correspondiente cuenta de almacenamiento de Azure. Las convenciones de nomenclatura son estrictas: los nombres de las cuentas de almacenamiento deben ser únicos, estar en minúsculas y no contener guiones.
Durante la configuración, desactiva el almacenamiento georredundante para ahorrar costes, un consejo fundamental para los desarrolladores que trabajan en prototipos o entornos locales. También permite el acceso anónimo a nivel de contenedor, pero sólo con fines de demostración, advirtiendo que los entornos de producción reales requieren un acceso seguro.

Tim también cubre las claves de acceso, la cadena de conexión y el nombre de la cuenta de almacenamiento, todos ellos esenciales cuando su proyecto de C# se conecta a los recursos de Azure.
Entender Azure Blob Storage
Tim destaca cómo se utiliza un contenedor blob para organizar datos en su cuenta de almacenamiento Azure. Evita crear un nuevo contenedor manualmente a través del portal y, en su lugar, planea generarlo en código utilizando el SDK de Azure for .NET.
Explica que las claves de acceso seguras y la cadena de conexión -visible en la configuración de seguridad de la cuenta- se utilizarán en la aplicación para autenticarse con la biblioteca del cliente de almacenamiento.
Inicio del proyecto ASP.NET Core
Tim crea una aplicación web .NET 9 MVC con Visual Studio. Aunque podría utilizarse cualquier tipo de interfaz de usuario, como Razor Pages o Blazor Server, selecciona MVC para la demostración.
A las 19:35, en secrets.json, almacena credenciales sensibles de forma segura:
-
cadena de conexión
-
clave de la cuenta de almacenamiento
-
nombre del contenedor
- nombre de la cuenta de almacenamiento

Tim explica que appsettings.json no debe contener secretos, ya que se envía a repositorios de código fuente. En su lugar, los secretos deben almacenarse localmente utilizando Secretos de Usuario, especialmente durante el desarrollo.
Instalación de los paquetes NuGet necesarios
Para interactuar con Azure Blob Storage, Tim instala el paquete Azure.Storage.Blobs NuGet. Aprecia cómo Microsoft ha modularizado las funciones mediante el SDK de Azure, lo que permite aplicaciones más pequeñas y fáciles de mantener.

"En lugar de agruparlo todo en el framework, ahora se obtiene exactamente lo que se necesita -como la biblioteca de clientes Azure Blob- a través de NuGet", señala Tim.
Patrón de configuración de opciones para Azure Storage
A continuación, Tim crea una clase POCO (BlobStorageOptions) para que coincida con las claves de su configuración. Utiliza el patrón de opciones para vincular la configuración a objetos fuertemente tipados, lo que permite una configuración centralizada y comprobable.
Esta configuración facilita que la aplicación .NET utilice la configuración de Azure de forma coherente en todos los entornos.
Implementación de la lógica del servicio de almacenamiento de bloques
Tim añade una nueva carpeta llamada DataAccess e implementa una clase llamada BlobStorage.cs. Dentro, inyecta la configuración utilizando IOptions
Construye dos métodos asíncronos principales:
Lógica de carga de archivos
El método UploadFileAsync:
-
Acepta un IFormFile desde el front-end MVC.
-
Crea un BlobContainerClient a partir del SDK de Azure Storage utilizando la cadena de conexión y el nombre del contenedor.
-
Comprueba si existe un contenedor o crea uno nuevo si no existe.
-
Establece la política de acceso en Ninguno, para garantizar que el contenedor no sea de acceso público.
- Utiliza un objeto BlobClient para cargar el archivo desde un flujo.
Tim utiliza una sentencia using y una llamada await para manejar el flujo de archivos de forma segura, evitando fugas de memoria.
Lógica de archivos de descarga
En DownloadFileAsync, Tim:
-
Acepta un nombre de archivo de cadena o un blob URI completo.
-
Crea un nuevo BlobClient utilizando el URI y las credenciales seguras.
-
Descarga el archivo mediante DownloadStreamingAsync.
- Envuelve el flujo en un FileContentResult para permitir las descargas desde el navegador.
Esto garantiza que los archivos permanezcan seguros y que solo se pueda acceder a ellos a través de la aplicación, no directamente a través de la adivinación de URL.
Registro de almacenamiento Blob con inyección de dependencias
Tim define una interfaz (IBlobStorage) para su clase y la registra como Singleton en el contenedor .NET DI. Dado que la clase no tiene estado y sólo utiliza valores de configuración, Singleton es óptimo.
Integración con la aplicación MVC
El controlador de inicio se modifica para utilizar IBlobStorage. Contiene:
-
Un método UploadFile POST que valida la entrada y llama a UploadFileAsync.
- Un método GetFile POST que comprueba la URL y luego llama a DownloadFileAsync.
Cada método interactúa con el cliente de almacenamiento para gestionar de forma segura los archivos blob, tanto si se cargan como si se descargan.
Vista de interfaz de usuario de Razor para operaciones con archivos
En Index.cshtml, Tim configura:
-
Un formulario para cargar archivos con input type="file" y estilo Bootstrap.
-
Un segundo formulario para descargar un archivo utilizando su URI.
-
Gestión de mensajes de error para casos extremos como archivos que faltan o URI no válidos.
- Una sección de visualización que muestre el blob URI generado (https) tras una carga correcta.
Tim también gestiona los errores utilizando una List
Comprobación y verificación de la seguridad de los archivos
Tim carga un archivo de texto e intenta acceder al URI directamente en el navegador: falla, como era de esperar, debido a la política de acceso None.
Tras cambiar temporalmente el nivel de acceso en el portal de Azure, el archivo puede descargarse a través de un enlace directo. Sin embargo, enseguida lo cambia a privado, haciendo hincapié en cómo Azure proporciona un control detallado de la seguridad.
Recomendaciones finales de Tim
Tim concluye recordando a los desarrolladores que Microsoft Azure ofrece mucho valor incluso con una inversión mínima. Con herramientas como:
-
Paquetes NuGet
-
SDK de Azure
-
Visual Studio
-
Portal Azure
- Cadenas y claves de conexión seguras
puede crear rápidamente una solución de almacenamiento lista para la producción utilizando C#. Tanto si está trabajando en un sistema a gran escala como en un pequeño proyecto de prueba, Azure Blob Storage es una opción escalable y rentable.
Pagas por lo que usas en la nube, así que pide solo lo que necesites", subraya Tim.
Resumen
Desde la creación de una cuenta de almacenamiento y la configuración de contenedores blob, hasta el manejo seguro de cargas y descargas en una aplicación MVC, Tim Corey proporciona instrucciones detalladas que cubren todo el ciclo de vida del uso de Azure Storage con .NET.
Con esta guía y el vídeo de Tim, puede empezar a utilizar Azure Blob Storage con confianza, manteniendo el control, minimizando los costes y respetando las mejores prácticas de desarrollo en la nube.
Echa un vistazo a su vídeo completo para mayor claridad y a su Canal de YouTube para obtener más contenido perspicaz sobre el almacenamiento en Azure (C#).
