Pendekatan / teknologi / alat .NET REST mana yang harus saya gunakan?

16

Saya menerapkan layanan web yang tenang dan beberapa aplikasi klien yang sebagian besar di Silverlight. Saya menemukan sejumlah opsi untuk mengembangkan sisi server dan sisi klien dari API, tetapi saya tidak yakin mana yang merupakan pendekatan terbaik. Saya khawatir tentang stabilitas serta platform yang akan terus ada beberapa bulan dari sekarang.

Kami mulai menggunakan REST Starter Kit dengan. NET 3.5 tetapi pindah ke API Web WCF baru ketika memperbarui ke .NET 4.0. Semua dokumentasi mereka menunjukkan bahwa API Web WCF adalah pengganti RSK. Namun, Web API hanya di Pratinjau 4 dan tidak termasuk dukungan untuk klien Silverlight atau Windows Phone 7 (belum).

WCF Web API terlihat seperti pembungkus di atas hal-hal Layanan WCF WebHttp yang disediakan di System.ServiceModel.Webperpustakaan yang membuat saya berpikir bahwa mungkin akan lebih mudah untuk hanya pergi dengan hal-hal bawaan tetapi Web API memang menawarkan beberapa fitur yang bagus.

Saya secara khusus terikat untuk menentukan jalan terbaik bagi sisi klien. Persyaratan utama saya adalah bahwa saya perlu mendukung deserializing ke objek sisi klien saya dengan cepat dan mudah. Web API menawarkan pustaka klien yang bagus tetapi tidak memiliki versi Silverlight.

Saya ingin menggunakan pendekatan terbaru dan toolset yang sedang dikembangkan dan didukung secara aktif.

  1. Apakah REST Starter Kit benar-benar usang?

  2. Adakah yang berhasil menerapkan toolkit WCF Web API?

  3. Apakah ada manfaat menggunakan salah satu dari ini di atas fitur Layanan WebHttp WCF bawaan yang ditemukan di System.ServiceModel.Web?

  4. Apakah ada solusi tunggal yang berfungsi untuk semua klien (web, Silverlight, dll.)?

Apa saran Anda?

SonOfPirate
sumber
Saya akan sangat merekomendasikan menggunakan servicestack
Mithir

Jawaban:

6

Hanya untuk menindaklanjuti dan menutup pos, dengan Pratinjau 5, WCF Web API melakukan lompatan besar ke depan sehingga sangat mudah untuk membuat REST API. Dan sementara basis kode saat ini pada Codeplex tidak termasuk klien Silverlight, ada toolkit di luar sana dan saya dapat dengan mudah menghapus bagian Async-CTP dari kode sumber terbuka dan membuat versi SL.

Saya sangat merekomendasikan siapa pun yang tertarik untuk masuk ke REST dengan WCF melihat ke dalam kerangka kerja: http://wcf.codeplex.com .

FYI - Ini akan menjadi bagian terintegrasi dari .NET 4.5 dan saat ini sedang ditulis ulang untuk berjalan pada kerangka inti yang sama dengan ASP.NET MVC (meskipun saya diberitahu itu pasti akan mendukung hosting mandiri masih).

SonOfPirate
sumber
1

Saya belum pernah menggunakan REST Starter Kit tetapi saat ini saya sedang menulis .net 4.0 WCF REST API saya cukup yakin itu masih ada :)

Saya akan merekomendasikan Anda melihat odata. Ini luar biasa cepat dan sederhana untuk dikodekan dan dimainkan dengan baik dengan silverlight.

Tom Squires
sumber
Salah satu fitur yang ditawarkan oleh toolkit WCF Web API adalah dukungan OData yang berfungsi dengan baik. Tapi, tidak memiliki versi Silverlight tidak membantu saya. Bagaimana Anda menangani deserialisasi di sisi klien?
SonOfPirate
Saya hanya melakukannya dengan silverlight WP7. Bahwa saya baru saja menambahkan referensi layanan dan menyebutnya. Anda bisa menggunakan klien web dan membatalkan respon sendiri jika itu bekerja lebih baik untuk Anda. Tidak sulit
Tom Squires
Saya tidak berpikir menggunakan webHttpBinding untuk mengaktifkan REST dengan WCF mendukung titik akhir mex. Bagaimana Anda menambahkan referensi layanan? Itu akan menjadi preferensi saya daripada berbagi perpustakaan umum yang berisi kontrak data saya.
SonOfPirate
Ya, saya baru saja menambahkan referensi layanan. Anda mungkin perlu menentukan titik akhir dalam file konfigurasi.
Tom Squires
Saya baru tahu (dengan cara yang sulit) bahwa Silverlight tidak mendukung WebHttpBinding. Jadi, meskipun saya dapat mengekspos titik akhir mex dan Menambahkan Referensi Layanan, layanan tidak akan membuat panggilan karena tidak dapat menyelesaikan titik akhir.
SonOfPirate
1

WCF Web API tidak memberikan informasi metadata apa pun yang akan Anda gunakan untuk menghasilkan proxy layanan dan dengan demikian, dapat menambahkan referensi layanan. Ini dimaksudkan untuk memudahkan produksi layanan REST di bawah payung WCF, sama seperti yang Anda lakukan dengan kerangka kerja ASP.NET MVC 4 Web API.

Oleh karena itu tidak ada dukungan untuk WP7 atau Silverlight, tetapi hampir sempurna untuk seluruh web.

Namun, Layanan Data WCF terlihat seperti kandidat yang tepat, memungkinkan Anda untuk membuat layanan tenang dan mudah mengkonsumsinya dengan Silverlight.

Ned Smajic
sumber
Kami telah menggunakan API Web dengan klien Silverlight kami selama hampir setahun tanpa masalah.
SonOfPirate