Apa sebenarnya "Web API" di ASP.Net MVC4?


15

Saya tahu apa itu Web API.
Saya telah menulis API dalam berbagai bahasa (termasuk di MVC3).
Saya juga berlatih dengan baik di ASP.Net.
Saya baru saja menemukan bahwa MVC4 memiliki "Web API" dan tanpa melihat contoh video saya tidak dapat menemukan penjelasan yang baik tentang apa sebenarnya itu.
Dari pengalaman masa lalu saya, teknologi Microsoft (terutama ASP.Net) memiliki kecenderungan untuk mengambil konsep sederhana dan membungkusnya dengan banyak overhead yang tidak berguna yang dimaksudkan untuk membuat semuanya "lebih mudah".
Dapatkah seseorang tolong jelaskan kepada saya apa sebenarnya Web API di MVC4 itu? Mengapa saya membutuhkannya? Mengapa saya tidak bisa menulis API sendiri?


3
Apakah Anda berbicara tentang kerangka kerja API Web baru ? Itu terpisah dari MVC. Jika itu yang Anda maksud, lihat posting blog ini oleh Rick Strahl.
Oded

1
@Oded: Anda harus meletakkan ini sebagai jawaban.
James P. Wright

Hal paling keren tentang API Web (yang saya lihat tidak tercantum di mana pun dalam jawaban yang diterima atau tautan di atas) adalah bahwa jika Anda mengembalikan IQueryable <> metode web Anda secara otomatis mendukung sintaksis kueri OData! - Secara umum ASP.NET 4.5 Stack "Web API" dan "SignalR" adalah "menggantikan" WCF (Saya tidak yakin apakah mereka dibangun di atas WCF atau tidak, tetapi WCF telah dihapus dari semua diagram blok dan diganti dengan "Web API" dan "SignalR").
BrainSlugs83

Why can't I just write my own API?Dengan hanya ASP.NET MVC biasa? Kamu bisa. ASP.NET MVC Web API hanya memberi Anda barang ekstra untuk membuatnya lebih mudah. Silahkan lihat di bawah ini.
Jim G.

Jawaban:


16

ASP.NET Web API adalah kerangka kerja "non-pendapat" untuk membangun Layanan HTTP terlepas dari REST atau RPC. Ini adalah implementasi terbaik RFC 2616 (HTTP Spec) dari Microsoft.

Tentu saja Anda dapat membuat API Anda sendiri tetapi ASP.NET Web API:

  • Dibangun berdasarkan model Doll Rusia yang memungkinkan modul mirip lego ditambahkan ke pipa HTTP
  • Membuat HTTP warga negara kelas satu sehingga semua header umum sangat diketik (bukan hanya nilai nama) dan membantu mengurai mereka
  • Mengizinkan hosting ASP.NET (IIS) atau hosting mandiri
  • mendukung negosiasi konten, jenis media, ...
  • Apakah Async dari atas ke bawah
  • Menggunakan pendekatan serupa untuk klien dengan HttpClient

6

API Web baru dari Microsoft, seperti namanya menyarankan semua tentang penulisan API yang dapat diakses web, dengan kecenderungan pada REST.

Rick Strahl baru-baru ini membuat blog tentang itu dan memiliki analisis yang baik tentang kapan harus menggunakan MVC vs Web API.

Hal-hal seperti negosiasi konten dibangun, beberapa format bawaan dan banyak lagi.


6

Singkatnya: ASP.NET Web API membuat REST menjadi warga negara kelas satu di .NET , yang tidak bisa diterima oleh WCF. Seperti yang Anda ketahui, ASP.NET Web API adalah kerangka kerja for building web APIsdi atas .NET Framework.

Salah satu frustrasi terbesar yang kami miliki sebagai pengembang web adalah menghadapi konfigurasi tanpa akhir dengan WCF. Maksud saya, WCF itu hebat tetapi belum menerima REST sejak kerangka kerja WCF Web API . Ada sesuatu yang disebut REST Starter Kit tetapi akhirnya mati.

Namun, ASP.NET Web API adalah kerangka kerja generasi berikutnya yang membuatnya mudah untuk membangun layanan HTTP yang menjangkau berbagai klien, seperti browser dan perangkat seluler. Ini adalah platform yang ideal untuk membangun aplikasi RESTful di .NET Framework. Untuk informasi lebih lanjut dan posting blog yang hebat, kunjungi halaman blogger ASP.NET Web API


1
Jika Anda meneliti sejarah API Web, itu dimulai di WCF.
SASS_Shooter

Yah, itu adalah penggantian yang ringan dengan fitur-fitur penting untuk memudahkan konfigurasi dan merampingkan pengembangan aplikasi.
Yusubov

@Yusobov: Ini tidak sepenuhnya benar - Ada juga Layanan Data WCF yang cukup bagus untuk membangun apis REST yang kompatibel dengan Odata. Saya sudah menggunakannya di lingkungan produksi dan itu benar-benar berfungsi dengan baik setelah diatur. Satu-satunya masalah dengan itu adalah bahwa jauh lebih sulit untuk diatur daripada ASP.NET Web API.
Adrian Grigore

1

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.

http://www.asp.net/web-api


EDIT:

Secara khusus, ASP.NET Web API mencakup:

  1. Pipa ASP.NET yang disederhanakan dengan overhead yang dikurangi jika Anda memilih untuk meng-host layanan Anda di IIS.
  2. HttpClient yang memudahkan klien untuk terhubung ke Web API.

Saya bisa membaca hal-hal itu sendiri. Pertanyaan saya adalah apa gunanya? Apa yang sangat berbeda dalam menggunakan Web API dan menggunakan MVC biasa tetapi memiliki JsonResults bukannya ViewResults?
James P. Wright

1. Sebelum MVC 4, Anda bisa mengembalikan JSONResult tanpa masalah. MVC 4 hanya mempertahankan kemampuan itu, termasuk beberapa kelas pembantu lain untuk membuatnya lebih mudah, dan merampingkan pipa ASP.NET untuk mengurangi overhead ketika Anda tahu bahwa Anda tidak perlu mengembalikan ViewResults.
Jim G.

1
Juga, karena ini merupakan pembaruan yang efektif untuk WCF Web API, Anda tidak menikah dengan IIS. Anda dapat meng-host sendiri layanan ASP.NET Web API jika diinginkan. wcf.codeplex.com/...
Jim G.

-2

Saat ini, aplikasi berbasis web tidak cukup untuk menjangkau pelanggannya. Orang-orang sangat cerdas, mereka menggunakan perangkat iphone, ponsel, tablet, dll. Dalam kehidupan sehari-harinya. Perangkat ini juga memiliki banyak aplikasi untuk memudahkan hidup. Sebenarnya, kami bergerak dari web menuju dunia aplikasi. Jadi, jika Anda ingin mengekspos data layanan Anda ke browser dan juga semua aplikasi perangkat modern ini dengan cara cepat dan sederhana, Anda harus memiliki API yang kompatibel dengan browser dan semua perangkat ini.


ini sepertinya tidak menambah sesuatu yang substansial pada poin yang dibuat dan dijelaskan dalam 4 jawaban sebelumnya
nyamuk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.