ASP.NET WebApi vs MVC? [Tutup]

140

Dengan pengontrol ASP.NET MVC Anda dapat mengekspos data Anda dalam berbagai format. AspNetWebAPI dirancang secara eksplisit untuk membuat API tetapi saya dapat dengan mudah melakukannya dengan pengontrol MVC, tidak jelas bagi saya dalam hal apa akan lebih baik daripada pengontrol MVC tradisional. Saya tertarik pada skenario di mana manfaat WebApi jelas dan layak untuk menambahkan lapisan kompleksitas lain ke aplikasi saya.

Pertanyaan: apa kelebihan dan / atau kekurangan menggunakan asp.net WebApi sehubungan dengan MVC?

Hugo Zapata
sumber
11
Lucu bagi saya betapa acak pertanyaan-pertanyaan "vs" ini bisa langsung ditutup atau naik ke tingkat suara yang lebih tinggi.
cbmeeks
10
Grrr. Aku benci spanduk-spanduk yang "ditutup karena terlalu keras". Sering kali saya menemukan pertanyaan hebat seperti ini. Dan lebih sering daripada tidak, mereka juga memiliki jawaban yang bagus. Jadi bagaimana kalau terlalu luas. Para ahli ada di sini dan bukan di wikipedia atau di forum lain. Jadi biarkan mereka melakukan hal mereka dan keluar dari jalan.
nharrer

Jawaban:

47

WebApi memungkinkan untuk membuat layanan yang dapat diekspos melalui HTTP daripada melalui layanan formal seperti WCF atau SOAP. Perbedaan lainnya adalah cara WebApi menggunakan protokol Http dan menjadikannya warga negara Http kelas satu.

PEMBARUAN: Inti ASP.NET, Web API telah diintegrasikan ke dalam jenis proyek MVC. The ApiControllerkelas dikonsolidasikan ke dalam Controllerkelas. Lebih banyak di: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Tautan perbandingan, diskusi & tutorial yang relevan:

masukkan deskripsi gambar di sini

Yusubov
sumber
20
Tidak setuju bahwa pos lainnya serupa. Posting lain sebenarnya tentang WCF vs WebAPI.
Shane Courtrille
Secara teknis dikatakan WCF Web API, namun posting menyebutkan pada baris kedua bahwa ia bergabung ke api web Asp.net sekarang dan mendukung hosting sendiri. Toh saya sudah memperbarui tautan dengan yang lebih baru. Semoga itu bisa membantu.
Yusubov
Diperbarui referensi.
Yusubov
23

WebAPI memuntahkan OData, sehingga Anda mendapatkan semua keuntungan menggunakan OData. Misalnya, dengan WebAPI Anda dapatkan:

  • Opsi kueri seperti $ filter, $ top, $ orderby, dll.
    • Dengan pengontrol MVC tradisional, Anda perlu mengimplementasikannya sendiri.
  • Standarisasi format
    • Ada klien OData yang akan memahami format yang mendasari API RESTful Anda.
Paolo del Mundo
sumber
5
Semacam. Saya BISA mendukung oData, tetapi hanya jika Anda menghias tindakan dengan atribut 'queryable', setidaknya pada RC.
EBarr
14

API Web Asp.Net VS Asp.Net MVC 1 . Asp.Net MVC digunakan untuk membuat aplikasi web yang mengembalikan tampilan dan data, tetapi Asp.Net Web API digunakan untuk membuat layanan HTTP penuh dengan cara mudah dan sederhana yang mengembalikan hanya data yang tidak dilihat.masukkan deskripsi gambar di sini

2 . Web API membantu membangun layanan REST-ful di atas .NET Framework dan juga mendukung negosiasi konten (ini tentang menentukan data format respons terbaik yang dapat diterima oleh klien. Bisa saja JSON, XML, ATOM atau data yang diformat lainnya ), hosting mandiri yang tidak ada di MVC.

3 . Web API juga menangani pengembalian data dalam format tertentu seperti JSON, XML atau lainnya berdasarkan header Terima dalam permintaan dan Anda tidak khawatir tentang itu. MVC hanya mengembalikan data dalam format JSON menggunakan JsonResult.

4 . Di Web API permintaan dipetakan ke tindakan berdasarkan kata kerja HTTP tetapi dalam MVC itu dipetakan ke nama tindakan.

5 . Asp.Net Web API adalah kerangka kerja baru dan bagian dari kerangka kerja inti ASP.NET. Penjilidan model, filter, perutean, dan fitur MVC lainnya yang ada di Web API berbeda dari MVC dan ada di perakitan System.Web.Http baru. Di MVC, patung-patung ini ada dengan di System.Web.Mvc. Karenanya Web API juga dapat digunakan dengan Asp.Net dan sebagai lapisan layanan yang berdiri sendiri.

6 . Anda dapat mencampur API Web dan pengontrol MVC dalam satu proyek untuk menangani permintaan AJAX tingkat lanjut yang dapat mengembalikan data dalam format JSON, XML atau lainnya dan membangun layanan HTTP penuh. Biasanya, ini akan disebut hosting mandiri API Web.

7 . Ketika Anda memiliki MVC campuran dan pengontrol API Web dan Anda ingin menerapkan otorisasi maka Anda harus membuat dua filter satu untuk MVC dan satu lagi untuk Web API karena keduanya berbeda.

8 . Selain itu, API Web adalah arsitektur yang ringan dan selain aplikasi web juga dapat digunakan dengan aplikasi ponsel pintar.

Sumber asli ada di sini

curiousBoy
sumber
13

Kesamaan

1) keduanya mewarisi dari ihhtphandler untuk asyncrequest jadi pada dasarnya apicontroller atau mvc controller keduanya adalah pembungkus di web.http

