Ir al contenido principal

Ocelot Gateway y microservicios con .Net Core

Microservicios es una de las arquitecturas más usadas para grandes aplicaciones hoy en día, una vez el proyecto ha alcanzado un tamaño considerable debemos sopesar si lo mejor es dividir este en módulos de tal forma que cada uno de estos tenga una tarea independiente y un grupo de métodos propios, de esta forma facilitamos el mantenimiento, el rendimiento, la escalabilidad y podemos dividir nuestros grupos de desarrollo de tal forma que cada cual pueda enfocarse en una tarea en particular.
Los Microservicios al final vendría siendo una colección de APIs cada una lo mas independiente posible de la otra, cada una con sus tareas, cada una con su propia base de datos, Ocelot Gateway nos permite agrupar todas estas APIs en una (o las que necesitemos) puertas de entrada, de tal forma que expongamos un solo conjunto de APIs a los clientes y no varias regadas a través de los diferentes microservicios.

Empecemos.


En este ejemplo construiremos una API y adicionaremos Ocelot Gateway para hacer el enrutamiento. Usaremos .Net Core 3.1.

Creamos la API.

Creamos un nuevo proyecto elegimos "ASP Net Core Web application", al proyecto lo llamamos "APICliente"  y la solución la nombramos "MicroserviceSln".
Creamos una carpeta llamada "Modelos" y dentro creamos una clase llamada "ClienteModel" con la información de nuestro cliente:


A continuación creamos una carpeta llamada "DataAccess" y dentro creamos una clase llamada "ClienteDataAccess" con los métodos que simularan el acceso a la base de datos:


Una vez creado nuestro acceso a datos procedemos a crear el controlador, así damos clic sobre la carpeta controllers y agregamos uno nuevo llamado "ClienteController", este manejará los llamados hechos a la aplicación:


Hemos creado nuestra API y podemos hacer llamados desde Postman o el navegador.

Creamos la API Gateway.

Clic derecho sobre la solución->Agregar->Proyecto, elegimos "ASP Net Core Web application", le ponemos el nombre "APIGateway" clic en siguiente elegimos "Empty" como el tipo de proyecto.
Cuando este creado el proyecto damos clic derecho en "Dependencies"-> Administrar Nuget Packages y Buscamos "Ocelot" y lo instalamos.
Luego vamos a "Program.cs" y agregamos el metodo "ConfigureAppConfiguration" de la propiedad "CreateHostBuilder" de tal forma que quede así:


A continuación vamos a la clase "StartUp.cs" y necesitamos agregar unas cuantas lineas para configurar nuestra herramienta, en el metodo "ConfigureServices" agregamos "services.AddOcelot()" y en el metodo "Configure" agregamos "app.UseOcelot()", también modificamos "app.UseEndpoints" y le indicamos que use el método "endpoints.MapControllers()" al final nuestra clase debe lucir así:


Configuramos ocelot.json

Ahora necesitamos crear el archivo ocelot.json, el mismo que indicamos en "Program.cs", para esto primero le daremos un vistazo general y luego discutiremos cada elemento:




  • El primer elemento que podemos ver es "ReRoutes" y es la lista de la rutas que vamos a configurar.
  • "DownstreamPathTemplate" la ruta a la cual vamos a redirigir la llamada.
  • "DownstreamScheme" el protocolo de transferencia.
  • "DownstreamHostAndPorts"->"Host" El servidor al que haremos la llamada.
  • "DownstreamHostAndPorts"->"Port" El puerto.
  • "UpstreamPathTemplate" la ruta por la cual entrará la llamada.
  • "UpstreamHttpMethod" el tipo de método http solicitado.
Con este tipo de configuración podemos ver como si hacemos la llamada por "https://localhost:44344/cliente" nos redirigirá a "https://localhost:44375/api/cliente" y nos retornará la información solicitada.

Comentarios

Entradas más populares de este blog

Configurar Entity Framework en .Net Core 3.1, usando SQL Server.

En el post de hoy aprenderemos como configurar Entity framework (EF) para trabajar en una aplicación .Net. Entity es un Framework ORM (Mapeo Objeto-Relacional) que nos permite acceder más fácilmente a la base de datos, funciona de tal forma que los objetos de negocio están directamente relacionados con las tablas y columnas de la base de datos. Hay tres formas de programar en EF: Code First, Database First y Model First para este caso usaremos la primera, Code Firs como su nombre lo indica significa que primero programamos y luego usamos EF para construir la base de datos. Para este ejemplo usaremos Visual Studio 2019 y .Net Core 3.1. Empecemos. Para este ejemplo utilizaremos dos proyectos, uno como Interfaz y otro como una librería de acceso a datos, esto con el objetivo de que nuestra solución implemente la separación de intereses (separation of concerns). Creamos los proyectos. Crearemos dos proyectos, para el primero elegimos una aplicación " ASP.Net Core Web Ap...

Blazor en .Net Core, C# para front end.

Microsoft ha liberado recientemente una de sus nuevas herramientas de programación, esta es blazor, esta herramienta nos permite crear aplicaciones web usando C# en vez de javascript!!, de tal forma nuestra aplicacion es programada tanto en el Front End como en el Back End con C#, en potencia es una gran ayuda ya que nos liberaría de tener que usar un lenguaje aparte para la interfaz gráfica como lo es javascript (con sus diferentes frameworks) que es todo un stack de desarrollo. Estuve dando un vistazo a esta herramienta y quiero compartirles como fue mi experiencia, para este ejemplo he utilizado visual studio community edition 2019, la versión con nos permite trabajar con las ultimas características de .Net core. Empecemos. Primero por supuesto creamos el proyecto y elegimos Nuevo proyecto -> "Blazor App", elegimos un nombre para la aplicación, lo mismo para la solución y damos clic en crear, luego hay una lista con el tipo de proyecto Blazor que queremos crear,...