IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web avec .NET Discussion :

Question sur l'architecture Domain-driven design


Sujet :

Développement Web avec .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut Question sur l'architecture Domain-driven design
    Question sur l'architecture Domain-driven design

    J'ai un site de gestions de questions. Et j'utilise l'architecture Domain-driven design.
    Je l'ai fait il y a quelque temps, je ne retrouve plus la documation qui m'a inspiré.

    J'ai des doutes si je l'ai bien fait ?

    J'ai d'autres tables dans ma base de donnée. Je peux utiliser les mêmes class où dois-je en créer des nouvelles pour chaque table, ou juste faire un repository différent par table ?
    J'ai aussi des interactions métiers entre les tables, où dois-je les incorporer ?
    Par exemple, si j'ai mon user qui fait partit d'un groupe il peut récuperer certaine question et pas d'autre. (voir des choses plus complexe)

    Merci pour votre aide



    Boostrap sur la partie WEB
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Bootstrap
    {
        public static QuestionController GetQuestionController()
            {           
                return new QuestionController(new QuestionService(new EntityQuestionRepository("MaChaineDeConnexion"))); ;
            }
    }

    Controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class QuestionController
        {
            private readonly IQuestionService _service;
     
            public QuestionController(IQuestionService service)
            {
                _service = service;
            }
     
            public IEnumerable<QuestionPOCO> GetQuestions()
            {
                return _service.GetQuestions();
            }
    }
    Service
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public interface IQuestionService
        {
            IEnumerable<QuestionPOCO> GetQuestions();
        }
    public class QuestionService : IQuestionService
        {
     
            private IQuestionRepository _repository;
     
            public QuestionService(IQuestionRepository repository)
            {
                _repository = repository;
            }     
     
            public IEnumerable<QuestionPOCO> GetQuestions()
            {
                return _repository.GetQuestions();
            }
    }

    Repository
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface IQuestionRepository
    {
            IEnumerable<QuestionPOCO> GetQuestions();
    }

    DAL
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class EntityQuestionRepository : IQuestionRepository
        {
            private readonly DataContext _dataContext;
     
            public EntityQuestionRepository(string connectionString)
            {
                _dataContext = new DataContext(connectionString);
            }
     
            public IEnumerable<QuestionPOCO> GetQuestions()
            {
                var questions = (from q in _dataContext.QuizQuestions
                                 select q).AsEnumerable();
     
              //CONVERTION des entity question en QuestionPOCO
                return QuestionFactory(questions);
            }
     }

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Je ne suis pas un spécialiste de cette architecture, mais j'aurai deux remarques:
    1. Tu devrais manipuler une interface plutôt qu'un QuestionController;
    2. Un DataContext est un objet disposable. Ta classe EntityQuestionRepository doit implémenter l'interface IDisposable pour respecter la règle http://msdn.microsoft.com/en-us/libr...(v=VS.80).aspx. Ce qui donnerait:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      using(IQuestionController controller = Bootstrap.GetQuestionController())
      {
           // ...
      }


    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Domain Driven Design
    Par michouhinda dans le forum Autres
    Réponses: 5
    Dernier message: 28/08/2008, 12h09
  2. [Débutant] Questions sur nom de domaine.
    Par Nilsico dans le forum Domaines
    Réponses: 3
    Dernier message: 23/02/2008, 16h31
  3. [MOSS] question sur l'architecture du SI l'accueuillant
    Par lelutin dans le forum SharePoint
    Réponses: 5
    Dernier message: 10/11/2007, 17h47
  4. Débutant RCP - Question sur l'architecture
    Par LoloBebop dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 07/06/2006, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo