2010-12-22 7 views
6

Ich bin neu in .NET Welt, muss jedoch VStudio C# 2010 (.NET 4.0) verwenden, um einen Client zu erstellen, der Daten von einem Webdienst in SOAP Xml-Modus anfordert. Ich habe hier nach Antworten gesucht, bin aber noch mehr verwirrt. MSDN sagt, dass "Erstellen von XML-Webdienstclients" für .NET 4.0 veraltet ist, d. H. WSDL ist ein Vermächtnis. Verwenden Sie stattdessen "WCF", sagen sie. In WCF ging ich verloren - zu viel und zu vage. Es muss einfacher sein als ... Und alle Beispiele, die ich im Web finden konnte - sie alle verwenden WSDL, "das Vermächtnis".SOAP XML-Client - mit Visual Studio 2010 C# - wie?

Hier sind die Definitionen des Dienstes i zu verwenden, um benötigen, um die Daten aus dem Web-Service zu erhalten:

Anfrage:

POST /catalog.asmx HTTP/1.1 
Host: www.somewebsite.com 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "https://www.somewebsite.com/KeywordSearch" 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <KeywordSearch xmlns="https://www.somewebsite.com/"> 
    <searchTerm>string</searchTerm> 
    <resultsReturned>int</resultsReturned> 
    </KeywordSearch> 
    </soap:Body> 
</soap:Envelope> 

Antwort:

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    ...some stuff... 
    </soap:Body> 
</soap:Envelope> 

So, Was ist der richtige oder zumindest logischste Weg, diesen einfachen Client zu bauen? Welche Tools/Bibliotheken/Methoden würden Sie Neulingen vorschlagen (unter der Annahme, dass VS 2010 C#, .NET 4.0-Umgebung)?

+1

FYI, was „Legacy“ ist die Schaffung ASMX Web Services und mit "Add Web Reference". Wie von marc_s vorgeschlagen, sollten Sie "Add Service Reference" verwenden, was gut funktionieren sollte. –

Antwort

5

Wenn Sie eine WSDL haben/XSD diesen Dienst zu beschreiben, oder wenn Sie auf eine URL navigieren können, dass die Metadaten zu packen, dann WCF mit basicHttpBinding würde wahrscheinlich die beste Wahl sein. WSDL ist definitiv nicht "Legacy" - wenn alles Erbe ist, dann ist es ASP.NET/ASMX Webservices.

Gegeben eine WSDL/XSD oder eine URL, zu der Sie eine Verbindung herstellen können, tun Sie einfach eine Add Service Reference aus Visual Studio, und Sie sollten Ihren WCF-Dienst in kürzester Zeit aufrufen - Vertrauen Sie mir! Sie nicht müssen alle WCF nur wissen, um eine einfache SOAP-Web-Service zu nennen .... auch, mit WCF 4.0, viele Dinge - vor allem Konfiguration - wurden erheblich verbessert und vereinfacht.

Resores: Es gibt die MSDN WCF Developer Center, die alles von Anfängern Tutorials zu Artikeln und Beispielcode hat.

Auch, ob die screen cast library up on MSDN für einige wirklich nützlich, 10-15 Minuten Stücke von Informationen über fast jedes Thema zu WCF im Zusammenhang Sie interessiert sein könnten.

+0

Es sieht einfach genug aus. Vielen Dank! Ich werde es versuchen. – rita

+0

funktioniert super! Vielen Dank! – rita

+0

@rita: Siehe! WCF ist doch nicht so ein großes gruseliges Monster ;-) Lerne es Stück für Stück, so viel, wie du gerade brauchst - und es fängt an, Sinn zu ergeben :-) –