Perbedaan antara Proyek MVC 5 dan Proyek Web Api

135

Saya baru mengenal ASP.NET MVC dan Web API dan mencoba untuk mendapatkan dasar-dasarnya. AFAIK, kami memiliki template proyek di VS 2013, dinamai sebagai MVC, Web APIdan Both of them together.

Saya telah melalui tutorial dan belajar bahwa kita dapat membuat API hanya dengan menggunakan MVC dan juga dengan Template API Web.

Jadi, Apa perbedaan antara keduanya, berdasarkan Arsitektur dan Penggunaan ?

loop
sumber

Jawaban:

182

Pada dasarnya, Web APIpengontrol adalah MVCpengontrol, yang digunakan HttpMessageResponsesebagai jenis dasar dari responsnya, bukan ActionResponse. Mereka sama dalam banyak hal. Perbedaan utama antara tipe proyek adalah tipe MVC Applicationproyek menambahkan hal-hal spesifik web seperti default CSS, JavaScriptfile dan sumber daya lain yang diperlukan untuk situs web, yang tidak diperlukan untuk API.

MVC digunakan untuk membuat situs web. Dalam hal ini Controllersbiasanya mengembalikan View(yaitu respons HTML) ke permintaan browser. API Web di sisi lain biasanya dibuat untuk digunakan oleh aplikasi lain. Jika Anda ingin mengizinkan aplikasi lain untuk mengakses data / fungsionalitas Anda, Anda dapat membuat API Web untuk memfasilitasi akses ini. Misalnya, Facebook memiliki API untuk memungkinkan pengembang Aplikasi mengakses informasi tentang pengguna yang menggunakan Aplikasi. API Web tidak harus untuk konsumsi publik. Anda juga dapat membuat API untuk mendukung aplikasi Anda sendiri. Misalnya, kami membuat API Web untuk mendukung fungsionalitas AJAX dari situs web MVC kami.

Microsoft mengubah cara mereka menyajikan templat yang berbeda. Sekarang alih-alih menggunakan templat yang berbeda untuk jenis proyek yang berbeda, mereka mendorong pengembang untuk mencampur teknologi ASP.NET di dalam proyek yang sama sesuai kebutuhan. Microsoft menyebutnya vNext.

UPDATE: Untuk ASP.NET Core, Web API telah diintegrasikan ke dalam jenis proyek MVC 6 dan ApiControllerkelas tersebut dikonsolidasikan ke dalam Controllerkelas. Detail lebih lanjut di: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Elad Lachmi
sumber
1
Terima kasih Elad, saya mengerti. Bisakah Anda mengedit dan menambahkan sesuatu tentang Identitas Asp.net dan Web Api 2. Hanya beberapa bagaimana mereka akan digunakan dan bermanfaat. Hanya beberapa kata.
lingkaran
Jadi, saya sama sekali tidak dapat mengakses tindakan pengontrol dari aplikasi dektop. bahkan jika saya menggunakan sintaks GET yang tepat untuk memanggil URL?
dipecahkan
70

Dua sen saya ...

  1. Dalam ASP.Net MVC - MVC Controllermemutuskan apa yang seharusnya View- yaitu, pengontrol memutuskan apa yang harus "dilihat" pengguna (berdasarkan skenario atau konteks saat ini), ketika mereka membuat permintaan.
  2. Dalam Formulir Web ASP.Net , ASPXhalaman memutuskan apa yang harus "dilihat" pengguna saat mereka membuat permintaan.
  3. Namun di API Web , tidak ada kontrol / kekuatan untuk fitur Web API mana pun untuk memutuskan apa yang harus "dilihat" pengguna saat mereka membuat permintaan.

API Web BUKAN merupakan teknologi yang terikat dengan situs web saja. Ini dapat digunakan untuk berbagai tujuan - tidak hanya situs web. Jadi tidak tahu artinyarendering

Bacaan lebih lanjut

  1. Perencanaan Solusi Web Hari Ini: Formulir Web, ASP.NET MVC, API Web, dan OWIN.
  2. WCF atau ASP.NET Web API? Dua sen saya untuk masalah ini
  3. Generasi Selanjutnya dari .NET - ASP.NET vNext
  4. Memulai ASP.NET MVC 6
LCJ
sumber
Saya tidak tahu dari kode yang dibandingkan mengapa WebAPI lebih mudah dibaca. Selain itu, tampaknya ada sesuatu yang dibalik di sana, karena Web API-lah yang diharapkan memiliki atribut metode HTTP seperti [HttpGet]. Periksa beberapa kode WebAPI (dan WebAPI 2) di sini
Gobe
2
Jawaban yang diterima menyatakan "Pada dasarnya, pengontrol API Web adalah pengontrol MVC". Itu salah. Balasan Anda menunjukkan bahwa TITIK keseluruhan WebAPI adalah TIDAK MVC, TIDAK HARUS berurusan dengan semua bagasi dan overhead untuk menangani "Tampilan" dan "rendering". ... dan pengontrol WebApi bahkan tidak harus terikat dengan situs web saja. Balasan yang sangat bagus - terima kasih!
FoggyDay
0

Pengontrol MVC berasal dari kelas pengontrol. Di Mvc Anda bisa mengembalikan tampilan. Arsitektur Mvc digunakan untuk membuat aplikasi. Namun apis Web digunakan untuk menyediakan data ke berbagai aplikasi.

Drive Web Api dari pengontrol Api dan tidak mengembalikan tampilan.

Catatan: Anda juga dapat membuat Api Web dari pengontrol MVC tetapi Anda perlu mengembalikan hasil sebagai JsonResult atau jenis pengembalian yang didukung api web lainnya.

Akshay Kapoor
sumber
0

Selain jawaban yang sudah diberikan di sini, perlu diperhatikan setiap pengontrol yang mewarisi dari ApiController dan memiliki tindakan dengan kata kerja Http POST hanya dapat memiliki satu parameter masukan [FromBody]. Jika menggunakan pengontrol MVC (berasal dari 'Controller'), Anda dapat memiliki banyak parameter input pos.

barrypicker
sumber