Saya telah menghabiskan beberapa bulan mencoba memahami konsep di balik WCF dan baru-baru ini saya telah mengembangkan aplikasi layanan WCF pertama saya.
Saya telah berjuang sedikit untuk memahami semua pengaturan dalam file konfigurasi.
Saya tidak yakin tentang lingkungan tetapi tampaknya Anda dapat melakukan hal-hal luar biasa dengannya.
Suatu hari saya menemukan bahwa Microsoft telah mengeluarkan hal baru yang disebut ASP.NET Web API .
Untuk apa yang saya bisa baca itu adalah kerangka TETAP , sangat mudah digunakan dan diimplementasikan.
Sekarang, saya mencoba mencari tahu apa perbedaan utama antara 2 kerangka kerja dan apakah saya harus mencoba dan mengonversi aplikasi layanan WCF lama saya dengan API baru.
Bisakah seseorang, tolong, bantu saya untuk memahami perbedaan dan penggunaan masing-masing?
sumber
Jawaban:
API Web ASP.NET yang baru merupakan kelanjutan dari proyek API Web WCF sebelumnya (meskipun beberapa konsep telah berubah ).
WCF pada awalnya dibuat untuk mengaktifkan layanan berbasis SOAP. Untuk layanan RESTful atau RPCish yang lebih sederhana (pikirkan klien seperti jQuery) ASP.NET Web API harus menjadi pilihan yang baik.
sumber
HttpClient
yang luar biasa, tetapi tidak menangani pembuatan entitas dan serialisasi / deserialisasi.INotifyPropertyChanged
entitas klien? Bagaimana dengan validasi?Bagi kami, WCF digunakan untuk SOAP dan Web API untuk REST. Saya berharap API Web juga mendukung SOAP. Kami tidak menggunakan fitur-fitur canggih WCF. Berikut ini adalah perbandingan dari MSDN :
sumber
ASP.net Web API adalah semua tentang GET, POST, PUT, DELETE yang berbasis HTTP dan REST dengan gaya pemrograman ASP.net MVC dan JSON yang dapat dikembalikan; API web adalah untuk semua proses yang ringan dan komponen berbasis HTTP murni. Agar seseorang dapat melanjutkan dengan WCF bahkan untuk layanan web tunggal yang sederhana atau paling sederhana itu akan membawa semua bagasi tambahan. Untuk layanan sederhana dan ringan untuk panggilan dinamis atau ajax selalu WebApi hanya menyelesaikan kebutuhan. Ini dengan rapi melengkapi atau membantu secara paralel dengan ASP.net MVC.
Lihat podcast: Hanselminut Podcast 264 - Ini bukan WCF ayahmu - Semua tentang WebAPI dengan Glenn Block oleh Scott Hanselman untuk informasi lebih lanjut.
sumber
Dalam skenario yang tercantum di bawah ini, Anda harus menggunakan WCF:
API WEB adalah kerangka kerja untuk mengembangkan layanan RESTful / HTTP.
Ada begitu banyak klien yang tidak memahami SOAP seperti Peramban, HTML5, dalam hal ini API WEB adalah pilihan yang baik.
Header layanan HTTP menentukan cara mengamankan layanan, cara menyimpan informasi, jenis badan pesan, dan badan HTTP dapat menentukan jenis konten apa pun seperti HTML, bukan hanya XML sebagai layanan SOAP.
sumber
Sejak menggunakan keduanya sampai sekarang, saya telah menemukan banyak perbedaan antara WCF dan Web API. Kedua tumpukan teknologi cocok untuk skenario yang berbeda, sehingga tidak mungkin untuk mengatakan mana yang lebih baik, ini tergantung pada konfigurasi dan skenario.
Catatan: Data bukan hanya pandangan saya, tetapi juga dikumpulkan dari situs web resmi lainnya.
sumber
WCF akan memberi Anda begitu banyak di luar kotak, bahkan tidak sebanding dengan apa pun. Kecuali jika Anda ingin melakukan implementasi sendiri (untuk beberapa nama) otentikasi, otorisasi, enkripsi, antrian, pembatasan, pengiriman pesan yang andal, masuk, sesi dan sebagainya. WCF bukan [hanya] layanan web; WCF adalah platform pengembangan untuk SOA.
sumber
Mengapa saya menjawab:
Saya menghabiskan banyak waktu untuk memahami perbedaan antara kedua teknologi ini. Saya akan meletakkan semua poin di sini yang saya pikir "Jika saya memiliki poin-poin ini pada saat saya bertanya-tanya mencari jawaban ini, maka saya telah memutuskan sebelumnya dalam memilih teknologi yang saya butuhkan."
Sumber informasi:
Microsoft® Visual Studio® 2015 Unleashed
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Mengapa ASP.NET Web API dan WCF:
Sebelum membandingkan teknologi ASP.NET Web API dan WCF, penting untuk dipahami bahwa sebenarnya ada dua gaya / standar untuk membuat layanan web: REST (Representational State Transfer) dan SOAP / WSDL. SOAP / WSDL adalah standar asli tempat layanan web dibangun. Namun, sulit untuk menggunakan dan memiliki format pesan besar (seperti XML) yang menurunkan kinerja. Layanan berbasis REST dengan cepat menjadi alternatif. Mereka lebih mudah untuk menulis karena mereka memanfaatkan konstruksi dasar HTTP (GET, POST, PUT, DELETE) dan biasanya menggunakan format pesan yang lebih kecil (seperti JSON). Akibatnya, layanan HTTP berbasis REST sekarang menjadi standar untuk layanan penulisan yang secara ketat menargetkan Web.
Mari kita tentukan tujuan ASP.NET Web API
ASP.NET Web API adalah teknologi Microsoft untuk mengembangkan layanan web HTTP berbasis REST. (Sudah lama menggantikan Microsoft ASMX, yang didasarkan pada SOAP / WSDL.) Web API membuatnya mudah untuk menulis layanan yang kuat berdasarkan protokol HTTP yang dipahami oleh semua browser dan perangkat asli. Ini memungkinkan Anda untuk membuat layanan untuk mendukung aplikasi Anda dan memanggil mereka dari aplikasi web lain, tablet, ponsel, PC, dan konsol game. Mayoritas aplikasi yang ditulis hari ini untuk meningkatkan koneksi Web yang pernah ada menggunakan layanan HTTP dalam beberapa cara.
Sekarang mari kita mendefinisikan tujuan WCF:
Berkomunikasi di Internet tidak selalu merupakan cara yang paling efisien. Misalnya, jika klien dan layanan ada pada teknologi yang sama (atau bahkan mesin yang sama), mereka sering dapat menegosiasikan cara yang lebih efisien untuk berkomunikasi (seperti TCP / IP). Pengembang layanan menemukan diri mereka membuat pilihan yang sama yang mereka coba hindari. Mereka sekarang harus memilih antara menciptakan layanan internal yang efisien dan dapat memiliki akses luas yang ditemukan melalui Internet. Dan, jika mereka harus mendukung keduanya, mereka mungkin harus membuat beberapa versi layanan mereka atau setidaknya proxy terpisah untuk mengakses layanan mereka. Ini adalah masalah yang diselesaikan Microsoft dengan WCF .
Dengan WCF, Anda dapat membuat layanan Anda tanpa memperhatikan batasan. Anda kemudian dapat membiarkan WCF khawatir menjalankan layanan Anda dengan cara yang paling efisien, tergantung pada klien panggilan. Untuk mengelola tugas ini, WCF menggunakan konsep titik akhir. Layanan Anda mungkin memiliki beberapa titik akhir (dikonfigurasi pada waktu desain atau setelah penerapan). Setiap titik akhir menunjukkan bagaimana layanan dapat mendukung klien panggilan: melalui Web, melalui remoting, melalui Antrian Pesan Microsoft (MSMQ), dan banyak lagi. WCF memungkinkan Anda untuk fokus menciptakan fungsi layanan Anda. Ini khawatir tentang cara paling efisien berbicara dengan klien panggilan. Dengan cara ini, satu layanan WCF dapat secara efisien mendukung berbagai jenis klien.
Contoh WCF:
Perhatikan contohnya:
Data pelanggan dibagi di antara aplikasi. Setiap aplikasi dapat ditulis pada platform yang berbeda, dan mungkin ada di lokasi yang berbeda. Anda dapat mengekstraksi antarmuka pelanggan ke layanan WCF yang menyediakan akses umum ke data pelanggan bersama. Ini memusatkan data, mengurangi duplikasi, menghilangkan sinkronisasi, dan menyederhanakan manajemen. Selain itu, dengan menggunakan WCF, Anda dapat mengonfigurasi titik akhir layanan agar berfungsi dengan cara yang masuk akal bagi klien pemanggil. Gambar menunjukkan contoh dari sebelumnya dengan akses terpusat data pelanggan di layanan WCF.
Kesimpulan:
i) Kapan memilih API Web:
Tidak dapat disangkal bahwa layanan HTTP berbasis REST seperti yang dibuat menggunakan ASP.NET Web API telah menjadi standar untuk membangun layanan web. Layanan ini menawarkan pendekatan yang mudah dan langsung untuk pengembang web membangun layanan. Pengembang web memahami HTTP GET dan POST dan dengan demikian beradaptasi dengan baik untuk jenis layanan ini. Oleh karena itu, jika Anda menulis layanan yang ditargetkan untuk HTTP , ASP.NET Web API adalah pilihan logis.
ii) Kapan harus memilih WCF:
Teknologi WCF berguna ketika Anda perlu mendukung beberapa titik akhir layanan berdasarkan protokol dan format pesan yang berbeda. Produk-produk seperti Microsoft BizTalk memanfaatkan WCF untuk menciptakan layanan yang kuat yang dapat digunakan melalui Web juga melalui konfigurasi mesin-ke-mesin yang berbeda. Namun, jika Anda perlu menulis aplikasi yang berkomunikasi melalui TCP / IP saat terhubung ke lokal jaringan dan berfungsi melalui HTTP saat berada di luar jaringan, WCF adalah jawaban Anda .
Diperingatkan:
Pengembang web sering melihat WCF sebagai lebih sulit dan kompleks untuk dikembangkan. Oleh karena itu, jika Anda tidak melihat kebutuhan akan layanan multiprotocol, Anda kemungkinan akan tetap menggunakan ASP.NET Web API.
sumber
Ada perbandingan pada MSDN tentang ini
WCF dan ASP.NET Web API
Bagi saya, pilihannya adalah tentang siapa kliennya, dan di mana mereka berada?
Dalam klien berbasis jaringan dan .NET perusahaan: Gunakan WCF dengan ikatan TCP (Komunikasi cepat dari HTTP)
Di luar Jaringan perusahaan, dan gunakan beragam teknologi seperti PHP, Python dll : Gunakan Web API dengan REST
sumber
Secara bisnis, WebApi tidak memiliki WSDL, sehingga pengembang harus mendokumentasikan semua secara manual. Dan jika, misalnya, operasi WebApi mengembalikan daftar objek kemudian, klien harus membuat objek secara manual, yaitu WebAPI sangat rentan terhadap kesalahan definisi.
Pro dari Webapi lebih ringan dari WCF.
sumber
Mengenai pernyataan "WebApi tidak memiliki WSDL" ada beberapa cara untuk menghasilkan klien Rest. Salah satu pendekatan yang populer adalah Swagger UI / (Swashbukkle Nuget). Ini memberikan antarmuka yang kaya untuk memahami skema input dan output titik akhir REST dan alat online untuk menguji titik akhir.
JSON LD (Json Linked Documents) adalah standar lain yang muncul yang akan lebih meningkatkan pengalaman pengembang REST berbasis JSON dengan mengekspos skema JSON dengan semantik yang lebih baik.
sumber
Dengan wcf kami dapat mengkonfigurasi dan mengekspos dukungan layanan yang sama untuk beberapa titik akhir seperti tcp, http.jika Anda ingin layanan Anda hanya berbasis http maka akan lebih baik menggunakan API web. Web API memiliki konfigurasi yang sangat sedikit jika dibandingkan dengan WCF dan sedikit lebih cepat dari WCF. Wcf juga mendukung layanan yang tenang. Jika Anda memiliki batasan .Net framework 3.5 maka opsi Anda adalah wcf.
sumber