Perbedaan: 1) kontroler mvc sangat berat jika Anda dapat melihat definisi Anda, Anda dapat melihat berapa banyak antarmuka dan kode dasar yang digunakan, api web adalah pengontrol yang lebih ringan dan membedakan permintaan dengan parameter yang dilewatinya (ya kami dapat mengubahnya juga! )

2) Pengontrol MVC memiliki terlalu banyak fitur seperti mengembalikan tampilan, hasil tindakan, hasil javascript dll tetapi dalam web api memiliki JSON atau XML

3) API adalah untuk mengimplementasikan layanan Restful (get, post, put, delete, options) yang dapat di-host secara mandiri di mana saja tanpa tergantung pada tampilan, pengontrol MVC tidak dapat mendukungnya karena terintegrasi erat dengan pandangan.

LostCoder
sumber
1
Perlu dicatat bahwa Anda masih dapat menyelesaikan perilaku seperti API dengan MVC menggunakan hasil tindakan MVC seperti JSONResult, dll. Namun saat Anda menunjukkan pengontrol MVC lebih berat. Juga cara pengontrol API Web diimplementasikan lebih kondusif untuk membuat API daripada MVC.
Grizzly Peak Software
12

Gambar ini tampaknya menunjukkan perbedaan dan persamaan dalam hal ini. Saya harap bantuan itu menarik bagi saya.

masukkan deskripsi gambar di sini

BehrouzMoslem
sumber
10

Pada titik tertentu Anda mungkin ingin bersama-sama melupakan ASP.NET MVC. Jika Anda seorang pengembang .NET tetapi Anda ingin membangun aplikasi Satu Halaman (menggunakan Angular misalnya) Anda akan menginginkan manfaat dari layanan RESTful (WebAPI) tanpa semua mengasapi yang tidak perlu yang datang dengan ASP.NET MVC.

Tentang Bob
sumber
5

ASP.NET MVC Dan ASP.NET Web api keduanya menggunakan untuk tujuan yang berbeda

ASP.NET

ASP.NET menawarkan tiga kerangka kerja untuk membuat aplikasi web: Formulir Web, ASP.NET MVC, dan ASP.NET Web Pages. Ketiga kerangka kerja ini stabil dan matang, dan Anda dapat membuat aplikasi web yang hebat dengan semua itu. Apa pun kerangka yang Anda pilih, Anda akan mendapatkan semua manfaat dan fitur ASP.NET di mana-mana.

Setiap kerangka kerja menargetkan gaya pengembangan yang berbeda. Yang Anda pilih tergantung pada kombinasi aset pemrograman Anda (pengetahuan, keterampilan, dan pengalaman pengembangan), jenis aplikasi yang Anda buat, dan pendekatan pengembangan yang Anda sukai. Ketiga kerangka kerja akan didukung, diperbarui, dan ditingkatkan dalam rilis ASP.NET mendatang.

MVC

ASP.NET MVC memberi Anda cara yang kuat dan berbasis pola untuk membangun situs web dinamis yang memungkinkan pemisahan kekhawatiran secara bersih dan yang memberi Anda kontrol penuh atas markup untuk pengembangan yang cepat dan menyenangkan. ASP.NET MVC mencakup banyak fitur yang memungkinkan pengembangan cepat, ramah TDD untuk membuat aplikasi canggih yang menggunakan standar web terbaru.

API web

ASP.NET Web API adalah kerangka kerja yang membuatnya mudah untuk membangun layanan HTTP yang menjangkau berbagai klien, termasuk browser dan perangkat seluler. ASP.NET Web API adalah platform yang ideal untuk membangun aplikasi RESTful di .NET Framework.

Anda dapat membaca formulir lebih lanjut di sini http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

Coder
sumber
3

ASP.NET MVC berfokus pada membuat keluaran HTML menjadi mudah. ASP.NET Web API berfokus untuk membuat keluaran data mentah menjadi mudah.

Di dunia WebForms, ASP.NET MVC akan setara dengan halaman .aspx dan ASP.NET Web API akan menjadi .asmx

Murugesan Nataraj
sumber
2

Asp.Net MVC digunakan untuk membuat aplikasi web yang mengembalikan tampilan dan data, tetapi Asp.Net Web API digunakan untuk membuat layanan HTTP penuh dengan cara mudah dan sederhana yang mengembalikan hanya data yang tidak dilihat.

Web API membantu membangun layanan REST-ful di atas .NET Framework dan juga mendukung negosiasi konten (ini tentang menentukan data format respons terbaik yang dapat diterima oleh klien. Bisa saja JSON, XML, hosting mandiri yang tidak dalam MVC.

Web API juga menangani pengembalian data dalam format tertentu seperti JSON, XML atau lainnya berdasarkan header Terima dalam permintaan dan Anda tidak khawatir tentang itu. MVC hanya mengembalikan data dalam format JSON menggunakan JsonResult.

Nikhil Fegade
sumber
1

Biasanya, WebAPI digunakan untuk layanan data di mana MVC dapat menghasilkan lebih banyak jenis output.

WebAPI pasti menyederhanakan cara kita dapat membuat layanan data. Bersih dan mudah untuk tujuan ini. MVC hadir dengan beberapa alat lainnya.

MVC dapat menghasilkan keluaran apa pun yang dapat dihasilkan WebAPI. Menghasilkan output dari template dapat dengan mudah dicapai di MVC. Saya tidak dapat menemukan alasan untuk melakukannya di WebAPI. Pengembang PHP dan pemrogram ASP lama mungkin mengetahui sikap ini dari masa lalu, di mana Anda dapat membuat file HTML yang terlibat dengan kode C # di dalamnya.

WebAPI- DATA MVC - DATA, UI / HTML, XHTML, File, Templat dll.

Eitan Revach
sumber