Diferencias entre DTO y Entidad (Entity) 🆚- Cómo Versionar tus DTOs en una API REST

  Рет қаралды 18,576

NetMentor

NetMentor

Күн бұрын

Пікірлер: 24
@NetMentor
@NetMentor 4 жыл бұрын
Blog: www.netmentor.es/Entrada/differencia-dto-entity Twitter: twitter.com/NetMentorTW
@alejandrovelazquez5111
@alejandrovelazquez5111 3 жыл бұрын
Este canal esta destinado al exito si o si.
@NetMentor
@NetMentor 3 жыл бұрын
Gracias! me alegro de que te guste el contenido!
@pabloweinxakapaulsynth966
@pabloweinxakapaulsynth966 2 жыл бұрын
Vaya clase tan magistral! Muchas gracias.
@manuelvega6346
@manuelvega6346 4 жыл бұрын
Excelente vídeo, muchas gracias por compartir tu conocimiento
@luisjavier5224
@luisjavier5224 2 жыл бұрын
Cada vez que escuché "lincado" me dolió..... pero la información es excelente
@rublenx
@rublenx 3 жыл бұрын
Gracias por el vídeo y las explicaciones, y enhorabuena por el canal. Desde mi punto de vista, completamente personal y bajo la experiencia que tengo, no estoy de acuerdo con sustituir el versionado por ramas con la librería que nos comentas, puede que no te haya entendido bien, por eso escribo. Por lo que comentas, la duplicación de código que al final se puede liar en el proyecto puede ser monumental, hoy hay empresas que tienen actualizaciones muy frecuentes, y sería inviable usar esta librería para el versionado. Sin embargo, si tienes ramas, cuando dichas versiones dejan de ser usadas con borrarlas es suficiente, y si tienen que mantenerla lo haces en su rama correspondiente. Al menos yo lo veo así. Pero estaré encantado de leer tus comentarios.
@NetMentor
@NetMentor 3 жыл бұрын
Hola! Yo creo que aquí podemos entrar en un “eterno debate”. Bajo mi punto de vista mantener diferentes ramas es imposible e ineficiente, por no hablar de que necesitas diferentes endpoints. Por ejemplo si tuvieras dicha web en la nube, supongamos que tienes la web en un contenedor; deberás de configurar uno para cada rama, además del enrutamiento, junto con CI/CD; Para mí, eso no es una opción, es lo mismo a lo que se hacía antiguamente de una rama por cliente, o la típica rama de “release1”, “release2” etc. O por ejemplo si encuentras un bug, tienes que ir aplicándolo a todas las ramas, es muy fácil que se te pueda olvidar una, o que pasa si quitas/cambias una tabla de la base de datos, algo que al usuario final no le afecte, pero cambie un poco tu dominio, necesitas propagar el cambio por miles de branches. Utilizando versioning la duplicación de código es mínima, en el ejemplo que he mostrado si que he duplicado varias cosas, pero podríamos (y debería) haber utilizado herencia y se duplicaría mucho menos a la hora de hacer el mapping. Y con la teoría en mente de que los endpoints realizan una única acción, es muy extraño querer cambiar el funcionamiento de los mismos. Otra regla a tener en cuenta es que cuando creas una nueva versión esta NO puede romper nada que esté funcionando, eventualmente pueden deprecar y quitar versiones, pero no romper las existentes. Con esto en mente un endpoint que es “LeerEmpleado/{id}” deberá siempre leer el empleado por el ID. es mas o menos lo mismo que hace MS, lo puedes ver en su guia: github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md#42-guidelines-for-existing-services-and-versioning-of-services Personalmente trabajo así, en la empresa también, y cero problemas (por ahora, claro). Un saludo. pd: menudo tocho me ha salido 😂
@rublenx
@rublenx 3 жыл бұрын
@@NetMentor muchísimas gracias por tu respuesta, lo tendré en cuenta, por ahora profesionalmente no lo he tenido que aplicar, pero me parece otra opción a tener en cuenta, y con las aclaraciones que me has dado más todavía, una cosa más que he aprendido gracias a tu dedicación al canal
@jerry2k33
@jerry2k33 4 жыл бұрын
Gracias por tus videos, son muy instructivos. ¿Tienes en mente subir algun video sobre entity framework?
@NetMentor
@NetMentor 4 жыл бұрын
Pues puede ser, aunuqe no lo tengo claro del todo, ya que hace mucho que no toco EF (desde .net Framework) y ahora hago todo con dapper. Aunque teniendo en cuenta que han re-escrito todo EF para netcore quizá le de otra oportunidad
@feliperosaszambrano6257
@feliperosaszambrano6257 4 жыл бұрын
buena explicación buen Video !
@NetMentor
@NetMentor 3 жыл бұрын
Gracias. Saludos
@fernandopoveda5485
@fernandopoveda5485 3 жыл бұрын
Creo que podría mantener el mismo controller, por medio de interfaces y generics cambiar el DTO acorde a la versión....también hay implementaciones multi-tenat.
@land4bikers
@land4bikers 2 жыл бұрын
Utilizando un explicit operator es válido generar el DTO? Veo que son herramientas que nos ofrece el lenguaje para hacer el mapper con el operador new. sin embargo, me puedes aclarar si esto rompe con el principio de Inversión de dependencias?
@NetMentor
@NetMentor 2 жыл бұрын
si, claro, es totalmente válido genera el dto utilizando implicit operator. De hecho en mi opinion, mucho mejor que automappers y similares. un saludo
@YoungHWN
@YoungHWN Жыл бұрын
wow
@dangerosa01
@dangerosa01 4 жыл бұрын
Excelente como siempre! Consulta, necesito hacer una api para 2 versiones de un producto en el cual las tablas difieren. Pero debe ser trasparente a los clientes... por ejemplo, tengo una tabla employee que una version de la app tiene ciertos campos y en otra version tiene otros campos. Cual seria la solucion ideal? hacer una especie de "union" en los dto que contenga todos los campos de ambas versiones y que si en no hay nada en un campo (porque no se usa en esa version) sea null el valor? Muchas gracias!!
@NetMentor
@NetMentor 4 жыл бұрын
Si he entendido bien la parte de “transparente a los clientes” tu problema es que tienes una única API con un único enpoint, pero internamente coges la información de dos puntos diferentes. Yo sería más partidario de tener dos endpoints que devolvieran diferentes DTOs, pero entiendo que lleva mucho tiempo de desarrollo, así que si, la mejor opción en tu caso es devolver los campos que no estén como null. Un saludo y gracias por apoyar el canal :)
@dangerosa01
@dangerosa01 4 жыл бұрын
@@NetMentor excelente! Muchas gracias
@roy_c
@roy_c 3 жыл бұрын
Mmmm por ahi no coincido mucho de que la entidad es una tabla de la BD. En un modelo DDD no seria valido.
@NetMentor
@NetMentor 3 жыл бұрын
🤔 cierto, el vídeo va más enfocado a event driven design que está ahora tan de moda. Pero es un buen punto el tuyo, quizá debería haber sido menos categórico en ese aspecto, ya que como mencionas en ddd lo que buscamos es almacenar/trabajar dicho modelo de la forma más simple.
@rickhunter8216
@rickhunter8216 Жыл бұрын
Pensé que era en Java.
@NetMentor
@NetMentor Жыл бұрын
La sintaxis es diferente, pero la idea es la misma en cualquier lenguaje
Qué es una API?  - Crear una API REST con C# de forma sencilla
25:06
Data Transfer Objects - What Are DTOs - Full PHP 8 Tutorial
13:03
Program With Gio
Рет қаралды 42 М.
黑的奸计得逞 #古风
00:24
Black and white double fury
Рет қаралды 28 МЛН
버블티로 부자 구별하는법4
00:11
진영민yeongmin
Рет қаралды 27 МЛН
Will A Basketball Boat Hold My Weight?
00:30
MrBeast
Рет қаралды 124 МЛН
啊?就这么水灵灵的穿上了?
00:18
一航1
Рет қаралды 99 МЛН
Repository Design Pattern | Full Explanation: C# and .NET
15:28
Адище с домен контроллером: HackTheBox Mist
58:08
Константин Романов: Кибердружинник 🤖
Рет қаралды 1 М.
¿Qué es un DTO y cómo mapearlo? | Data Transfer Object
15:54
Manuel Zapata
Рет қаралды 54 М.
DELEGADOS en C# con ejemplos; Action, Func,  Predicate
17:22
NetMentor
Рет қаралды 16 М.
黑的奸计得逞 #古风
00:24
Black and white double fury
Рет қаралды 28 МЛН