domingo, 28 de noviembre de 2021

Definición de Ocelot gateway en una Api Web Mínima Net 6

Para los amigos que ya estan pasando sus aplicaciones a Net 6 o bien estan revisando los temas relacionados con el nuevo Framework Net 6.

Las Apis Minimas son una nueva mejora introducida en esta versión 6. que  Minimiza el código para facilitar la legibilidad, hacerlo más eficiente y fácil.

Aquí las 6 líneas para definir el Gateway de Ocelot en Net 6.

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddJsonFile($"ocelot.json", optional: false, reloadOnChange: true);

builder.Services.AddOcelot();

var app = builder.Build();

app.UseOcelot();

app.Run();

En el archivo del proyeto agregamos algunos Global Using para reducir la cantidad de líneas.  A continuación la sección agregada de los Goblal Using:

  <ItemGroup>

    <Using Include="Ocelot.DependencyInjection"/>

    <Using Include="Ocelot.Middleware"/>

  </ItemGroup>


Y por ultimo recordad amigos que el archivo json de ocelot según las especificaciones a 28/11/2021 deberaís utilizar Routes en vez de Reroutes y que la parte de configuración de DownstreamHostAndPorts va unidad y es un arreglo de objetos. como muestra abajo:

"DownstreamHostAndPorts": [

        {

          "Host": "localhost",

          "Port": 9901

        }

      ]

Archivo completo de  ocelot.json básico a continuación:

{

  "Routes": [

    {

      "DownstreamPathTemplate": "/api/customers",

      "DownstreamScheme": "https",

      "DownstreamHostAndPorts": [

        {

          "Host": "localhost",

          "Port": 9901

        }

      ],

      "UpstreamPathTemplate": "/customers",

      "UpstreamHttpMethod": [ "Get" ]

    },

    {

      "DownstreamPathTemplate": "/api/products",

      "DownstreamScheme": "https",

      "DownstreamHostAndPorts": [

        {

          "Host": "localhost",

          "Port": 9902

        }

      ],

      "UpstreamPathTemplate": "/products",

      "UpstreamHttpMethod": [ "Get" ]

    }

  ],

  "GlobalConfiguration": {

    "RequestIdKey": "OcRequestId",

    "AdministrationPath": "/administration"

  }

}

Net64Fun!,

Juan Manuel Herrera Ocheita




jueves, 25 de noviembre de 2021

Asistente para actualizar tu aplicación Web MVC 5 en Net 6

 Net 6 viene con todo y para todos.  Y eso incluye un asistente para actualizar tus aplicaciones "Legacy" hacia Net 6 (la versión multiplataforma, de soporte extendido y de alto rendimiento).

El asistente se llama Upgrade Assistant.

Lo puedes instalar desde la línea de comando si tienes ya instalado Net 6 SDK con la siguiente línea:

dotnet tool install -g upgrade-assistant

Y para realizar un análisis de tu solución ejecuta la siguiente línea de comando desde el directorio de la solución:

upgrade-assistant analyze .

Nota:  No olivides el punto al final.




Esto generará un reporte que puedes ver desde VSCode con SARIF Viewer, como se muestra abajo:



Cuando ya hayas revisado en detalle el reporte y te decidas a actualizarlo (obvio en una carpeta de pruebas y no directamente en el repositorio local de tu proyecto).  Puede ejecutar la actualización del proyecto con la siguiente línea de comando:

upgrade-assistant upgrade

Net64Fun!;)


Juan Manuel Herrera Ocheita

lunes, 22 de noviembre de 2021

Net 6 and VS 2020 really Rocks!!! (realemente esta buenisimo)

Net 6 es un parte aguas para el desarrollo en el mundo empresarial, una única flataforma para desarrollar en todos los dispositovos, es rápido, ágil y escribiremos mucho menos código del que estamos acostumbrados.

Opciones como HotReload, harán nuestro trabajo más productivo y eficiente.

Apis mínimas o Minimal Web Apis.    Esto no solo se trata de escribir menos lineas de código es necesario cambiar de paradigma, pensar en  "micro" servicios y organizar tu aplicación de tal forma que aproveches esta arquitectura.  No es para todos ni para todas las aplicaciones pero tiene un gran potencial si encuentras como aprofecharlas.

Estamos ya finalmente sobre 64 bits, full en VS 2020, hasta el VS 2019 corre mas rapido dese que instale la ultima actualización del producto.  Esto lo podemos disfrutar con el intelllisense que vuela y mucho mas sugerencias nos hace que las versiones anteriores... relamente Rocks!.

No quiero dejar de mencionar el manejo de nulos que es el mayor error que sucede en la programación en el ambiente .NET. así que me parece genial que ya haya una alternativa para minimizar este error que agobia a tantos usuarios y programadores incautos que no validan los nulos.

Aquí una probadita de lo que les menciono amigos de la codificación.

jueves, 18 de noviembre de 2021

Ocelot error The remote certificate is invalid according to the validation procedure

 Este error es producido por el gateway de ocelot  cuando se instala un self certificate, por lo que hay que configurar el archivo json de ocelot para que acepte cualquier certificado (no se recomienda para ambientes productivos).

"Routes": [
    {
      "DownstreamPathTemplate": "/api/Tareas/{id}",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
          "Host": "myDebServerName",
          "Port": 444
        }
      ],
      "UpstreamPathTemplate": "/api/tareitas/{id}",
      "UpstreamHttpMethod": [ "POST", "PUT", "GET" ],

      "DangerousAcceptAnyServerCertificateValidator": true
    }
Gracias a David Ayala y a stackoverflow por el tip.
.net core - Ocelot Disable SSL validation with "DangerousAcceptAnyServerCertificateValidator" - Stack Overflow

Code4Fun!,
Juan Manuel Herrera Ocheita


miércoles, 10 de noviembre de 2021

Crear un certificado propio desde powershell en Windows Server 2016 en adelante

Muchas veces es necesario crear certificados SSL de consumo interno dentro de una red local para ambientes de pruebas, pilotos y a veces de producción.

Desde powershell podemos invocar el comando

New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My

Luego ya podemos utilizarlo en IIS y aplicarlo a los sitios web.

Algunas veces se debe de copiar el certificado de la carpeta personal a Trusted Certificate, esto ayuda a que el navegador no despliegue el certificado como invalido.


Para ello se invoca desde el servidor mmc y se agrega el add-in Server Certificates.


PowerShell4Fun!,


Juan Manuel Herrera Ocheita