Referensi Web vs. Referensi Layanan

110

Saya baru saja menabrak tembok bata besar dengan Paypal. Saya telah membuat proyek C # biasa untuk membuat beberapa kelas pembungkus menggunakan WSDL mereka.

Jika Anda membuat proyek non-web, satu-satunya pilihan untuk menambahkan wsdl adalah Referensi Layanan Web. Dan ini membangun sekumpulan kelas proxy yang sama seperti Referensi Web tetapi tidak benar-benar..itu menambahkan lebih banyak yang bahkan orang-orang PayPal tidak menyadarinya.

Jadi saya selama ini mencari Antarmuka yang tepat dalam daftar kelas proxy ini untuk digunakan sebagai layanan (SoapBinding) dan PayPalAPIAASoapBindingtidak ada saya terus memberi tahu titik kontak PayPal kami.

Saya hanya bisa melihat 2 Antarmuka berikut yang menurut saya perlu digunakan karena saya tidak melihat PayPalAPIAASoapBindingyang DAPAT Anda lihat di referensi layanan berbasis Referensi Web:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Jadi saya menemukan oh, saya mungkin telah membuat Referensi Layanan vs. Referensi Web yang Referensi Web adalah pilihan dalam proyek Web. Tetapi saya tidak ingin referensi layanan saya digabungkan erat dengan proyek web saya. Jadi itulah mengapa saya membuat Proyek C #.

Jadi apa sih itu Referensi Layanan vs. Referensi Web? Dan bagaimana saya bisa memisahkan ini menjadi proyek lain jika Referensi Layanan akan melempar saya loop dan memberi saya satu set antarmuka yang berbeda dari Referensi Web?

Juga, untuk membuat hal-hal LEBIH membingungkan, VS 2008 memiliki proyek Aplikasi Layanan Web.

Jadi apa yang saya gunakan? Kami menggunakan kerangka kerja .NET 3.5 dan kami belum siap untuk pindah ke WCF . Jadi, apakah saya masih dapat menggunakan Referensi Layanan baru meskipun tidak menggunakan WCF atau apa? JIKA Anda menggunakan .NET 3.5 dan belum WCF dan masih ingin menggunakan layanan web dasar, apakah Anda masih menggunakan rute Referensi Layanan dan tidak menggunakan kerangka kerja WCF? Artinya, bisakah itu digunakan seperti Referensi Web .NET 2.0, hanya saja Anda akan mendapatkan generasi WSDL yang sama sekali berbeda?

PositiveGuy
sumber
2
8 tahun kemudian dan masih relevan.
Mike Devenney

Jawaban:

213

Tambahkan Referensi Web adalah teknologi ASP.NET webservices (ASMX) gaya lama dan usang (hanya menggunakan XmlSerializer untuk barang Anda) - jika Anda melakukan ini, Anda mendapatkan klien ASMX untuk layanan web ASMX. Anda dapat melakukan ini di hampir semua proyek (Aplikasi Web, Situs Web, Aplikasi Konsol, Winforms - sebut saja).

Tambahkan Referensi Layanan adalah cara baru untuk melakukannya, menambahkan referensi layanan WCF, yang memberi Anda model layanan yang jauh lebih canggih dan jauh lebih fleksibel daripada sekadar barang ASMX lama biasa.

Karena Anda belum siap untuk pindah ke WCF, Anda juga masih dapat menambahkan referensi web gaya lama, jika Anda benar-benar harus: ketika Anda melakukan "Tambahkan Referensi Layanan", pada dialog yang muncul, klik [Advanced ] di pojok kiri tombol:

teks alt

dan pada dialog berikutnya yang muncul, pilih tombol [Tambah Referensi Web] di bagian bawah.

