Ich arbeite an einem Projekt in MVC mit einer mobilen Anwendung, sodass klar ist, dass wir die Web-API verwenden müssen, damit sie in einer mobilen Anwendung verwendet werden kann.
Nach dem Erstellen der API, als wir mit der Entwicklung der Website begannen, waren wir verwirrt und diskutierten, ob die API oder der direkte Zugriff auf das Business-Objekt verwendet werden soll. Und wir waren der Meinung, dass erfahrene Entwickler die Web-API nutzen sollten, anstatt Business-Objekte direkt zu verwenden.
Ich habe Verwirrung in Bezug auf diese Lösungsstruktur.
1) Warum sollten wir die Web-API verwenden und eine HTTP-Anfrage (die zeitaufwendig ist) stellen, um Daten anstelle von Geschäftsobjekten, die sich in derselben Lösung befinden, direkt abzurufen oder abzulegen.
2) Nachdem sie Argumente hatten, sagten sie, was passiert, wenn der Client API und Web auf einem anderen Cloud-Server hosten und die Skalierung nur auf API anwenden möchte oder möglicherweise eine andere URL für den Zugriff auf API und Web haben möchte (was logisch ist). Sollen wir in diesem Fall die Web-API von der MVC-Anwendung in derselben Lösung aufrufen?
3) Wenn wir API und Web auf einem anderen Hosting hosten, bedeutet dies, dass unser Web WebClient verwendet und bei jeder Navigation ein HTTP-Aufruf erfolgt. Ist es richtig?
4) Wenn wir ein Geschäftsobjekt aus API und Webhosting auf einem anderen Server erstellen, muss bei einer Änderung in BL die Build auf beiden Servern aktualisiert werden.
5) Oder wir sollten nur ein Projekt für die API erstellen und Ansichten oder HTML-Seiten hinzufügen, um die Webschnittstelle zu entwickeln, damit wir die API direkt von Ajax aus aufrufen können.
Nach meinem Wissen ist # 5 die beste Lösung oder API ist nur für den Zugriff von Drittanbietern. Wenn sich DB, EF, Datenschicht und Geschäftsschicht in derselben Lösung befinden, sollten wir keine API verwenden, um HTTP-Aufrufe zu tätigen und direkt auf das Geschäftsobjekt zuzugreifen. (Korrigieren Sie mich, wenn ich falsch liege.) API wird benötigt, wenn eine mobile Anwendung oder ein Desktop oder eine andere Person auf die Anwendung zugreifen möchten, damit wir dasselbe Repository und dieselbe Datenschicht haben können.
In meinem Szenario muss eine API erstellt werden, da wir auch eine mobile Anwendung haben. Auf der Seite der Projekt-API haben wir die Business-Schicht (separates Projekt) und die Business-Schicht die Kommunikation mit der Datenzugriffsschicht (separates Projekt) aufgerufen. Meine Frage ist also, ob wir unsere API und das Web auf verschiedenen Servern hosten. Das Aufrufen der API, bei der es sich um eine HTTP-Anforderung handelt, dauert möglicherweise länger als die Verwendung der Methode aus der Business-Schicht, wenn wir das Projekt erstellen, und wir haben die DLL der Business-Schicht. Im API-Controller konvertieren wir einfach die Ausgabe unseres Geschäfts in das json-Format.
Ich habe im Internet gesucht, aber keine überzeugende Antwort erhalten. Ich habe einen Blog gefunden, in dem http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx denselben Punkt behandelt In diesem Blog ist meine Frage, warum wir Szenario # 3 betrachten müssen?
Update: Wir können verschiedene API-Projekte und MVC-Projekte haben und APIs über das Web mit jvascript aufrufen oder MVVM-Muster verwenden.