Web API mengambil keuntungan dari protokol http secara lebih asli. Odata adalah standar terbuka yang dianut oleh banyak pemain besar. Saya hanya dapat berbicara dari pengalaman saya tentang bermain-main dengan Odata, dan baru-baru ini menemukan Web API dan melakukan penelitian.
OData keren karena ini adalah standar aktual. Anda dapat dengan mudah membuat database dan mengeksposnya melalui HTTP. Ini berarti Anda dapat melintasi struktur tabel Anda tanpa konfigurasi apa pun (saya katakan itu dengan longgar). Anda juga dapat menjalankan kueri melalui URL yang dapat menyertakan LINQ ringan:
/products/orders/[put some linq-ish query here]
Ini bisa dibilang baik atau buruk. Otentikasi adalah standar dan dibangun.
API Web, lebih menarik dari sudut pandang saya. Ini memanfaatkan fungsionalitas HTTP (pesan kesalahan, dkk.) Dan sedikit lebih "asli" untuk permintaan RESTful yang sebenarnya. Saya benar-benar belum terlalu banyak bermain dengannya .. Tapi saya sudah membaca dan sudah "mendengar" bahwa MVC dan Web API mungkin "menikah" suatu hari nanti, sekali lagi, mungkin baik mungkin buruk ...
Ketika saya bermain dengan OData, saya membuat Stored Proc, memetakannya ke permukaan entitas, mengonfigurasi tipe pengembalian yang kuat dan kemudian mengaitkannya ke permintaan URL dan BANG, ada permintaan RESTful saya yang dipetakan ke proc yang tersimpan hasil ketik saya. Itu cukup mudah, dan saya bisa mendapatkan apa yang saya butuhkan.
Kesimpulannya
saya belum memiliki kesempatan untuk bermain dengan WCF API terlalu banyak detail, tetapi saya akan mengatakan itu adalah cara untuk pengembangan klien karena ini lebih merupakan pendekatan murni untuk REST. Jika Anda akan membuat lebih banyak atau lebih "langsung" panggilan bolak-balik dan mengambil "Lihat Model", itu akan memberikan interaksi yang lebih asli.
Di samping itu. Jika Anda akan membuat kueri (ish) kompleks pada data berdasarkan interaksi klien dan Anda ingin "membangun" logika kueri dan meneruskannya sebagai parameter, maka Odata bisa bekerja.
Cara saya melihatnya adalah jika saya perlu mengekspos data saya dalam format struktural (tabel makna / struktur hubungan) dan kemudian meminta secara langsung membentuk klien, maka Odata akan bekerja dengan baik. Ini juga baik untuk memungkinkan "Lainnya" mengakses data (dengan auth yang tepat dll.) Itulah sebabnya ia mematuhi protokol OData
Jika Anda ingin permintaan RESTful di mana Anda mendikte URL (/ produk / pesanan / 22, dan membuat "set hasil" yang kompleks dari kode terkelola "tersembunyi" dan struktur data DAN Anda mungkin juga mendapat manfaat dari pesan respons HTTP, maka API Web mungkin akan menjadi taruhan terbaik ..
sekali lagi, ini semua dari penelitian dan bermain-main. Saya belum menerapkan baik dalam skenario aplikasi produksi / ditiup penuh. Saya pikir mereka berdua akan memiliki kekuatan dan kelemahan mereka, dan pasti ada beberapa tumpang tindih