Descargar archivos grandes desde Azure Storage con Firmas de acceso compartido (SAS) – SDK v12

Descargar archivos grandes desde Azure Storage con Firmas de acceso compartido (SAS) – SDK v12

Si bien el funcionamiento es similar a la v11, se utiliza la librería Azure.Storage.Blobs de código abierto en lugar del paquete WindowsAzure.Storage:

AccountSasBuilder sasBuilder = new AccountSasBuilder()
{
    Services = AccountSasServices.Blobs | AccountSasServices.Files,
    ResourceTypes = AccountSasResourceTypes.All,
    ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
    Protocol = SasProtocol.Https
};

sasBuilder.SetPermissions(AccountSasPermissions.Read); // | AccountSasPermissions.Write

StorageSharedKeyCredential key = new StorageSharedKeyCredential("MiNombreDeCuenta","MiClaveDeCuenta"));

// Generar a partir de la clave de acceso, el token SAS:
string sasToken = sasBuilder.ToSasQueryParameters(key).ToString();

// Generar la dirección URL completa incluyendo el token SAS:
UriBuilder fullUri = new UriBuilder()
{
    Scheme = "https",
    Host = string.Format("{0}.blob.core.windows.net", CloudConfigurationManager.GetSetting("accountName")),
    Path = string.Format("{0}/{1}", nombreContainer, nombreArchivo),
    Query = sasToken
};
				
Response.Redirect(fullUri.Uri)

De este modo mantenemos de forma más segura el acceso a ficheros dentro de containers con control de tiempo de expiración y permisos de usuario.

.NET 5: un Framework para todo

.NET 5: un Framework para todo

En 2002 apareció la primera versión de .NET, han pasado casi 20 años y el escenario de desarrollo de aplicaciones monolíticas ha ido diversificándose: microservicios distribuidos, aplicaciones multiplataforma, dispositivos IoT, inteligencia artificial, virtualización, contenedores… El contexto y requerimientos ha cambiado, como todo en informática, ¿Quién se imaginaría a comienzos de siglo que Microsoft sería miembro de Linux Foundation y .NET pasaría a ser Open Source?

Leer más

Evaluar migración a .NET Core

Tarde o temprano nos encontraremos con la migración de frameworks/tecnologías y .NET no iba a ser una excepción. Utilizaremos la herramienta .NET Portability Analyzer para un primer vistazo a nuestras librerías y aplicaciones teniendo como objetivo aplicaciones multiplataforma, microservicios, dockers… en la nube.

Debemos tener claro antes de empezar, la recomendación general de Microsoft actualmente es utilizar .NET Core si tenemos que añadir nuevas funcionalidades en background, por el momento .NET Framework y .NET Core son complementarias. La mayor parte de las API de .NET Core se comparten con .NET Framework

Aclarado esto, con la extensión para Visual Studio 2019 instalada ya podemos iniciar el análisis que nos ayudará a identificar las dependencias externas. Dentro de la configuración de la extensión podemos fijar nuestro objetivo. Todas las acciones tienen su equivalente en línea de comandos.

Leer más

C# 9: propiedades iniciales y datos

Desde el año 2000 han sido muchas las modificaciones y mejoras en el lenguaje, a veces cuesta acostumbrarse a estas nuevas funcionalidades, veamos que nos depara 20 años después:

Es posible declarar el valor de propiedades en el momento de creación de un objeto, no es posible modificar a posteriori estos valores.

1
2
3
4
5
public class Vehiculo
{
    public string Marca { get; init; }
    public string Modelo { get; init; }
}

Por tanto, si todas las propiedades de un objeto con valores primitivos (int, double…) son de solo lectura (inmutables), nos acercamos a la definición de estructura (struct). Recordemos que las estructuras contienen valores y las clases referencias a valores, el ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Vehiculo
    public int Potencia; 
    public Vehiculo(int pot) 
    
        this.Potencia = pot; 
    
 
Vehiculo a = new Vehiculo(120); 
Vehiculo b = a; 
a.Potencia = 200; 
 
System.Console.WriteLine(b.Potencia);
Leer más

ResolveUR: Error durante la instalación

La extensión ResolveUR todavía no tiene el archivo de instalación adaptador a Visual Studio 2019 pero funciona como en versiones anteriores, deberemos adaptar el fichero de instalación VSIX

This extension cannot be installed because the following references are missing: Microsoft.VisualStudio.Component.CoreEditor

Dentro del fichero catalog.json sustituimos:

"Microsoft.VisualStudio.Component.CoreEditor":"[15.0.26208.0,16.0)"}

Por la versión de VS2019:

"Microsoft.VisualStudio.Component.CoreEditor":"[15.0,17.0)"}

Continuará con la ejecución como en versiones anteriores:

Descargar ResolveUR_MOD_VS2019.zip (46,35 kb)