
Introducción al curso de Arquitectura Limpia en .NET
En esta clase veremos que es una Arquitectura de Software
En esta clase veremos lo que es Clean Architecture
En esta clase veremos que es C# y .NET, las tecnologías que utilizaremos en este curso.
En esta clase veremos lo que son los paradigmas de programación.
En esta clase veremos lo que es la programación estructurada
En esta clase veremos como crear un proyecto en visual studio para C# .NET
En esta clase veremos el concepto de variable, las cuales nos acompañarán a lo largo de todo código que hagamos en C#.
En esta clase veremos lo que son los arrays, los cuales nos permitirán guardar colecciones de valores.
En esta clase veremos las sentencias condicionales, las cuales nos servirán para dar nuevos escenarios al flujo de nuestro programa.
En esta clase veremos las sentencias de iteración o repetición.
En esta clase veremos el concepto de funciones en programación.
En esta clase veremos un ejemplo de programa utilizando solo programación con él paradigma estructurado.
En esta clase veremos que es el paradigma orientado a objetos
En esta clase veremos lo que son las clases y objetos
En esta clase veremos los métodos constructores de clases
En esta clase vamos a ver que son los campos y propiedades, estas segundas algo que existe en C# y nos dan flexibilidad a la hora de manejar la información de nuestros objetos.
En esta clase veremos los espacios de nombres.
En esta clase veremos el concepto de herencia en programación orientada a objetos.
En esta clase veremos el concepto de encapsulamiento en programación orientada a objetos.
En esta clase veremos la sobrecarga de métodos, una cualidad de la programación orientada a objetos que permite tener métodos con el mismo nombre pero con distinto comportamiento.
En esta clase veremos la sobreescritura de métodos, una característica que tiene la programación orientada a objetos para poder remplazar métodos de las clases padres.
En esta clase veremos el concepto de abstracción y el uso de clases abstractas.
En esta clase veremos el polimorfismo con clases abstractas, una forma de tener comportamientos distintos en nuestros objetos.
En esta clase vamos a ver el concepto de Interface, las cuales son la base de la Arquitectura de Software.
En esta clase veremos los Generics, un mecanismo para reutilizar funcionamiento sin estar ligado al tipo de dato.
En esta clase veremos la definición static, con la cual las propiedades y métodos pertenecen a la clase y no al objeto.
En esta clase veremos que es el paradigma funcional.
En esta clase veremos lo que define a una función pura en programación funcional.
En esta clase veremos que es una función de primera clase.
En esta clase veremos los delegados, un tipo de mecanismo que tiene C# para definir tipos de funciones.
En esta clase veremos las expresiones lambda, útiles para crear funciones anónimas.
En esta clase veremos como definir tipos de funciones que retornan siempre un valor utilizando el delegado definido Func.
En esta clase vamos a ver lo que es una función de orden superior.
En esta clase veremos el tipo de delegado Predicate, el cual es utilizado para condiciones.
En esta clase veremos que son los principios SOLID.
En esta clase veremos el Principio de responsabilidad única.
En esta clase veremos el principio abierto/cerrado con el cual permitiremos la creación de nuevo funcionamiento, sin necesidad de modificar el código ya escrito.
En esta clase vamos a ver el principio de sustitución de Liskov, con el cual protegemos nuestros sistemas de herencias innecesarias y comportamientos no esperados.
En esta clase aprenderemos que es el principio de segregación de interfaces.
En esta clase vamos a ver el principio de inversión de dependencia, el cual hace que dependamos de abstracciones y no de implementaciones.
En esta clase veremos lo que es un componente
En esta clase veremos el principio llamado en inglés "The Reuse-Release Equivalence Principle" el cual nos indica que los componentes deben ser reutilizables y distribuidos de manera equivalente, con ayuda de versionamiento.
En esta clase veremos The Common Closure Principle, un principio que nos indica que las clases dentro de un componente deberían cambiar juntas.
En esta clase veremos The Common Reuse Principle, un principio que nos indica cuando las clases deben ir juntas en un componente y cuando no.
En esta clase veremos el Acyclic Dependencies Principle, un principio que evita los ciclos en las dependencias entre componentes.
En esta clase veremos The Stable Dependencies Principle, un principio que sugiere depender componentes estables sin cambios, de otros igual o más estables.
En esta clase veremos Stable Abstractions Principle, un principio que nos indica que los componentes mas estables deberían contener interfaces y clases abstractas, por lo contrario, los componentes menos estables deberían tener clases y pocas interfaces y clases abstractas.
En esta clase comenzaremos a abordar que es una arquitectura de software
En esta clase hablaremos sobre que es y que hace un Arquitecto de Software.
En esta clase hablaremos de las 2 cosas que componen todo sistema: las políticas y los detalles.
En esta clase veremos la manera como se organiza la comunicación entre componentes.
En esta clase veremos un ejemplo de la comunicación entre componentes con código.
En esta clase veremos el patrón de diseño inyección de dependencias.
En esta clase vamos a ver la diferencia entre componentes de algo nivel y bajo nivel, y como estos conviven en una Arquitectura.
En esta clase veremos el concepto de capa.
En esta clase veremos que es Clean Architecture.
En esta clase veremos la regla de dependencia.
En esta clase veremos unas aclaraciones necesarias ya que existen distintos ejemplos en internet de Clean Architecture que no son idénticos a las capas que veremos en este curso, pero no por ello, son malos ejemplos, o no son clean architecture.
En esta clase vamos a ver que es la capa de Entities o de Enterprise de Clean Architecture.
En esta clase veremos la capa de Use Case.
En esta clase vamos a ver que es la capa Interface Adapters.
En esta clase pondremos en la capa Interface Adapters un componente que contenga Entity Framework.
En esta clase veremos el patrón Repository con el cual llevaremos la responsabilidad de la base de datos junto a Entity Framework.
En esta clase veremos la capa Frameworks y Drivers, la encargada de los detalles y cosas menos importantes.
En esta clase crearemos la base de datos, la cual está en la capa Frameworks y Drivers.
En esta clase crearemos el API parte de la capa Frameworks y Drivers.
En esta clase veremos como agregar los componentes a nuestra API por medio de Inyección de dependencias.
En esta clase vamos a crear un componente para almacenar Modelos, los cuales representarán la información de la base de datos.
En esta clase haremos el componente Models.
En esta clase veremos como podemos reutilizar interfaces utilizando Generics
En esta clase analizaremos si el componente Repository debe regresar Models o Entities.
En esta clase vamos a ver que son los presenters.
En esta clase crearemos la interfaz IPresenter en la capa aplicación.
En esta clase vamos a ver como hacer un Presenter y un ViewModel.
En esta clase vamos a ver lo que es un Mapper y DTO
En esta clase vamos a crear el componente Mappers junto con el caso de uso que lo utilizará como implementación de una interfaz de nombre IMapper.
En esta clase vamos a inyectar el Mapper para poder utilizarlo en el proyecto de API en la capa Frameworks y Drivers.
En esta clase analizaremos los componentes y las capas utilizadas en nuestro proyecto siguiendo Clean Architecture.
En esta clase veremos como hacer nuestras Excepciones propias, y como son parte del flujo de una aplicación.
En esta clase haremos un Middleware en el API para interceptar Excepciones.
En esta clase vamos a utilizar Fluent Validation para hacer validaciones que solo aplicaran a un Framework y no generalmente.
En esta clase vamos a ver como se puede implementar lógica de presentación en los Presenters, y a su vez, como un caso de uso puede tener distintas implementaciones en sus elementos abstractos.
En esta clase veremos como vamos a organizar el trabajar con un servicio tercer, siendo servicio tercero: un web service, una biblioteca, un servicio de pago, la nube.
En esta clase vamos a agregar lo necesario en la capa Enterprise y Aplication para trabajar con servicios terceros.
Url del servicio: https://jsonplaceholder.typicode.com/posts
En esta clase vamos a hacer el Adapter para IExternalServiceAdapter que transformará la información para poder ser leída por la capa de aplicación.
En esta clase implementaremos la interfaz IExternalService, donde pondremos la funcionalidad para hacer solicitudes HTTP a un servicio tercero.
En esta clase veremos como utilizar el servicio externo ya programado en nuestra API en la capa Frameworks & Drivers.
En esta clase vamos a utilizar la inyección de elementos HTTPClient para evitar crear este objeto en una clase.
En esta clase veremos como Clean Architecture nos permite hacer uso de lo ya programado por otros Frameworks de manera rápida.
En esta clase vamos a crear los Entities necesarios para generar una Venta
En esta clase haremos el caso de uso para generar una venta.
En esta clase crearemos el Mapper para transformar la información de entrada a un entity de Venta.
En esta clase vamos a crear los Modelos de la Venta, los modelos son los objetos que usaremos en representación de las tablas en la base de datos.
En esta clase vamos a agregar los Modelos al Context de Entity Framework.
En esta clase haremos las tablas de la base de datos.
En esta clase vamos a crear el Repository para realizar las operaciones de Venta en la base de datos.
En esta clase implementaremos la ejecución desde el API para generar una Venta.
En esta clase haremos el caso de uso para obtener las ventas.
En esta clase implementaremos el Endpoint para obtener ventas en el API
En esta clase veremos como hacer interfaces que reciban funciones de primera clase, esto, para ahorrar el no tener que hacer tantos métodos.
En esta clase vamos a implementar la interfaz para búsqueda avanzada en el componente Repository.
En esta clase vamos a crear el Endpoint para ejecutar el caso de uso que recibe funciones como parámetro para realizar una búsqueda avanzada.
Este curso esta orientado a todo programador que desee aprender Arquitectura de Software.
El curso esta enfocado con una introducción de conceptos fundamentales de programación que van desde tipos de datos, sentencias, y programación básica, hasta tipos de paradigmas de programación como: programación estructurada, programación orientada a objetos y programación funcional.
Me he enfocado a brindar los conceptos que creo son útiles antes de abordar temas más avanzados como Arquitectura de Software, ya que en mi experiencia, muchos programadores temen adentrarse a estos conocimientos ya que carecen de conceptos bases fundamentales.
En este curso aprenderás sobre Arquitectura de Software, para que des ese paso extra como programador, un paso extra a tener software de mejor calidad, y también, para obtener mejores sueldos.
Me he enfocado en enseñar la Arquitectura de Software desde un apartado teórico-practico, para que el alumno no solo sepa que son las cosas, sino, también sepa para que sirven y cuando utilizarlas.
Una vez que se dan los conocimientos de Arquitectura de Software, nos adentraremos a Clean Architecture, una propuesta de arquitectura útil para software que tiende a crecimiento y cambio.
Mi objetivo con este curso es que el alumno aprenda sobre Arquitectura de Software, y vea que no es tan difícil como cree que puede serlo.
Espero te diviertas con este curso y sobre todo, sea útil para tu vida como programador.