Web Referansı ve Servis Referansı


110

Paypal ile devasa bir duvara çarptım. WSDL'lerini kullanarak bazı sarmalayıcı sınıfları oluşturmak için normal bir C # projesi oluşturmuştum.

Web dışı bir proje oluşturursanız, wsdl eklemenin tek yolu Web Hizmeti Referansıdır. Ve bu, bir Web Referansıyla aynı türden proxy sınıfları oluşturur, ancak gerçekte değil ... PayPal çalışanlarının bile farkında olmadığı daha fazlasını ekler.

Bu yüzden tüm bu zaman boyunca hizmet olarak kullanmak için bu proxy sınıfları listesinde (SoapBinding) doğru Arayüzü arıyordum ve PayPalAPIAASoapBindingorada değildim, PayPal noktamıza temas halinde olduğumu söyleyip durdum.

PayPalAPIAASoapBindingWeb Referansı tabanlı bir hizmet referansında görebileceğiniz bir şeyi göremediğimden, kullanmam gerekenleri bana görünen aşağıdaki 2 Arayüzü görebiliyordum:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Bu yüzden, muhtemelen bir Web Referansına karşı bir Hizmet Referansı oluşturduğumu anladım, bu Web Referansı bir Web projesinde bir seçenek. Ancak hizmet referansımın web projeme sıkıca bağlanmasını istemiyorum. İşte bu yüzden C # Projesini yarattım.

Peki bir Servis Referansı ile Web Referansının karşılaştırması nedir? Hizmet Referansı bana bir döngü atacak ve bana bir Web Referansından farklı bir dizi farklı arayüz verecekse, bunu başka bir projeye nasıl ayıracağım?

Ayrıca, işleri daha da kafa karıştırıcı hale getirmek için VS 2008'de bir Web Servis Uygulaması projesi vardır.

Öyleyse ne kullanıyorum? Biz .NET 3.5 framework kullanıyor ve bizler değil WCF için taşınmaya hazır . Öyleyse, WCF kullanmasam bile yeni Servis Referansını kullanabilir miyim veya ne? Henüz WCF kullanmadan .NET 3.5 kullanıyorsanız ve yine de temel web hizmetlerini yapmak istiyorsanız, yine de Hizmet Referansı yoluna gidiyor ve WCF çerçevesini kullanmıyor musunuz? Yani bir .NET 2.0 Web Referansı gibi kullanılabilir mi, sadece tamamen farklı bir WSDL nesli elde edeceksiniz?



2
8 yıl sonra ve hala geçerli.
Mike Devenney

Yanıtlar:


213

Web Referansı Ekle , eski tarz, kullanımdan kaldırılmış ASP.NET web hizmetleri (ASMX) teknolojisidir (öğeleriniz için yalnızca XmlSerializer kullanır) - bunu yaparsanız, ASMX web hizmeti için bir ASMX istemcisi alırsınız. Bunu hemen hemen her projede (Web Uygulaması, Web Sitesi, Konsol Uygulaması, Winforms - adını siz belirleyin) yapabilirsiniz.

Servis Referansı Ekle , bunu yapmanın yeni bir yoludur, bir WCF servis referansı ekleyerek, size eski ASMX malzemelerinden çok daha gelişmiş, çok daha esnek bir servis modeli sunar.

WCF'ye geçmeye hazır olmadığınız için, gerçekten yapmanız gerekiyorsa eski stil web referansını da ekleyebilirsiniz: "Hizmet Referansı Ekle" yi yaptığınızda, açılan iletişim kutusunda [Gelişmiş düğmenin sol köşesindeki] düğmesi:

alternatif metin

ve çıkan sonraki iletişim kutusunda, alttaki [Web Referansı Ekle] düğmesini seçin.


6
MS için bunu bir WCF iletişim kutusunda gizlemek ne kadar aptalca! Buradaki yerleşimle bile bir anlam ifade etmiyor
PositiveGuy

9
@coffeeaddict: iyi, sanırım MS sizi varsayılan olarak WCF kullanmaya doğru yönlendirmeye çalışıyor - ve gerçekten kararlıysanız yalnızca eski tarz ASMX :-)
marc_s

