9 consejos para que MEJORES TU LÓGICA DE NEGOCIO

Поделиться
HTML-код
  • Опубликовано: 14 дек 2024

Комментарии • 109

  • @ManuelZapata
    @ManuelZapata  Год назад +1

    Conoce mi curso de Arquitecturas Limpias
    👉platzi.com/arquitecturaslimpias
    Si no te tienes suscripción en Platzi, usa mi enlace de afiliado: platzi.com/l/manuelzapata/

  • @Renso2010
    @Renso2010 4 года назад +44

    La lógica del negocio (LN)
    Es lo que la empresa tiene que hacer haya o no haya sistema
    1. No amarres la LN a la bd
    2. No poner la LN en el cliente
    3. No poner LN en los controladores
    4. Evita depender de terceros
    5. Usa el patrón de diseño strategy
    6. Usa el patrón de diseño template method
    7. Falla lo más pronto posible
    8. Evita devolver string como resultado
    9. Conocer las capas de lógicas

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      🙌 Gracias por tu aporte Renso!

  • @julianperdomo6256
    @julianperdomo6256 4 года назад +33

    Que tipo de lógica debe ir en el cliente y que tipo de lógica debe ir en el servidor ufff esperare ese video

    • @ManuelZapata
      @ManuelZapata  4 года назад +10

      Super Julián! Parece que hay interés por el tema.

    • @Fabito853
      @Fabito853 4 года назад

      Manuel, en ese video me gustaría tener mayor claridad sobre por qué existe una lógica distinta en el cliente y otra en el servidor, ¿si la lógica es lo que hace siempre la empresa, no sería solo una?

    • @ManuelZapata
      @ManuelZapata  4 года назад +5

      Fabio, aquí estamos hablando de la lógica de negocio. También existe la lógica de presentación, que es la que maneja sí o sí la interfaz gráfica. Saludos!

    • @Fabito853
      @Fabito853 4 года назад

      @@ManuelZapata aaa, ya veo ya veo. Gracias!

    • @mariabonilla3000
      @mariabonilla3000 2 года назад

      x2

  • @erasmo-programacion2839
    @erasmo-programacion2839 2 года назад

    increaible video me encanta este canal bendiciones

  • @VanderleiRobertoMoretto
    @VanderleiRobertoMoretto 4 года назад +1

    Saludos desde Brasil ! Um del más top canal del RUclips! Sin duda!

  • @victorpinedo5121
    @victorpinedo5121 4 года назад +2

    Buen video Manuel, de hecho los consejos que das cuando se aplican ...se obtiene como resultado una gran modularizacion o encapsulamiento de código, y con ello aparece otro dilema para los devs, y es la organización o estructura de proyecto, que si bien muchos Frameworks ya te dan una orientación de cara este tema, en la gran mayoría de las veces eso no es suficiente y solo con la experiencia se logra entender la manera adecuada de organizar o estructurar los directorios y ficheros.
    Me gustaría que hablaras de este tema de organización de proyecto, puesto que como arquitecto de software, posiblemente tienes mucho que aportarnos.

  • @_chris_6786
    @_chris_6786 3 года назад

    Estuve peleando con un código por 1000 años y de lo dejé ahí para que se arregle solo, pero este vídeo me inspiró a levantarme, abrir el IDE y resolverlo. De corazón gracias!

  • @dairofrenandoocampogutierr4410
    @dairofrenandoocampogutierr4410 3 года назад

    gracias por la guia, por ahi vi un error de orotgrafia, liderzgo, capacidad de abstracción y
    mentoría.en la palabra liderazgo

  • @Magistrado1914
    @Magistrado1914 3 года назад

    Excelente vídeo
    Visto en 03/03/2021

  • @luciofex8353
    @luciofex8353 3 года назад +2

    Lógica de Negocio = LN
    Objetivos a cumplir de la empresa con o sin sistemas de información.
    Recomendaciones:
    - Separar LN de la base de datos.
    - No meter la LN en los componentes UI.
    - No meter la LN en los controladores.
    - Evitar depender de terceros (APIS, Teconologías x como Gmail, etc...).
    - Patrón de diseño STRATEGY recomendado (si aplica).
    - Patrón de diseño TEMPLATE METHOD recomendado (si aplica).
    - Seguir el principio "Fail Fast", o que el código falle lo más rápido posible, para reducir costos.
    - La LN no debe devolver Strings como resultados (dificulta el desarrollo multi idioma en la UI y es frágil) | Usar Booleanos o tuplas.
    - Conocer patrones específicos para la LN.
    - Script de Transacción (muy usado).
    - Modelo de Dominio.
    - Módulo de Tabla.
    - Capa de Servicios (muy usado).

  • @RamiAguirre
    @RamiAguirre 2 года назад

    Excelente contenido!! Gracias!

  • @quicolotube
    @quicolotube Год назад

    Hace tiempo que sigo tus vídeos Manuel. Muchas gracias por tu sabiduría y capacidad de comunicación

  • @haroldmunoz1775
    @haroldmunoz1775 2 года назад

    Muy buen video Manuel. Lo que no me quedó claro es que mencionas que la lógica no debe llevarse a cabo dentro del controlador del patrón MVC. Entonces donde debería si la idea es no pasárselo a la base de datos ni a la vista?

  • @julianpicon243
    @julianpicon243 3 года назад

    Estaría bien siempre del Controller comunicarme con un Facade y este a su ves los servicios? De esta manera no agrego la lógica en el controller y encapsulo todo en el Facade?

  • @CarlosRodriguez-rj3zo
    @CarlosRodriguez-rj3zo 4 года назад +1

    Excelente explicación y muy buenas las sugerencias, saludos

  • @_jormanespinoza
    @_jormanespinoza 4 года назад

    Gracias!!

  • @Algedibarrios
    @Algedibarrios 4 года назад +1

    Excelente trabajo como siempre Manuel, Gracias por toda esa información.
    6:26 Definitivamente SI!!!

  • @haroldmunoz1775
    @haroldmunoz1775 2 года назад

    Manuel hola. En MVC donde se debe programar la lógica de negocio si no es el controlador?

  • @ALEXCOCACOLASE
    @ALEXCOCACOLASE 4 года назад

    muy buenos videos, muy buen canal

  • @jorgevillegasnizama2630
    @jorgevillegasnizama2630 3 года назад

    Excelente video, saludos desde Perú, si me interesaría mucho saber que debería ir en el front y en el backend.

  • @RamiroAndres
    @RamiroAndres 4 года назад +7

    Manuel! Excelente video, si me interesaría mucho saber que debería ir en el front y en el backend.

    • @ManuelZapata
      @ManuelZapata  4 года назад +5

      Gracias por el feedback Ramiro! Parece que hay interés en el tema. Saludos!

    • @chaparro_8571
      @chaparro_8571 4 года назад +1

      Estoy de acuerdo contigo Ramiro. Saludos y buen video Manuel

  • @cristiancalichio5335
    @cristiancalichio5335 4 года назад

    Muchas gracias por el video Manuel, siempre claro y enriquecedor. Quede con ganas de ver el video que planteaste sobre:
    Que tipo de lógica poner del lado del cliente y cual del servidor.
    Ojala que lo puedas hacer. Muchas gracias.
    Acabo de chequear antes de enviar el mensaje que lo hiciste. Genial!!!! lo veré.
    Saludos desde Argentina!!!

  • @joseluiscaicedo4096
    @joseluiscaicedo4096 3 года назад

    Al poner la LN en los controladores ...¿un determinado proveedor puede amarrar la solución a licencias de periféricos ?

  • @IIDarknightII
    @IIDarknightII 3 года назад

    La mejor solución es con patrones de diseño que en el caso de la base de datos podemos usar el Factory Method para que nos traiga el objeto de tipo Connection de JPA independientemente del driver que se utilice, y también tenemos que conocer lo que conoce como inyección de dependencias para hacer sistemas con un bajo acoplamiento

  • @diegoalzate5473
    @diegoalzate5473 4 года назад

    Que buen ejemplo eso de que el Controlador es el 10 del equipo! Nunca se me olvidará. Gracias!

  • @CAGUANET121
    @CAGUANET121 4 года назад +2

    Muy buen tema. Seria interesante tener claro que logia iría en tanto en el front como en el back, estare atento para cuado publiques el video.

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Va Leandro! Gracias por la retroalimentación.

  • @maximilianominetto524
    @maximilianominetto524 4 года назад

    Buenas tardes, arquitecto.
    No soy de escribir en tu canal, solo felicitarte de tomar tu tiempo de compartir tus conocimientos valiosos sobre software.
    Te digo que me gustaría que en algun video explicases la capa de servicio, lo que conlleva y la diferencia con la capa de negocio, que suele estar en el dominio segun ddd.
    Gracias

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Hola Maximiliano! Gracias por la recomendación Ya la anoté en mis lista de futuros temas.

  • @chaparro_8571
    @chaparro_8571 4 года назад +1

    Al pendiente del vídeo de la lógica que debe ir en el cliente y servidor. Saludos y muy buen video

  • @gabrieldavid5944
    @gabrieldavid5944 4 года назад +1

    Hablando de amarres de la logica de negocio a los diferentes componentes seria interesante un video sobre Clean Architecture, que expone conceptos que ayudan al desacoplamiento de los componentes.

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Muy buen aporte Gabriel. Te lo agradezco. Para allá vamos!

  • @nicolasliendro1162
    @nicolasliendro1162 4 года назад +1

    Excelente video Manuel! Espero sigas haciendo este tipo de contenido y que el canal vaya creciendo. Saludos desde Argentina!

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Gracias Nicolás! Aquí seguimos al frente del cañón. 🙌

  • @willysystems
    @willysystems 2 года назад

    Gracias, a todo esto se pueden usar DSLs en la lógica de negocio? y que relación existe la lógica de negocio con BPMN?

  • @alfoorego8380
    @alfoorego8380 4 года назад

    6:24
    Existe ya un vídeo explicando qué tipo de lógica debe ir en el cliente y en el servidor?

  • @rennygalindez
    @rennygalindez 4 года назад

    No entendía que era logica de negocio hasta este video! Gracias

  • @CaunaRoblesyuriCristian
    @CaunaRoblesyuriCristian 4 года назад

    Fantástico, por fin un buen canal en español, muchas gracias Manuel, te ganaste un suscriptor y muchos likes =)
    Esperaré el video de logica en el cliente y en el servidor !!!

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Gracias Yuri! Ya está video disponible: ruclips.net/video/SPmbxvvT7Aw/видео.html

    • @CaunaRoblesyuriCristian
      @CaunaRoblesyuriCristian 4 года назад

      @@ManuelZapata Perfecto! Muchas gracias!

  • @Colmedoherman
    @Colmedoherman 4 года назад

    Excelente información! Gracias Manuel, muy interesante la aplicación de patrones y la separación de la lógica de negocio, no había pensado en las tuples 👌🏾

  • @jklmg10
    @jklmg10 4 года назад

    Excelente tema Manuel, en mi opinion, la logica del lado de cliente, debería ser solamente para "depurar o sanitizar" las entradas de datos con respecto a contenido de cada campo y como Maximo en una relación (ejemplo el tipo caso donde no hay una opción para el usuario y seleccionas "otro" y tienes que describir ese "otro")

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Coincido contigo, Jose Luis! Cuando haga el video, profundizaré en las validaciones.

    • @jklmg10
      @jklmg10 4 года назад

      @@ManuelZapata gracias Manuel por responder los comentarios. Estás construyendo con éxito una gran comunidad. Gracias a lo aprendido en tus videos he conseguido un mejor trabajo. Un saludo cordial desde La Paz, Bolivia

  • @sergiohidalgo
    @sergiohidalgo 4 года назад

    Excelente, lo de los controladores no lo había considerado muchas gracias

    • @sergiohidalgo
      @sergiohidalgo 4 года назад +1

      @@likecomtic-arquitectoSoftware gracias lo reviso

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Sí, el acoplamiento de los controladores con la lógica de negocio es una de esas dependencias sutiles que se va complicando con el tiempo. Saludos Sergio!

  • @Bc7-w9k
    @Bc7-w9k 4 года назад

    Me encanto el. Video, lo aplicaré a mis servicios Rest

  • @westlymeza8322
    @westlymeza8322 4 года назад

    Estupendo video, genial la idea del video de logica en el cliente vs logica en el servidor, saludos

  • @karinalejandrolugogutierre5395
    @karinalejandrolugogutierre5395 4 года назад

    hola, cuando haces un curso de LINQ?

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Hola Karin. Te agradezco la sugerencia. No creo que lo haga. Mi canal va por una línea diferente. Pero, nuestro canal amigo hdeleon.net fijo tiene contenido de LINQ: ruclips.net/channel/UCDUdeFslCNoM29MAlZOfdWQ

  • @wellingtonroa9298
    @wellingtonroa9298 2 месяца назад

    Que problema. Tengo la lógica de negocios en la base de datos. Es un sistema de punto de vena usando SQL, C# y Crystal Reports. Que debería hacer?

  • @aoim123
    @aoim123 4 года назад +3

    Que tipo de lógica debe ir en el cliente y que tipo de lógica debe ir en el servidor espero también ese video.

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Parece que hay mucho interés! 🙌

  • @gabrielantoniodelrealmarqu1555
    @gabrielantoniodelrealmarqu1555 3 года назад

    Si la lógica de negoció no va en los componentes de Interface Gráfica y tampoco va en los Controladores entonces donde va ? No entendí si me puedes orientar

  • @diegoalzate5473
    @diegoalzate5473 4 года назад

    También quedo atento al video sobre que tipo de lógica debe ir en donde! Jeje. Y adicional... o quizás sea tema de ese video; es necesario hacer validaciones tanto en el front como en el back?

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Buena pregunta esa, Diego. La tendré en cuenta.

  • @davidismaelable
    @davidismaelable 4 года назад

    Excelente video Manuel, tus videos me han ayudado a desarrollarme mejor :D

  • @alfonsovargas8578
    @alfonsovargas8578 4 года назад +1

    ¿Que hay sobre tener un rules engine?

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Hola Alfonso. En escenarios complejos de negocio se van volviendo necesarios. No los traje a mención en este vídeo por ser algo más especializado que en aplicaciones más sencillas no se necesita. Saludos!

    • @alfonsovargas8578
      @alfonsovargas8578 4 года назад +1

      @@likecomtic-arquitectoSoftware gracias le daré un vistazo 👍🏻

  • @viktorbravo9255
    @viktorbravo9255 4 года назад

    Muchas gracias, tus consejos siempre me ayudan.
    Me quede con la idea de que tiene un BtnGuardar y el el evento click... ¿como lo harías, podrías darme un ejemplo? Para terminar de aterrizar la idea.
    Saludos desde México.

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Hola Viktor! 👋 Se puede hacer de varias formas. Si ves que tienes mezclada la interfaz gráfica con la lógica de negocio en el mismo archivo, solo sácala a un archivo/clase aparte y llama funciones de la lógica desde los manejadores de eventos. Saludos!

  • @adrianavendano6268
    @adrianavendano6268 4 года назад +1

    Muy buen video! Una consulta, la lógica de negocio debería estar centralizada en una sola capa de la aplicación? Existe algún patrón que indique como hacer una correcta lógica de negocio ?

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Revisa el consejo #9, Adrián. Ahí menciono patrones específicos para el dominio.
      Concentrar la lógica de negocio en una sola capa? Yo creo que sería lo ideal, sin embargo he visto implementaciones donde se distribuye en varias partes.

  • @alfonsodevcastaneda3758
    @alfonsodevcastaneda3758 4 года назад

    Buena introducción me llamó la atención el módulo de tabla, es diferente a reglas de negocio? donde puedo profundizar en esos patrones?

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Son diferentes. Puedes profundizar en este libro de Martin Fowler: amzn.to/3kvLJJI
      O en mi curso de patrones de arquitectura: cursos.manuelzapata.co/inscripcion-curso-practico-patrones-arquitectura/

  • @aom9913
    @aom9913 4 года назад

    6:25 Me interesa.
    Existe ya ese vídeo?

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Seguro ya viste el video, pero en todo caso te lo dejo: ruclips.net/video/SPmbxvvT7Aw/видео.html

  • @cristianguzman4840
    @cristianguzman4840 4 года назад

    Excelente vídeo. Me aclaraste muchas dudas. Y sí, me interesa que realices el vídeo de que lógica de de ir tanto en cliente como en servidor. También, me gustaría que hicieras un vídeo sobre Model Domain, veo que es usado para que le puedas explicar a una persona ajena al software y sin conocimientos de desarrollo para que entienda como funciona tu sistema. Saludos.

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Con todo gusto Cristian! Gracias por tu retroalimentación en cuanto a hacer un vídeo de cómo separar la lógica. Saludos!

  • @wjmmk
    @wjmmk 4 года назад

    Viejo Manuel, no te olvides de hacer el otro vídeo aclarando que debe ir en la lógica del cliente y la del servidor por favor.

  • @ramiroproietto6747
    @ramiroproietto6747 4 года назад

    Gracias por el video! Si no pongo la lógica de negocio en el controlador ni en UI, dónde lo pondría? Saludos :)

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      En su propia capa, Ramiro. Puedes tener una capa de lógica de negocio. Saludos!

  • @luisavila7283
    @luisavila7283 4 года назад

    Hola Manuel, excelente video como siempre.
    Tengo un par de preguntas en las que me gustaria conocer sus ideas.
    Con respecto al punto 1, precisamente en estos días he estado leyendo mucho sobre el repository patterm y he visto muchos artículos donde lo califican de anti patrón y de sobre abstracción si se usa con un ORM como Entity Framework por ejemplo, esto porque EF ya implementa el patrón, el DbContext es un unit of work y cada DbSet es un repositorio en si mismo. ¿Qué opinión tiene al respecto?.
    Lo segundo va un poco en relación a lo anterior, ¿me gustaría saber cuál considera una buena aproximación a una arquitectura en capas para un desarrollo empresarial? La aproximación a la que estoy llegando en este momento es la siguiente:
    Una capa Core con abstracciones de la logica del negocio (interfaces), abstracciones de los repositorios en caso de usarse y no sé si los modelos deberian ir aquí.
    Una capa a la que llamo de servicios o de implementación de lógica de negocio en la que implemento las interfaces de la capa anterior (aquí materializo los casos de uso que describí en las interfaces de la capa anterior).
    Capa de presentación.
    Espero esto no sea muy largo de leer.
    Gracias y siga así con el canal.

    • @ManuelZapata
      @ManuelZapata  4 года назад +1

      Hola Luis!
      Efectivamente, el repository y el ORM se solapan de alguna manera. No sé si llegar al punto de llamarlo antipatrón, pero ciertamente hay que saber manejar los 2 en conjunto.
      En cuanto a lo segundo, creo que vamos por enfoque muy Clean Architecture o Arquitectura Hexagonal. Quizá ya estás familiarizado con ambas arquitecturas, pero creo que estas te pueden dar una idea para validar tu enfoque.
      Saludos!

  • @jhonnylopezr.545
    @jhonnylopezr.545 4 года назад

    Buen video. Sin embargo, tengo dos observaciones con respecto al cuarto punto. La primera es que el ejemplo de Gmail no es muy ilustrador porque finalmente uno no escribe lógica para Gmail específicamente, si no usando el protocolo SMTP, por lo que el proveedor si es restrictivo se puede cambiar por otro sin ningún problema. La segunda observación es que el concepto no es que no se deba depender de terceros. Dices que idealmente no depender de terceros, lo que puede implicar, en el ejemplo, construir mi propio sistema de mensajería y tampoco es la idea. Lo correcto es que en la lógica de negocio no se escriban rutinas que dependan de terceros específicos y abstraer esas dependencias en otras capas de forma tal que se puedan reemplazar sin afectar la lógica de negocio. Así las cosas, este punto se puede ejemplificar mejor con el caso del primer punto: no creo una dependencia frente a un motor de bases de datos específico en mi lógica de negocio sino que lo abstraigo a otra capa y puedo reemplazar en esa otra capa, o en otra implementación de esa capa, el motor en un futuro sin afectar la lógica de negocio.

    • @ManuelZapata
      @ManuelZapata  4 года назад

      Gracias por la retroalimentación Jhonny. Tienes toda la razón. El cuarto punto se pudo haber explicado de manera más clara, cómo lo describes.
      Espero que aún así, se haya podido transmitir el mensaje. Saludos!

    • @jhonnylopezr.545
      @jhonnylopezr.545 4 года назад

      @@ManuelZapata Sí, se entienden todos los temas con total claridad. Gracias Manuel por compartirlo.

  • @TheJac42
    @TheJac42 4 года назад

    Hola, excelente video, yo tengo una duda con el patron repository, a veces se necesitan hacer consultas complejas a la BD, y veo que las hacen en stores procedures en la BD, como pasarlas a un patron repository y que pueda yo si necesito cambiar luego mi BD de sql por ejemplo a mongo qie esto no sea traumatico, gracias y saludos Manuel.

    • @ManuelZapata
      @ManuelZapata  4 года назад +3

      Esa es una desventaja de usar procedimientos almacenados. Si te llevas el código a la BD, ya estás totalmente acoplado a esta. Ahí si nada que hacer.
      Si de antemano sabes que puedes terminar migrando a una BD diferente, de entrada evitaría los SP. Saludos Jhon!

    • @aphipex
      @aphipex 4 года назад

      tenía la misma duda, conocí hace poco el patrón criteria que va de la mano con orm, también encontré herramientas como querydsl y jooq, apenas las estoy estudiando pero creo que resuelven bien el problema, lo que si hay que tener en cuenta es la complejidad que necesitas manejar, nunca hay balas de plata

  • @angelmoralesb
    @angelmoralesb 4 года назад

    Genial!!!!!!!

  • @ciefsapien9728
    @ciefsapien9728 3 года назад

    Consejo #3. Entonces dónde pongo la lógica si no es en el controlador?

    • @ManuelZapata
      @ManuelZapata  3 года назад +1

      En los servicios, o incluso, en el dominio.

  • @rickkk226
    @rickkk226 2 года назад

    "No depender de terceros". Que duro mas ? gmail o Webpack ?

  • @SsmarcosS41
    @SsmarcosS41 3 года назад

    la logica de negocio seria la parte funcional del programa entonces la que hace alguna accion

  • @manuelzapatacastillo561
    @manuelzapatacastillo561 3 года назад

    Hijo buenas tardes, para mi negocio aplica la lógica de negocio

    • @ManuelZapata
      @ManuelZapata  3 года назад

      Por supuesto pá. Para todos los negocios aplica 😀

  • @yheffersonciceryaviles2652
    @yheffersonciceryaviles2652 3 года назад

    Lo que no me queda claro, es cómo organizar para quitarle responsabilidades a los controladores.

  • @emmanaorg8836
    @emmanaorg8836 3 года назад

    " 1. No amarres la LN a la bd
    2. No poner la LN en el cliente
    3. No poner LN en los controladores "
    ¿Y entonces donde ??? jeje , yo creo que va en mayor parte en el controlador y en menro parte solo conformando querys y ejecutandolas en los modelos.
    En la vista nada

  • @victorpinedo5121
    @victorpinedo5121 4 года назад

    Los que dieron Dislike al video, hacen páginas con wix...así que nada de esto les aplica lol 😂