Sto lavorando a un progetto in MVC che ha un'applicazione mobile, quindi una cosa è chiara che dobbiamo usare l'API Web in modo che possa essere utilizzata nell'applicazione mobile.
Dopo aver creato l'API quando abbiamo iniziato a sviluppare un sito Web, siamo confusi e abbiamo discusso sull'uso dell'API o sull'accesso diretto all'oggetto Business. E siamo finiti dopo aver avuto lo sviluppatore più esperto di un'opinione per consumare API Web invece di utilizzare direttamente l'oggetto Business.
Sto avendo confusione riguardo a questa struttura di soluzione.
1) Perché dovremmo usare l'API Web e fare una richiesta HTTP (che richiede tempo) per ottenere o inserire dati anziché oggetti business direttamente nella stessa soluzione.
2) Dopo aver litigato, hanno detto che cosa succede se il client vuole ospitare API e web su diversi server cloud e applicare il ridimensionamento solo su API o potrebbe voler avere un URL diverso per accedere all'API e al Web (che è logico). Quindi in quel caso dovremmo chiamare l'API Web dall'applicazione MVC nella stessa soluzione?
3) Se stiamo ospitando API e Web su hosting diverso, ciò significa che il nostro Web utilizzerà WebClient e avrà chiamate HTTP su ogni navigazione. È giusto?
4) Se avremo un oggetto business sia dall'API che dall'hosting Web su server diversi, allora se qualcosa di diverso in BL dovrà essere aggiornato su entrambi i server.
5) Oppure dovremmo creare un solo progetto per API e aggiungere viste o pagine html per sviluppare l'interfaccia Web in modo da poter chiamare direttamente API da ajax.
Secondo la mia conoscenza # 5 è la migliore soluzione o API è solo per l'accesso di terze parti. Se abbiamo DB, EF, livello dati e livello aziendale nella stessa soluzione, non dovremmo usare l'API per effettuare chiamate HTTP e accedere direttamente all'oggetto business. (correggimi se sbaglio) L'API è necessaria quando l'applicazione mobile o il desktop o qualcuno vuole accedere all'applicazione in modo da poter avere lo stesso repository e lo stesso livello di dati.
Nel mio scenario devo creare API poiché abbiamo anche un'applicazione mobile e nel lato API del progetto abbiamo chiamato il livello aziendale (progetto separato) e il livello aziendale comunicano con il livello di accesso ai dati (progetto separato). Quindi la mia domanda è se ospitiamo la nostra API e il nostro web su server diversi, quindi chiamare l'API che è una richiesta HTTP potrebbe richiedere più tempo invece di usare il metodo dal livello aziendale mentre creiamo il progetto e abbiamo .dll del livello aziendale. Nel controller API convertiamo semplicemente la nostra attività in formato json.
Ho cercato su internet ma non ho avuto una risposta convincente. Ho trovato un blog http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx discutendo ancora dello stesso punto in quel blog la mia domanda è: perché dobbiamo considerare lo scenario n. 3?
Aggiornamento: possiamo avere diversi progetti API e progetti MVC e possiamo chiamare API dal web usando jvascript o usare il modello MVVM.