WCF vs ASP .NET Web API

93

Apa pro dan kontra menggunakan masing-masing teknologi?

Api Web WCF sekarang digabungkan ke dalam Asp.net. Api web Asp.net sekarang mendukung hosting sendiri.

Saya masih membayangkan jika saya ingin mengekspos beberapa skema protokol untuk operasi yang sama, saya masih akan bersandar ke WCF atau dapatkah titik akhir Mvc melakukan ini juga?

Juga apakah api web Asp.Net baru mengekspos Wsdl? Jika tidak, bagaimana klien mengetahui operasi apa yang tersedia untuk mereka?

Bisa dibilang fitur terbaik dari Mvc adalah modelbinder. Seberapa kuatkah padanan WCF?

Jadi, dapatkah seseorang memberi tahu saya keuntungan apa yang diberikan oleh api web Asp.net? WCF tampaknya merupakan pilihan yang lebih kuat / skalabel, imo. Tentang satu-satunya hal yang dimiliki Api Web Mvc daripada model WCF mungkin adalah kemudahan pengembangan, tetapi itu berarti jongkok jika akhirnya menjadi batasan desain yang serius di masa mendatang.

Alwyn
sumber
15
Saya menemukan judul pertanyaan ini agak menyesatkan. Judulnya adalah "MVC 4 vs Wcf Web Api", tetapi pertanyaannya tampaknya lebih berkaitan dengan WCF vs ASP .NET Web API. Dari judulnya saya kira yang dibandingkan adalah framework standar MVC 4 (Controllers, Models, Views) vs ASP .Net Web API framework. Ada lagi yang menganggap judul ini menyesatkan?
BruceHill

Jawaban:

72

Pertama, saya sarankan Anda membaca posting saya tentang subjek: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- dua-sen-pada-subjek.aspx

Mengenai pertanyaan WSDL Anda - karena WebApi tidak menggunakan SOAP, tidak memerlukan WSDL, dan tidak mengekspornya. Anda dapat menggunakan Hypermedia untuk mengembalikan sumber daya dengan daftar kemungkinan URL aktivitas (anggap itu sebagai sumber daya yang mendeskripsikan diri sendiri)

IdoFlatow
sumber
6
Itu tulisan yang sangat bagus. Yang terbaik yang pernah saya lihat. Tapi saya sekarang lebih bingung dari sebelumnya. WebApi menambahkan begitu banyak, tetapi ketidakmampuan untuk mengekspos titik akhir lainnya tampaknya sangat membatasi. Jika Anda memiliki klien yang dapat menggunakan sabun, mereka sekarang akan dipaksa untuk membuat tindakan dan mengurai hasilnya dengan tangan saat sabun dapat menghasilkan seluruh konteks untuk mereka. Anda juga akan mengunci mereka dari fitur Sabun yang lebih canggih seperti sesi yang dapat diandalkan dan transaksi Asam ... huh.
Alwyn
2
@Alwyn - Saya pikir semua fakta yang Anda sebutkan adalah benar dan oleh karena itu seharusnya tidak membingungkan Anda melainkan membantu Anda membuat keputusan - API Web memiliki kelebihannya sendiri, tetapi Jika layanan Anda perlu diekspos dari beberapa titik akhir termasuk protokol lain, atau Anda sangat membutuhkan fitur penghasil otomatis klien atau fitur lanjutan sabun - ini mungkin menjadi pertimbangan mengapa lebih memilih WCF daripada Web API
BornToCode
@BornToCode: Kode klien dapat dibuat secara otomatis dengan WebAPI. Anda dapat membuat file json swagger menggunakan kode WebAPI. File json itu kemudian dapat digunakan oleh generator kode seperti swagger-codegen untuk menghasilkan kode klien dalam sejumlah besar bahasa target.
secara tidak sengaja dikosongkan
@unintentionallyleftblank - IMHO Masih lebih "ramah pengguna" untuk menghasilkan kode klien secara otomatis melalui WCF daripada Web API.
BornToCode
15

Pilihannya tergantung apa yang ingin kita lakukan.

  1. ASP.NET Web API adalah kerangka kerja untuk membangun layanan berbasis non-SOAP hanya melalui HTTP - jadi tidak ada lagi protokol transportasi yang tersedia menggunakan kerangka kerja ini.
  2. WCF / Windows Communication Foundation adalah kerangka kerja untuk bertukar pesan berbasis SOAP - di sini kami menggunakan banyak protokol transport: HTTP, TCP, Named pipe, MSMQ, dll ...

Saya tidak yakin mana yang memiliki kinerja lebih baik terkait jumlah datanya, mungkin WCF karena kita dapat menggunakan protokol rendah. Setiap komentar dihargai.

Junior Mayhé
sumber
2
Jangan tersinggung, tetapi HTTP hanyalah protokol lapisan aplikasi. Itu tidak memiliki batasan yang melekat pada protokol lapisan-transport apa yang dapat digunakan.
smwikipedia
8

API Web WCF terutama berfokus pada implementasi REST. Jika Anda menyiapkan implementasi REST, bit WCF standar agak merepotkan di bagian belakang. Jika Anda menyiapkan layanan RESTful, Anda akan menemukan WCF Web API pengalaman yang jauh lebih baik. Jika Anda sedang menyiapkan layanan SOAP, maka WCF Web API bukanlah teman terbaik Anda, dan Anda lebih baik menggunakan WCF untuk layanan Anda.

Gregory A Beamer
sumber
2
Ya, konfigurasinya memang merepotkan, tetapi ini adalah biaya pengaturan satu kali. Setelah Anda selesai melakukannya, Anda dapat menyalin dan menempelkan perilaku / titik akhir ke layanan lain. Sebagian besar waktu Anda dapatkan dengan hanya menandai operasi baru dengan WebGet. Di sisi lain, jika Anda pernah mendapatkan klien yang ingin menggunakan Soap + Wsdl, itu semua hanya perubahan konfigurasi yang bertentangan dengan kode + penerapan + QA + sisanya. Jadi bagaimana Mvc Web Api lebih baik?
Alwyn
1
Jika Anda sudah merasa nyaman dengan WCF, Anda dapat melanjutkan ke jalur itu. Ada, selain apa yang saya sebutkan, beberapa perbaikan internal pada REST di WCF Web API (saya tidak memiliki daftar di depan saya), tetapi keduanya dapat berfungsi dan saya tidak akan menghabiskan waktu berminggu-minggu untuk refactoring jika Anda memiliki banyak layanan kerja, esp. karena ada sedikit perubahan paradigma dalam berpikir. Untuk pekerjaan di masa depan, saya akan mempertimbangkan API Web WCF. Tapi saya telah menggunakan WCF Web API cukup lama, jadi saya mungkin bias.
Gregory A Beamer
0

Gunakan WCF untuk situs intranet / B2B n API Web untuk situs B2C / C2C / internet ... SOAP / XML masih standar untuk komunikasi intra-bisnis dan tidak akan hilang !!!

A_Var
sumber