2016-08-31 5 views
2

J'ai une interface utilisateur qui nécessite beaucoup d'informations. La plupart des informations ont été identifiées comme des entités distinctes dans la base de données. Par exemple, afficher les détails d'un employé. La page de l'interface utilisateur peut être des détails employés avec diverses sections concernant l'information des employés tels que les renseignements personnels, adresse, contact, détails du projet, etc.Comment est-ce que je devrais renvoyer des données dans des méthodes de contrôleur d'API Web?

Donc, si nous retirons les entités pour la même exigence, nous aurons tableaux suivants

employé

Adresse

Contactez

projet

Nous allons implémenter le modèle de référentiel dans la couche DA et l'API Web ASP.Net comme couche de service reposante. Donc, maintenant, si j'ai besoin d'afficher les détails des employés dans l'interface utilisateur, quelle devrait être la meilleure approche. Ce que je pensais est mentionné ci-dessous.

approche

Il y aura un seul appel à Api Web pour obtenir les détails des employés. En interne, il va se connecter à la base de données plusieurs fois pour obtenir les détails de l'employé, informations d'adresse, informations de contact, informations de projets etc et peupler en un EmployeeDetailsModel (un type de viewmodel) et le renvoyer comme un JSON.

Est-ce une bonne approche? S'il y a une autre meilleure approche, veuillez suggérer

+0

Ce que vous demandez vraiment, c'est s'il est préférable que le client fasse plusieurs demande de rassembler des informations à partir des modèles respectifs ou assembler le modèle de vue sur le serveur et le renvoyer en utilisant un seul point de terminaison Web API - Je pense que la réponse dépend beaucoup de votre technologie client (est-ce une application Android? Client WCF?). En règle générale, je dirais qu'une API Web ne devrait pas fonctionner avec les modèles de vue, elle devrait fonctionner avec les concepts de domaine réels où un modèle de vue ne représente pas exactement l'objet monde réel. Un employé le fait mais un EmployeeView ne le fait pas. – Marcus

+0

@Marcus Client sera un client Web basé uniquement sur Angular JS, HTML, CSS et Javascript supplémentaire. –

+0

Pour moi, l'application async est plus facile du côté client. Dans mes projets, j'ai des contrôleurs pour chaque entité. Ils sont aussi simples que possible et retournent JSON seulement. Lorsque la page/page partielle de SPA se charge, je lance de nombreux appels de service Angular en parallèle (chaque entité a son propre appel) pour collecter les données du serveur à afficher. Pour le moment, cela fonctionne bien, plus tard, je peux appliquer une charge paresseuse si nécessaire. – SayusiAndo

Répondre

0

Aller avec votre approche pourrait s'avérer une mauvaise expérience utilisateur car les utilisateurs attendront que toutes les données soient assemblées. Je vous suggère de diviser votre page Web en sections. Appelez d'abord les données des employés, puis sur un événement client différent (par exemple cliquez sur la cellule du projet de l'employé) appelez le détail du projet de l'employé (en supposant qu'il s'agit d'un autre tableau)

+0

Toutes les données doivent être chargées après un seul CTA. Les détails de l'employé CTA devrait me montrer tout à la fois. Et les données dont je parle seront en KB. –