J'ai de sérieux doutes sur la conception de mon application Web.
Je voulais séparer la logique métier de l'interface, j'ai donc créé une API Web qui gère toutes les demandes à la base de données.
Il s'agit d'une API Web ASP.NET avec le framework Entity et une unité de travail et un modèle de référentiel générique. Jusqu'à présent, tout va bien.
PROBLÈME
Là où j'ai besoin d'aide, je n'arrive pas à trouver un moyen efficace de partager des objets entre l'API et l'application.
Je ne veux pas sérialiser directement l'objet entité, je pensais que ce serait une mauvaise pratique car si le modèle d'entité change, je pourrais finir par sérialiser de gros objets sans raison.
Comment est-il mis en œuvre maintenant
Parce que mon interface est une application Web ASP.NET en C # et que mon API est en C #, j'ai créé une bibliothèque commune avec la définition de toutes mes classes que je veux partager entre elles.
Je sais que cette solution ne fonctionnera pas lorsque je développerai une application Android, je devrai recréer mes cours en Java mais ce n'est pas mon plus gros problème.
Le problème est que j'ai l'impression de toujours convertir mes objets.
EXEMPLE
Voici un exemple de mon flux de travail:
Je commence avec un modèle avec tous les objets et les annotations de données pour mon formulaire, puis l'utilisateur POSTERA ce modèle à un contrôleur.
Dans le contrôleur, je dois convertir ce modèle en classe dans ma bibliothèque commune, puis envoyer cet objet à mon API.
Ensuite, un contrôleur de mon API intercepte l'appel et convertit cet objet en objet entité pour mettre à jour la base de données.
J'ai donc 3 cours
- Le modèle de la vue avec toutes les annotations de données pour la validation (Client)
- Les classes de bibliothèque communes pour partager les objets (DLL)
- Les classes d'entité (API)
J'ai le sentiment de faire quelque chose de vraiment mauvais. Y a-t-il quelque chose de plus élégant? Je voudrais m'assurer d'avoir une bonne solution à ce problème avant que le projet ne devienne trop gros.