marc_s
sumber
6
Betapa bodohnya hal itu bagi MS untuk menyembunyikannya di kotak dialog WCF! Bahkan tidak masuk akal dengan penempatan di sini
PositiveGuy
9
@coffeeaddict: yah, saya pikir MS mencoba secara halus mempengaruhi Anda untuk menggunakan WCF secara default - dan hanya ASMX gaya lama jika Anda benar-benar bertekad :-)
marc_s
27
Jika Anda menggunakan Alt + PrtScn, Anda dapat mengambil snapshot dari jendela yang aktif saat ini, dengan begitu Anda tidak perlu memotong secara manual seperti yang Anda ingin tunjukkan: o)
Ernest
Apakah itu membutuhkan .NET 2.0 juga di komputer? Atau .NET 4.0 akan mampu menangani teknologi "Referensi Web" berbasis .NET 2.0? Saya ingin tahu karena saya menggunakan layanan web SOAP sebagai "Referensi Web" dalam aplikasi .NET 4.0.
Pengguna Komputer
1
@sparkyShorts: ya.
marc_s
9

Jika saya mengerti pertanyaan Anda dengan benar:

Untuk menambahkan Referensi Layanan Web .net 2.0 sebagai ganti Referensi Layanan WCF, klik kanan pada proyek Anda dan klik 'Tambahkan Referensi Layanan.'

Kemudian klik "Advanced .." di kiri bawah dialog.

Kemudian klik "Tambahkan Referensi Web .." di kiri bawah dialog berikutnya.

Sekarang Anda dapat menambahkan referensi web SOAP biasa seperti yang Anda cari.

Moose
sumber
Apakah itu membutuhkan .NET 2.0 juga di komputer? Atau .NET 4.0 akan mampu menangani teknologi "Referensi Web" berbasis .NET 2.0? Saya ingin tahu karena saya menggunakan layanan web SOAP sebagai "Referensi Web" dalam aplikasi .NET 4.0.
Pengguna Komputer
4

Menambahkan referensi layanan memungkinkan Anda membuat klien WCF, yang dapat digunakan untuk berbicara dengan layanan web biasa asalkan Anda menggunakan penjilidan yang sesuai. Menambahkan referensi web akan memungkinkan Anda membuat hanya referensi layanan web (yaitu, SOAP).

Jika Anda benar-benar yakin Anda tidak siap untuk WCF (benar-benar tidak tahu mengapa) maka Anda harus membuat referensi layanan web biasa.

Otávio Décio
sumber
3
Karena WCF TIDAK mudah untuk pemula. Dan terlebih lagi bos saya tidak akan membiarkan saya pindah ke itu adalah alasan sebenarnya. Ini kode & jalankan di sini. Ketika Anda memiliki situasi itu, tidak ada yang bisa saya lakukan untuk mengatasinya.
PositiveGuy
7
@coffeeaddict Saya pikir Anda dan atasan Anda salah informasi. Kedua jenis referensi tersebut akan membuat kelas yang menyediakan metode untuk memanggil operasi layanan. Seberapa relevan bahwa kelas yang dibuat oleh referensi "layanan" kebetulan mewarisi dari kelas dasar yang kebetulan ada di perpustakaan yang dianggap Microsoft sebagai bagian dari beberapa teknologi yang disebut WCF?
Daniel Pratt
1
Apakah itu membutuhkan .NET 2.0 juga di komputer? Atau .NET 4.0 akan mampu menangani teknologi "Referensi Web" berbasis .NET 2.0? Saya ingin tahu karena saya menggunakan layanan web SOAP sebagai "Referensi Web" dalam aplikasi .NET 4.0.
Pengguna Komputer
3

Pada akhirnya keduanya melakukan hal yang sama. Ada beberapa perbedaan dalam kode: Layanan Web tidak menambahkan ruang nama Root proyek, tetapi Referensi Layanan menambahkan kelas layanan ke ruang nama proyek. The ServiceSoapClientkelas mendapat penamaan yang berbeda, yang tidak penting. Dalam bekerja dengan TFS, saya lebih suka menggunakan Referensi Layanan karena bekerja lebih baik dengan kontrol sumber. Keduanya bekerja dengan protokol SOAP.

Saya merasa lebih baik menggunakan Referensi Layanan karena ini baru dan karenanya akan lebih terpelihara.

pengguna3628475
sumber