Tengo un catálogo de dos repositorios y un usuario, tengo una situación en la que necesito llamar un método dentro del repositorio de catálogo del repositorio del usuario, ¿es esta una buena práctica o hay una forma mejor?Llamar a un repositorio desde un repositorio
Respuesta
No debe ser el manejo de ese tipo de comprobaciones de autorización dentro de los repositorios. Una regla comercial como "Este usuario requiere X comentarios para publicar" no es realmente una consulta de depósito, es una propiedad de su Usuario.
Además, las llamadas de autorización se realizan con mucha frecuencia en una aplicación, y realmente no desea acceder a su base de datos cada vez que se requiere una verificación.
debe cargar adecuadamente estos permisos en su objeto Usuario que se almacena en caché continuación de la solicitud actual, y el uso de su dominio:
public class Service {
public void Save(Post post)
{
if(User.GetCurrentUser().HasEnoughCommentsToPost())
postRepository.Add(post);
}
}
que haría referencia a otro repositorio en la capa superior, tal como una capa de servicio
Creo que en su autorización caso es parte de la lógica de dominio. Así que crearía una clase o interfaz abstracta llamada AuthorizationPolicy (tal vez pueda encontrar un nombre mejor cerca de su dominio), en mi capa de dominio. Antes de llamar a un método en el repositorio, el cliente debe verificar si tiene permiso según la política.
Otra solución, porque la interfaz de un repositorio también forma parte de la lógica de negocios, puede crear una clase base para su repositorio que compruebe los permisos del usuario y delegue el resto en las clases derivadas.
La implementación de AuthorizationPolicy se comunicará con la clase Catalog si así lo desea. De esta forma, los dos repositorios están bien desacoplados.
- 1. ¿Debería un repositorio llamar a otro repositorio? ¿O debería un repositorio llamar a una capa de servicio?
- 2. Bzr: Crear un repositorio compartido desde un repositorio independiente existente
- 3. Enviar solo un archivo a GitHub desde un repositorio local
- 4. ¿Sigue siendo un repositorio un repositorio sin unidad de trabajo?
- 5. svn-checkout desde un repositorio de GIT
- 6. ¿Cómo creo un nuevo repositorio git desde una carpeta en un repositorio git existente?
- 7. Actualización de un repositorio local con cambios desde un repositorio de Github
- 8. añadir un repositorio local como un subdirectorio del repositorio remoto
- 9. Escribir directamente en un repositorio remoto de Git, sin agregar objetos a un índice/repositorio local?
- 10. Verificando un proyecto maven desde un repositorio de git
- 11. ¿Cómo descargo un commit específico de git desde un repositorio?
- 12. AnkhSVN: mover un proyecto a otro repositorio
- 13. Convirtiendo un repositorio de git a subversión
- 14. ¿Puedo copiar un repositorio git a Windows?
- 15. GitHub: ¿Cómo bifurcar un repositorio público como un subdirectorio en un repositorio privado?
- 16. Publicar un repositorio "git svn"
- 17. Crear un repositorio git que contenga otro repositorio git
- 18. Extracción de un subdirectorio del repositorio A en un repositorio diferente B utilizando mercurial
- 19. ¿Puedo trasladar un repositorio de Subversion existente a un nuevo repositorio principal (y conservar el historial)?
- 20. ¿Puede un repositorio svn incluir/vincular a un repositorio git externo?
- 21. Can Git clonar un repositorio desnudo en otro repositorio vacío
- 22. ¿Cómo trabajo con un repositorio git dentro de otro repositorio?
- 23. C# Patrón de repositorio: ¿un repositorio por subclase?
- 24. ¿Cómo agrego un subrepo a un repositorio existente en mercurial
- 25. Unidad probando un repositorio LINQ2SQL
- 26. ¿Un repositorio SVN o muchos?
- 27. IDisposable en un repositorio inyectada
- 28. "No es un repositorio git"
- 29. Despliegue automático de archivos desde un repositorio de BitBucket
- 30. ¿Cómo crear un repositorio remoto de Git desde uno local?
El problema. Tengo un comentario relacionado con los métodos dentro de mi catálogo repo. En mi informe de usuario, deseo agregar el método canuserpost (que consultará db para ver si se han realizado suficientes comentarios para permitir su publicación). El código requerido se usará dentro de ambos repositorios, entonces, ¿dónde debería ir, en uno y referencia el otro, ambos, según la referencia de dfa en la capa de servicio u otra cosa? – monkeylee