27
Alt + PrtScn kullanırsanız, yalnızca mevcut aktif pencerenin anlık görüntüsünü çekebilirsiniz, bu şekilde yalnızca istediğiniz şeyi manuel olarak kırpmanız gerekmez: o)
Ernest

Bu bilgisayarda .NET 2.0 gerektirecek mi? Veya .NET 4.0, .NET 2.0 tabanlı "Web Referansı" teknolojisini idare edebilecek mi? Bir SOAP web hizmetini .NET 4.0 uygulamasında "Web Referansı" olarak dağıttığım için bilmek istiyorum.
Bilgisayar Kullanıcısı

1
@sparkyShorts: evet.
marc_s

9

Sorunuzu doğru anladıysam:

WCF Hizmet Referansı yerine .net 2.0 Web Hizmeti Referansı eklemek için, projenize sağ tıklayın ve 'Hizmet Referansı Ekle'yi tıklayın.

Ardından, iletişim kutusunun sol altındaki "Gelişmiş .." öğesini tıklayın.

Ardından, sonraki iletişim kutusunun sol alt kısmındaki "Web Referansı Ekle .." yi tıklayın.

Artık aradığınız gibi normal bir SOAP web referansı ekleyebilirsiniz.


Bu bilgisayarda .NET 2.0 gerektirecek mi? Veya .NET 4.0, .NET 2.0 tabanlı "Web Referansı" teknolojisini idare edebilecek mi? Bir SOAP web hizmetini .NET 4.0 uygulamasında "Web Referansı" olarak dağıttığım için bilmek istiyorum.
Bilgisayar Kullanıcısı

4

Bir hizmet referansı eklemek, uygun bağlamayı kullanmanız koşuluyla normal bir web hizmetiyle konuşmak için kullanılabilecek bir WCF istemcisi oluşturmanıza olanak tanır. Bir web referansı eklemek, yalnızca bir web servisi (yani, SOAP) referansı .

WCF'ye hazır olmadığınızdan kesinlikle eminseniz (gerçekten nedenini bilmiyorsanız), o zaman düzenli bir web hizmeti referansı oluşturmalısınız.


3
Çünkü WCF yeni başlayanlar için kolay DEĞİLDİR. Ve dahası, patronum taşınmama izin vermiyor gerçek sebep. Kod ve burada çalıştır. Böyle bir durum olduğunda, bu konuda yapabileceğim hiçbir şey yok.
PositiveGuy

7
@coffeeaddict Sizin ve patronunuzun yanlış bilgilendirildiğini düşünüyorum. Her iki referans türü de hizmet işlemlerini çağırmak için yöntemler sağlayan bir sınıf yaratacaktır. Bir "hizmet" referansı tarafından oluşturulan sınıfın, Microsoft'un WCF olarak adlandırdığı bazı teknolojinin parçası olduğunu düşündüğü bir kitaplıkta bulunan bir temel sınıftan miras alması nasıl alakalı?
Daniel Pratt

1
Bu bilgisayarda .NET 2.0 gerektirecek mi? Veya .NET 4.0, .NET 2.0 tabanlı "Web Referansı" teknolojisini idare edebilecek mi? Bir SOAP web hizmetini .NET 4.0 uygulamasında "Web Referansı" olarak dağıttığım için bilmek istiyorum.
Bilgisayar Kullanıcısı

3

Sonunda ikisi de aynı şeyi yapıyor. Kodda bazı farklılıklar vardır: Web Hizmetleri, projenin Kök ad alanını eklemez, ancak Hizmet Referansı projenin ad alanına hizmet sınıfları ekler. ServiceSoapClientSınıf önemli değil, farklı bir adlandırma, alır. TFS ile çalışırken Hizmet Referansını kullanmayı tercih ederim çünkü kaynak kontrolü ile daha iyi çalışıyor. Her ikisi de SOAP protokolleriyle çalışır.

Servis Referansını kullanmayı daha iyi buluyorum çünkü yeni ve dolayısıyla daha iyi korunacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.