Saya sedang mengerjakan sebuah proyek di MVC yang memiliki aplikasi seluler jadi satu hal yang jelas bahwa kita harus menggunakan Web API sehingga dapat digunakan dalam aplikasi seluler.
Setelah membuat API ketika kami mulai mengembangkan situs Web, kami bingung dan berdiskusi apakah akan menggunakan API atau langsung mengakses objek Bisnis. Dan kami berakhir setelah memiliki formulir pendapat pengembang yang lebih berpengalaman untuk mengkonsumsi Web API daripada menggunakan objek Bisnis secara langsung.
Saya mengalami kebingungan mengenai struktur solusi ini.
1) Mengapa kita harus menggunakan API Web dan membuat permintaan HTTP (yang memakan waktu) untuk mendapatkan atau menempatkan data alih-alih objek bisnis secara langsung yang berada dalam solusi yang sama.
2) Setelah berdebat mereka mengatakan bagaimana jika klien ingin meng-host API dan web di server cloud yang berbeda dan menerapkan penskalaan hanya pada API atau mungkin dia ingin memiliki url berbeda untuk mengakses API dan Web (yang menurut logika). Jadi dalam hal ini kita harus memanggil Web API dari aplikasi MVC dalam solusi yang sama?
3) Jika kita hosting API dan Web pada hosting yang berbeda maka itu berarti Web kita akan menggunakan WebClient dan memiliki panggilan HTTP pada setiap navigasi. Apakah tepat?
4) Jika kita akan objek bisnis membentuk API dan hosting Web pada server yang berbeda maka jika ada perubahan pada BL akan perlu memperbarui build di kedua server.
5) Atau kita harus membuat hanya satu proyek untuk API dan dapat menambahkan tampilan atau halaman html untuk mengembangkan antarmuka Web sehingga dengan cara itu kita dapat langsung memanggil API dari ajax.
Sesuai pengetahuan saya # 5 adalah solusi terbaik atau API hanya untuk akses pihak ke-3. Jika kita memiliki DB, EF, lapisan data dan lapisan bisnis dalam solusi yang sama maka kita tidak boleh menggunakan API untuk melakukan panggilan HTTP dan secara langsung mengakses objek bisnis. (koreksi saya jika saya salah) API diperlukan ketika aplikasi seluler atau desktop atau siapa pun ingin mengakses aplikasi sehingga kami dapat memiliki repositori dan lapisan data yang sama.
Dalam skenario saya, saya harus membuat API karena kami juga memiliki aplikasi seluler, dan di sisi API proyek kami menyebutnya lapisan bisnis (proyek terpisah) dan lapisan bisnis berkomunikasi ke lapisan akses data (proyek terpisah). Jadi pertanyaan saya adalah apakah kita meng-host API dan web kita ke server yang berbeda kemudian memanggil API yang merupakan permintaan HTTP mungkin membutuhkan waktu lebih lama daripada menggunakan metode dari lapisan bisnis saat kita membuat proyek dan kita sudah .dll dari lapisan bisnis. Dalam kontroler API kami hanya mengonversi put bisnis kami ke format json.
Saya sudah mencari di internet tetapi tidak mendapatkan jawaban yang meyakinkan. Saya telah menemukan blog http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx membahas hal yang sama tetapi sekali lagi di blog itu pertanyaan saya adalah mengapa kita perlu mempertimbangkan skenario # 3?
Pembaruan: Kami dapat memiliki proyek API dan proyek MVC yang berbeda dan kami dapat memanggil API dari web menggunakan jvascript atau dapat menggunakan pola MVVM.