gRPC adalah kerangka kerja RPC modern yang merupakan alternatif populer untuk WCF. gRPC dibangun di atas HTTP/2, yang memberikan sejumlah keunggulan daripada WCF, termasuk:
Performa: gRPC jauh lebih efisien daripada WCF, terutama untuk koneksi yang berjalan lama.
Skalabilitas: gRPC dirancang untuk menskalakan ke sejumlah besar klien dan server.
Keamanan: gRPC mendukung berbagai mekanisme keamanan, termasuk TLS dan autentikasi.
Lintas platform: gRPC netral terhadap platform dan dapat digunakan dengan berbagai bahasa pemrograman.
Untuk informasi selengkapnya tentang mengembangkan atau memigrasikan aplikasi WCF ke gRPC, lihat:
Banyak pekerjaan telah dilakukan untuk membuat aplikasi WCF 4.5 lebih mudah dikembangkan dan dirawat. Untuk informasi selengkapnya, lihat Fitur Penyederhanaan WCF.
Dukungan Asinkron Berbasis Tugas
Secara default, Tambahkan Referensi Layanan menghasilkan metode operasi layanan asinkron yang dikembalikan tugas. Ini dilakukan untuk metode sinkron dan asinkron. Hal ini memungkinkan Anda memanggil operasi layanan secara asinkron menggunakan model pemrograman asinkron berbasis Tugas baru. Saat Anda memanggil metode proksi yang dihasilkan, WCF membangun objek Tugas untuk mewakili operasi asinkron dan mengembalikan Tugas tersebut kepada Anda. Tugas akan selesai ketika operasi selesai. Saat menerapkan operasi asinkron, Anda dapat menerapkannya sebagai operasi asinkron berbasis tugas. Untuk informasi selengkapnya, lihat Operasi Sinkron dan Asinkron.
File Konfigurasi yang Disederhanakan
Saat Anda menambahkan referensi layanan di Visual Studio atau menggunakan alat SvcUtil.exe, file konfigurasi klien akan dibuat. Dalam WCF versi sebelumnya, file konfigurasi ini berisi nilai setiap properti pengikatan meskipun nilainya berupa nilai default. Di WCF 4.5, file konfigurasi yang dibuat hanya berisi properti pengikatan yang diatur ke nilai non-default.
WCF kini memiliki dukungan untuk pengembangan kontrak-pertama. svcutil.exe memiliki sakelar /serviceContract yang memungkinkan Anda menghasilkan kontrak layanan dan data dari dokumen WSDL.
Menambahkan Referensi Layanan Dari Proyek Subset Portabel
Proyek subset portabel memungkinkan pemrogram perakitan .NET untuk mempertahankan pohon sumber tunggal dan membangun sistem sambil tetap mendukung beberapa platform .NET (desktop, Silverlight, Windows Phone, dan Xbox). Proyek subset portabel hanya mereferensikan pustaka portabel .NET yang merupakan rakitan yang dapat digunakan pada platform .NET apa pun. Pengalaman pengembang sama dengan menambahkan referensi layanan dalam aplikasi klien WCF lainnya. Untuk informasi selengkapnya, lihat Menambahkan Referensi Layanan di Proyek Subset Portabel.
Untuk menyederhanakan konfigurasi, sejumlah nilai default properti transportasi telah diubah. Untuk informasi selengkapnya, lihat Fitur Penyederhanaan WCF.
XmlDictionaryReaderQuotas
XmlDictionaryReaderQuotas berisi nilai kuota yang dapat dikonfigurasi untuk pembaca kamus XML yang membatasi jumlah memori yang digunakan oleh pengenkode saat membuat pesan. Meskipun kuota ini dapat dikonfigurasi, nilai default telah berubah untuk mengurangi kemungkinan bahwa pengembang perlu mengaturnya secara eksplisit. Untuk informasi selengkapnya, lihat Fitur Penyederhanaan WCF.
Validasi Konfigurasi WCF
Sebagai bagian dari proses build dalam Visual Studio, file konfigurasi WCF kini divalidasi untuk atribut yang ditentukan dalam proyek. Daftar kesalahan atau peringatan validasi ditampilkan di Visual Studio jika validasi gagal.
Tip-alat Editor XML
Untuk memudahkan pengembang layanan WCF yang telah ada dan yang baru mengonfigurasi layanan mereka, editor XML Visual Studio kini menyediakan tip-alat untuk setiap elemen konfigurasi dan propertinya yang merupakan bagian dari file konfigurasi layanan.
Peningkatan Streaming
Dukungan tambahan untuk streaming asinkron sejati, di mana sisi kirim kini tidak memblokir utas jika sisi terima tidak membaca atau lambat dalam membaca sehingga meningkatkan skalabilitas. Hapus batasan buffering pesan ketika klien mengirim pesan streaming ke layanan WCF yang dihosting IIS. Untuk informasi selengkapnya, lihat Fitur Penyederhanaan WCF.
Menyederhanakan Mengekspos Titik Akhir melalui HTTPS dengan IIS
Pemetaan protokol HTTPS telah ditambahkan untuk menyederhanakan mengekspos titik akhir melalui HTTPS. Untuk mengaktifkan titik akhir HTTPS, pastikan situs web Anda memiliki pengikatan HTTPS dan sertifikat SSL yang dikonfigurasi, lalu cukup aktifkan HTTPS untuk direktori virtual yang menghosting layanan. Jika metadata diaktifkan untuk layanan, metadata juga akan diekspos melalui HTTPS.
Menghasilkan Dokumen WSDL Tunggal
Beberapa tumpukan pemrosesan WSDL pihak ke-tiga tidak dapat memproses dokumen WSDL yang memiliki dependensi pada dokumen lain melalui xsd:import. WCF kini memungkinkan Anda untuk menentukan bahwa semua informasi WSDL dikembalikan dalam satu dokumen. Untuk meminta dokumen WSDL tunggal, tambahkan "?singleWSDL" ke URI saat meminta metadata dari layanan.
Dukungan WebSocket
WebSockets adalah teknologi yang menyediakan komunikasi dua arah sejati melalui port 80 dan 443 dengan karakteristik performa yang mirip dengan TCP. Dua pengikatan baru telah ditambahkan untuk mendukung komunikasi melalui transportasi WebSocket. NetHttpBinding dan NetHttpsBinding. Untuk informasi selengkapnya, lihat: Pengikatan yang Disediakan Sistem.
Nilai Default Transportasi Baru
Tabel berikut menjelaskan pengaturan yang telah diubah dan tempat untuk mendapatkan informasi tambahan.
Windows Communication Foundation (WCF) memungkinkan pengembang untuk mengonfigurasi layanan menggunakan file konfigurasi atau kode. File konfigurasi berguna saat layanan perlu dikonfigurasi setelah disebarkan. Saat menggunakan file konfigurasi, profesional TI hanya perlu memperbarui file konfigurasi, tidak diperlukan rekompilasi. File konfigurasi, bagaimana pun, dapat menjadi rumit dan sulit untuk dipertahankan. Tidak ada dukungan untuk debugging file konfigurasi dan elemen konfigurasi yang direferensikan oleh nama yang membuat penulisan file konfigurasi rawan kesalahan dan sulit. WCF juga memungkinkan Anda untuk mengonfigurasi layanan dalam kode. Dalam versi WCF sebelumnya (4.0 dan sebelumnya) mengonfigurasi layanan dalam kode merupakan hal yang mudah dalam skenario yang dihost sendiri, kelas ServiceHost memungkinkan Anda mengonfigurasi titik akhir dan perilaku sebelum memanggil ServiceHost.Open. Namun, dalam skenario yang dihosting web, Anda tidak memiliki akses ke kelas ServiceHost. Untuk mengonfigurasi layanan yang dihosting web, Anda diharuskan membuat System.ServiceModel.ServiceHostFactory yang membuat ServiceHostFactory dan melakukan konfigurasi yang diperlukan. Dimulai dengan .NET Framework 4.5, WCF menyediakan cara yang lebih mudah untuk mengonfigurasi layanan yang dihosting sendiri dan dihosting web dalam kode. Untuk informasi selengkapnya, lihat Mengonfigurasi Layanan WCF dalam Kode.
Penembolokan ChannelFactory
Aplikasi klien WCF menggunakan kelas ChannelFactory<TChannel> untuk membuat saluran komunikasi dengan layanan WCF. Membuat instans ChannelFactory<TChannel> menimbulkan beberapa overhead karena melibatkan operasi berikut:
Untuk membantu meminimalkan overhead ini, WCF dapat menyimpan pabrik saluran saat Anda menggunakan proksi klien WCF. Untuk informasi selengkapnya, lihat Pabrik Saluran dan Penembolokan.
Kompresi dan Encoder Biner
Dimulai dengan WCF 4.5, penyandi biner WCF menambahkan dukungan untuk pemadatan. Jenis pemadatan dikonfigurasi dengan properti CompressionFormat. Klien dan layanan harus mengonfigurasi properti CompressionFormat. Kompresi akan bekerja untuk protokol HTTP, HTTPS, dan TCP. Jika klien menentukan untuk menggunakan pemadatan tetapi layanan tidak mendukungnya, pengecualian protokol dilemparkan, menunjukkan ketidakcocokan protokol. Untuk informasi selengkapnya, lihat Memilih Penyandi Pesan.
UDP
Dukungan telah ditambahkan untuk transportasi UDP yang memungkinkan pengembang menulis layanan yang menggunakan pesan "fire and forget". Klien mengirim pesan ke layanan dan mengharapkan respons dari layanan.
Dukungan Autentikasi Ganda
Dukungan telah ditambahkan untuk mendukung beberapa mode autentikasi, seperti yang didukung oleh IIS, pada satu titik akhir WCF saat menggunakan transportasi HTTP dan keamanan transportasi. IIS memungkinkan Anda mengaktifkan beberapa mode autentikasi pada direktori virtual, fitur ini memungkinkan titik akhir WCF tunggal untuk mendukung beberapa mode autentikasi yang diaktifkan untuk direktori virtual tempat layanan WCF dihosting.
Dukungan IDN
Dukungan telah ditambahkan untuk memungkinkan layanan WCF dengan Nama Domain Internasional. Untuk informasi selengkapnya, lihat WCF dan Nama Domain Internasional.
Nilai atribut dalam file konfigurasi untuk atribut kustom yang ditentukan dalam proyek kini mendukung IntelliSense untuk memfasilitasi pekerjaan dengan konfigurasi cepat dan akurat.
Tip-alat Konfigurasi
Elemen dan atribut WCF kini memiliki tip-alat di editor XML, untuk mengidentifikasi tujuan elemen atau atribut dengan lebih mudah dan akurat.
Menempelkan Data sebagai Kelas
Dalam proyek WCF, tipe data yang ditentukan dalam XML (seperti yang diekspos dalam layanan) dapat ditempelkan langsung ke halaman kode. Jenis XML akan ditempelkan sebagai jenis CLR. Lihat Membuat Kelas Jenis Data dari XML untuk detail selengkapnya.
Titik akhir WebServiceHost dan default
Di Visual Studio 2010, WebServiceHost secara otomatis membuat titik akhir default, baik Anda menentukan titik akhir secara eksplisit atau pun tidak. Pada Visual Studio 2012 dan yang lebih baru, WebServiceHost hanya membuat titik akhir default jika tidak ada titik akhir yang ditambahkan secara eksplisit. Jika klien Anda mengharapkan titik akhir default, Anda dapat secara eksplisit menambahkan titik akhir dan mengarahkan klien ke titik akhir tersebut. Atau, Anda dapat memberi tahu WCF untuk kembali ke perilaku sebelumnya dengan menambahkan pengaturan berikut ke file konfigurasi aplikasi Anda
Antarmuka yang diekspos oleh IChannelFactory<TChannel> ini menjadikan bekerja dengan cookie di sisi klien jauh lebih mudah. Ketika AllowCookies diatur ke benar pada pengikatan, Anda dapat mengakses cookie dengan menggunakan kode berikut:
Anda kemudian dapat mengambil atau mengatur cookie dari CookieContainer. Ketika AllowCookies diatur ke salah, Anda dapat mengambil cookie secara manual menggunakan OperationContext dan mengirimkannya dalam permintaan lain menggunakan OperationContext lain atau pemeriksa pesan. Antarmuka IHttpCookieContainerManager memungkinkan Anda mengautentikasi pengguna dengan layanan dan menggunakan cookie autentikasi yang dikembalikan oleh layanan tersebut untuk mengautentikasi dengan layanan lain.
Konsumsi layanan web REST dengan menggunakan HttpClient dan operasi CRUD dasar. Anda akan mendeteksi kapan perangkat Anda terhubung ke internet untuk memberikan pengalaman pengguna yang baik dan memanfaatkan tumpukan jaringan asli untuk mendapatkan performa terbaik.