es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diseñando Puntuaciones en el Tablero de Líderes en DDD

Hay dos entidades relacionadas con este problema, principalmente:
1. Tabla de líderes: que contiene información sobre el tipo (menor primero/mayor primero), descripción, nombre, etc.
2. Puntuación: el valor de puntuación enviado por el jugador que contiene los detalles del jugador junto con el valor de puntuación.

Casos de uso:
1. Necesitamos buscar a los mejores 10 jugadores.
2. Para una tabla de líderes mensual, necesitamos encontrar a los mejores 3.

Reglas de dominio:
1. Un jugador puede enviar cualquier número de puntuaciones.
2. La clasificación de la tabla de líderes debe basarse en el tipo definido en la tabla de líderes (menor/mayor).

Para un sistema como este en el que:
1. La tabla de líderes y las puntuaciones tienen una relación de 1 a muchos.
2. La puntuación necesita tener información sobre la información del jugador (que es una raíz de agregado separada y en un Contexto delimitado diferente).

¿Cómo diseñarlo en DDD?

Escenario 1:
¿La tabla de líderes será la raíz de agregado y las puntuaciones se agregarán a través de la raíz de agregado de la tabla de líderes (para cada puntuación)?

Consultas:
1. Aquí, las puntuaciones no tienen ningún significado sin la tabla de líderes y tampoco hay reglas de dominio que exijan agregar una puntuación a través de la raíz de agregado de la tabla de líderes. Esto es de hecho un dilema, ¿y cómo manejarlo?
2. ¿Cómo obtener los detalles del jugador para alimentar la puntuación? ¿Necesito buscar los detalles del jugador en un servicio de dominio y alimentar la raíz de agregado de la tabla de líderes al agregar la puntuación?

Escenario 2:
La tabla de líderes y la puntuación de la tabla de líderes son dos raíces de agregado diferentes.

Consultas:
1. Mientras se calculan los rangos, ¿necesitamos buscar puntuaciones del agregado de puntuaciones e información de tipo de la tabla de líderes y cumplir con el caso de uso?
2. Aquí, la mayoría del código que sirve a los casos de uso debe estar en un Servicio de Dominio o Servicio de Aplicación.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Microservicios y Diseño DDD para el Sistema de Clasificación y Puntuación

    En un sistema de clasificación y puntuación, existen dos entidades principales: Clasificación (Leaderboard) y Puntuación (Score). La clasificación almacena información sobre su tipo, descripción y nombre, mientras que la entidad de puntuación almacena el valor enviado por el jugador junto con los detalles del jugador.

    Casos de Uso

    Existen dos casos de uso para este sistema:

    1. Obtener los 10 mejores jugadores según sus puntuaciones.
    2. Para una clasificación mensual, encontrar los tres mejores jugadores.

    Reglas del Dominio

    Existen dos reglas del dominio para este sistema:

    1. Un jugador puede enviar cualquier cantidad de puntuaciones.
    2. La clasificación en la clasificación debe basarse en el tipo definido en la clasificación (más bajo/más alto).

    Consideraciones de Diseño

    Al diseñar este sistema, hay algunas consideraciones a tener en cuenta:

    1. La clasificación y las puntuaciones tienen una relación uno a muchos.
    2. La puntuación debe tener información sobre los detalles del jugador, que es una raíz de agregado separada en un contexto delimitado diferente.

    Escenario 1: Clasificación como Raíz de Agregado

    En este escenario, la clasificación es la raíz de agregado, y las puntuaciones se agregan a través de ella.

    Consultas:

    1. Las puntuaciones no tienen sentido sin la clasificación, pero ninguna regla del dominio requiere agregar una puntuación a través de la raíz de agregado de la clasificación. Esto puede ser problemático y vale la pena considerar si este diseño tiene sentido.
    2. Para obtener los detalles del jugador para asignar una puntuación, un servicio de dominio podría obtener los detalles del jugador y proporcionarlos a la raíz del agregado de la clasificación al agregar la puntuación.

    Escenario 2: Clasificación y Puntuaciones como Raíces de Agregado Separadas

    En este escenario, la clasificación y la puntuación de la clasificación son dos raíces de agregado separadas.

    Consultas:

    1. Para calcular las posiciones, es necesario obtener las puntuaciones del agregado de la puntuación y la información del tipo del agregado de la clasificación.
    2. En este escenario, la mayor parte del código que atiende a los casos de uso necesitaría estar en los servicios de dominio o aplicación para gestionar las interacciones entre las raíces de agregado separadas.

    En general, el diseño de un sistema de clasificación y puntuación requiere una cuidadosa consideración de las relaciones entre las entidades y las reglas del dominio involucradas. Tanto la arquitectura de microservicios como el diseño orientado al dominio pueden ser herramientas útiles para crear una solución sólida y escalable.

Comments are closed.