Je travaille sur un projet dans MVC qui a une application mobile. Une chose est claire: nous devons utiliser une API Web pour pouvoir l'utiliser dans une application mobile.
Après avoir créé l'API lorsque nous avons commencé à développer un site Web, nous sommes confus et avons discuté de l'opportunité d'utiliser l'API ou d'accéder directement à l'objet Business. Et nous avons fini par avoir l'avis d'un développeur plus expérimenté pour utiliser l'API Web au lieu d'utiliser directement l'objet Business.
J'ai de la confusion en ce qui concerne cette structure de solution.
1) Pourquoi devrions-nous utiliser l'API Web et faire une requête HTTP (qui prend beaucoup de temps) pour obtenir ou mettre des données à la place de l'objet métier directement dans la même solution?
2) Après avoir eu des arguments, ils ont dit ce qui se passe si le client souhaite héberger une API et le Web sur un serveur cloud différent et applique la mise à l'échelle uniquement sur l'API ou peut-être qu'il souhaite disposer d'une URL différente pour accéder aux API et au Web (ce qui est logique). Donc, dans ce cas, devrions-nous appeler l'API Web de l'application MVC dans la même solution?
3) Si nous hébergeons des API et des sites Web sur différents hébergements, cela signifie que notre site Web utilisera WebClient et utilisera un appel HTTP à chaque navigation. Est ce juste?
4) Si les objets métier sont constitués à la fois par une API et un hébergement Web sur un serveur différent, toute modification de BL nécessitera une mise à jour de la construction sur les deux serveurs.
5) Ou nous devrions créer un seul projet pour l'API et ajouter des vues ou des pages html pour développer l'interface Web afin d'appeler directement l'API depuis ajax.
Selon mes connaissances, n ° 5 est la meilleure solution ou API ne concerne que les accès tiers. Si nous avons une base de données, une couche EF, une couche de données et une couche métier dans la même solution, nous ne devrions pas utiliser d'API pour passer des appels HTTP et accéder directement à un objet métier. (corrigez-moi si je me trompe). Une API est nécessaire lorsque une application mobile, un ordinateur de bureau ou tout autre utilisateur souhaite accéder à une application afin que nous puissions avoir le même référentiel et la même couche de données.
Dans mon scénario, je dois créer une API car nous avons également une application mobile et, du côté de l'API de projet, nous avons appelé couche métier (projet séparé) et la couche métier communique avec la couche d'accès aux données (projet séparé). Ma question est donc la suivante: si nous hébergeons notre API et notre site Web sur différents serveurs, alors appeler une API qui est une requête HTTP peut prendre plus de temps que d’utiliser une méthode de la couche métier lorsque nous créons le projet et que nous avons le fichier .dll de la couche métier. Dans le contrôleur API, nous convertissons simplement la vente de notre entreprise au format JSON.
J'ai cherché sur internet mais je n'ai pas eu de réponse convaincante. J'ai trouvé un blog http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx discutant du même point mais encore Dans ce blog, ma question est la suivante: pourquoi devons-nous envisager le scénario n ° 3?
Mise à jour: Nous pouvons avoir différents projets API et projets MVC et appeler l'API depuis le Web à l'aide de jvascript ou à l'aide du modèle MVVM.