Perbedaan antara referensi web dan referensi layanan?

132

Apa perbedaan antara referensi web dan referensi layanan di WCF? Mana yang lebih disukai di WCF?

John Saunders
sumber
Lihat juga Channel Factories - stackoverflow.com/questions/1698275/…
Manish Jain
1
hmm, mungkin pilih jawaban? pertanyaan yang bagus
Daniël Tulp

Jawaban:

102

Jawaban tingkat rendah di sini adalah bahwa Referensi Web akan membuat kelas proxy klien yang memungkinkan kode Anda untuk berbicara dengan Layanan Web yang dijelaskan melalui WSDL dan berkomunikasi melalui SOAP atau HTTP GET (poster lain menunjukkan bahwa itu hanya ASMX, tetapi Referensi Web juga dapat berbicara dengan Layanan Web berbasis Java atau berbasis Python atau Ruby selama mereka semua berbicara WSDL dan sesuai dengan standar interoperabilitas WS-I).

Referensi Layanan akan membuat kelas proxy klien yang berkomunikasi dengan layanan berbasis WCF: terlepas dari apakah layanan WCF itu Layanan Web atau tidak.

Kevin Hoffman
sumber
1
+1 untuk menambahkan bahwa layanan web standar apa pun dengan WSDL yang diformat dengan baik memenuhi kriteria
sidney.andrews
Jadi bisakah saya menambahkan referensi layanan ke layanan web berbasis java? Apakah masih masuk akal? karena Java tidak tahu apa-apa tentang stack wcf ...
user20358
ya, Anda dapat menambahkan referensi layanan ke layanan web java dll, jika memiliki wsdl. Referensi layanan akan memperlakukannya seperti referensi web "klasik" dalam kasus ini.
Brady Moritz
+1 untuk menyatakan bahwa Layanan Web dapat menggunakan layanan web yang dijelaskan WSDL, serta ASMX. Sebenarnya, saya memiliki lapisan bisnis yang memiliki referensi web dan referensi layanan. Referensi web mengkonsumsi layanan web WSDL, sedangkan referensi layanan mengkonsumsi layanan ASMX.
Jagd
67

Referensi Web memungkinkan Anda untuk berkomunikasi dengan layanan apa pun berdasarkan teknologi apa pun yang mengimplementasikan WS-I Basic Profile 1.1, dan mengekspos metadata yang relevan sebagai WSDL. Secara internal, ia menggunakan tumpukan komunikasi ASMX di sisi klien.

Referensi Layanan memungkinkan Anda untuk berkomunikasi dengan layanan apa pun berdasarkan teknologi apa pun yang mengimplementasikan salah satu dari banyak protokol yang didukung oleh WCF (termasuk tetapi tidak terbatas pada WS-I Basic Profile). Secara internal, ia menggunakan tumpukan komunikasi WCF di sisi klien.

Perhatikan bahwa kedua definisi ini cukup luas, dan keduanya termasuk layanan yang tidak ditulis dalam .NET.

Sangat mungkin (meskipun tidak disarankan) untuk menambahkan Referensi Web yang menunjuk ke layanan WCF, selama titik akhir WCF menggunakan basicHttpBindingatau beberapa varian kustom yang kompatibel.

Dimungkinkan juga untuk menambahkan Referensi Layanan yang menunjuk ke layanan ASMX. Saat menulis kode baru, Anda harus selalu menggunakan Referensi Layanan hanya karena lebih fleksibel dan tahan masa depan.

Christian Hayter
sumber
1
Adakah yang bisa memulai saya tentang cara menggunakan layanan melalui Referensi Layanan? Dengan Referensi Web, saya sepertinya selalu dapat menemukan fungsi inti dalam beberapa jenis objek layanan. Dengan Referensi Layanan, tidak terlalu banyak. Sebagai contoh, saya mencoba menggunakan layanan tarif FedEx untuk mendapatkan harga untuk berbagai opsi pengiriman FedEx. Saya tahu ada panggilan getRates () di suatu tempat, tetapi saya tidak dapat menemukannya dengan Referensi Layanan.
Ben Mills
@BenMills: Cari kelas dengan Clientakhiran.
Christian Hayter
17

Referensi layanan adalah antarmuka yang lebih baru untuk menambahkan referensi ke semua jenis layanan WCF (mereka mungkin bukan layanan web) sedangkan referensi Web secara khusus berkaitan dengan referensi web ASMX.

Anda dapat mengakses referensi web melalui opsi lanjutan di tambah referensi layanan (jika saya ingat dengan benar).

Saya akan menggunakan referensi layanan karena seperti yang saya mengerti, ini adalah mekanisme yang lebih baru dari keduanya.

David Whitney
sumber
8
Tambahkan Referensi Layanan -> Tingkat Lanjut -> Tambahkan Referensi Web ... tidak seperti solusi yang tidak intuitif.
Jagd
7

Referensi layanan berurusan dengan titik akhir dan binding, yang sepenuhnya dapat dikonfigurasi. Mereka membiarkan Anda mengarahkan proxy klien Anda ke WCF melalui protokol transport apa pun (HTTP, TCP, Memori Bersama, dll)

Mereka dirancang untuk bekerja dengan WCF.

Jika Anda menggunakan WebProxy, Anda cukup banyak mengikat diri untuk menggunakan WCF melalui HTTP

Brian Genisio
sumber
5

Hal lain yang perlu dipertimbangkan adalah bahwa UI baru untuk Antarmuka Layanan akan memberi Anda lebih banyak fleksibilitas tentang bagaimana Anda ingin membuat kelas proxy Anda. Sebagai contoh, ini akan memungkinkan Anda untuk memetakan kontrak data ke dll yang ada, jika mereka cocok (sebenarnya ini adalah perilaku default).

Wagner Silveira
sumber