J'écris un système client/serveur. Le serveur a un design DAL/BLL. Le client est responsable de présenter les objets de données et de fournir des boîtes de dialogue et un assistant pour permettre à l'utilisateur de mettre à jour ces objets (c'est-à-dire ajouter/éditer un utilisateur).DAL/BLL et Client/Serveur: Le client doit-il utiliser des objets BLL ou DAL pour la présentation? Ou peut-être une autre couche (objet de transfert de données?)
Initialement, je pensais que je vais juste faire en sorte que les objets DAL aient un objet fournisseur de données universel afin qu'ils puissent être utilisés aussi bien par le client que par le serveur. Par exemple, lorsque l'objet de données est utilisé par le serveur, la base de données est le fournisseur de données; Lorsque l'objet de données est utilisé par le client, le serveur est le fournisseur de données. Donc un objet est modifié au niveau de la couche de présentation, par exemple un "utilisateur": user-> setName ("Fred"), et le valide comme cet utilisateur-> commit(), la méthode commit appelle les données La méthode commit du fournisseur, qui code ensuite l'objet et l'envoie au serveur. Le serveur "décore" ensuite avec l'objet de couche de gestion et continue à partir de là.
J'ai actuellement ce travail en tant que prototype, avec les objets DAL définis dans un projet partagé qui est utilisé à la fois par le client et le serveur. Le serveur injecte ensuite son fournisseur de données (qui utilise la base de données) et le client injecte un fournisseur de données qui utilise le serveur. Je me demande si cela semble être une approche raisonnable? Je me demande si j'ai besoin d'une autre couche plutôt que d'avoir les objets DAL directement exposés au client. Peut-être une couche d'objets de transfert de données, qui me donnerait 3 couches: Objets d'accès aux données, objets de logique métier et objets de transfert de données.
Merci.
+1 Dans les systèmes non triviaux, les données que vous souhaitez échanger entre ces couches seront différentes. Si vous vouliez réutiliser quelque chose, alors une interface (que les objets implémentés) pourrait bien fonctionner - mais je ne l'ai jamais fait moi-même. –