Laden...

Webservice-Aufruf in C#

Erstellt von stoepsel007 vor 15 Jahren Letzter Beitrag vor 15 Jahren 7.678 Views
S
stoepsel007 Themenstarter:in
6 Beiträge seit 2008
vor 15 Jahren
Webservice-Aufruf in C#

Guten Abend,
ich habe gleich drei Probleme:

  1. Ich bin C#-Neuling
  2. Ich habe keine Ahnung von Webservices

Jedoch möchte ich genau letzters gerne machen. Leider funktioniert es bisher nicht so wie ich es gemacht habe. Dahe brauche Nachhilfe...

Um einen Webservice-Dummy zu haben, bin ich folgendermaßen vorgegangen:
Datei --> Neu --> Datei --> Web -> C# --> Webdienst
Der Coderahmen für einen Hello World Webdienst wird sofort mitgeliefert. Unter Datei --> In Browser anzeigen, kann ich diesen auch testen. Solange das Projekt offen ist, sollte dieser doch eigentlich auch für ein anderes Projekt zur Verfügung stehen, oder???

In dem Client habe ich die entsprechende Webreference eingerichtet. Leider komme ich ab da nicht weiter. Wie rufe ich den Webservice auf? Sofern mein Vorgehen grundsätzlich falsch ist, wo bekomme ich gaaanz einfache Webdienste (z.B. Zahl A + B addieren) im Internet?
Vorab vielen Dank für eure Hilfe!

G
497 Beiträge seit 2006
vor 15 Jahren

der Webservice muss ja von irgendeinem HTTP-Webserver gehostet werden. Wenn du das Projekt im Debugger aufrufst, wird standardmäßig der im VS integrierte Testserver benutzt. Du kannst aber auch den IIS-Webserver von Windows so einrichten, daß er deinen Webdienst hostet. Dann kannst du den Webdienst auch von anderen C#-Projekten aus (und von überall aus dem Netzwerk) aufrufen, solang der IIS bei dir läuft.

3.971 Beiträge seit 2006
vor 15 Jahren

Hallo stoepsel007,
Bitte benutze die WCF-Dienste, dort findest du auch 1.000 Tutorials drüber. Den alten Webdienst aus System.Web.WebServices bitte nicht mehr verwenden.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
142 Beiträge seit 2007
vor 15 Jahren

Hallo stoepsel007,
Bitte benutze die WCF-Dienste, dort findest du auch 1.000 Tutorials drüber. Den alten Webdienst aus System.Web.WebServices bitte nicht mehr verwenden.

Hallo kleines_eichhoernchen,

ich kann mir nicht vorstellen, dass die alten Webservices durch das Erscheinen von WC unbrauchbar geworden sein sollen. Habe mir den Umgang mit ihnen erst vor wenigen Monaten erarbeitet und es hat an Nichts gemangelt.

Zudem gibt es noch einige IIS dort draußen die noch auf pre 3.0 frameworks laufen.

3.971 Beiträge seit 2006
vor 15 Jahren

Zitat aus: WCF vs ASMX WebServices

The moral of the story is ASMX is simple and because it is simple, it isn’t very powerful. Take the time to learn about WCF because this is the future of the .Net platform, thus it will be time wisely spent. If you’ve been holding back I encourage you to step out of your old ASMX habits and learn the ways of WCF.

Solche vergleiche findest du im INet relativ oft. Die vllt. wichtigsten Vorteile vor allem für Anfänger sind, dass es sehr viele Beispiele mehr gibt als beispielsweise für alte ASMX Webdienste und ganz wichtig, dass ein WCF-Dienst auch ohne installierten und konfigurierten IIS läuft.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

M
234 Beiträge seit 2007
vor 15 Jahren

@kleines_eichhoernchen: Die zwei Gründe, die Du nennst, sind nicht gerade überzeugend. Bis auf die Installation des IIS bei ASMX-Webservices kann ich es nicht nachvollziehen.
Hast Du überzeugendere Gründe? =)

3.971 Beiträge seit 2006
vor 15 Jahren

@kleines_eichhoernchen: Die zwei Gründe, die Du nennst, sind nicht gerade überzeugend

Diese sind aus Sicht, für jemand, der sich noch absolut garnicht mit der Kommunikation von zwei Prozessen über Wan/Lan beschäftigt hat.

Es gibt genügend Seiten im Netz wo man alle Vor- und Nachteile von WCF und ASMX Webdiensten nachlesen kann.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
stoepsel007 Themenstarter:in
6 Beiträge seit 2008
vor 15 Jahren

Hallo zusammen,
vielen Dank für eure Antworten!

Ganz kurz zum Anwendungsfall: Ich möchte einen Webservice aus einem Workflow Foundation (WF) Workflow aufrufen. Dafür gibt es bereits Aktiviten die entsprechend zu konfigurieren sind. Zunächst möchte ich jedoch wissen wie ich das ohne eine solche Aktivität hinbekomme. Die Frage ist sehr grundsätzlich, jedoch finde ich dazu, warum auch immer, einfach keine Beispiel.
Die Frage welche Webservice-Technik die bessere ist, ist daher im Augenblick nicht entscheidend für mich.

Konkretes Beispiel: http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=48
Obiger Webservice gibt einfache Wettervorhersagen zurück. Den Service habe ich unter den Namen "global" in mein Projekt als Referenz eingebunden. Wie rufe ich diesen Service ganz konret auf?

1.696 Beiträge seit 2006
vor 15 Jahren

Konkretes Beispiel:
>

Obiger Webservice gibt einfache Wettervorhersagen zurück. Den Service habe ich unter den Namen "global" in mein Projekt als Referenz eingebunden. Wie rufe ich diesen Service ganz konret auf?

Hallo stoepsel007,

schau dir mal den unteren Teil mal an: http://www.codeproject.com/KB/XML/BeginnerWebService.aspx

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

3.971 Beiträge seit 2006
vor 15 Jahren

du musst dir aus dem wsdl-File entsprechende Klassen erzeugen lassen. In VS 2008 geht es über rechte Maustaste Projekt, Webverweis hinzufügen.

Dies erzeugt einen entsprechenden kompatiblen WCF-Clienten mit entsprechender Konfiguration.

Hast du kein VS2008, dann gibts das Tools svcutil.exe von MS in der Visual Studio SDK-Version. Dies erzeugt nur die entsprechenden Klassen und Serializer. Für die Config bist du anschließend selbst verantwortlich

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
stoepsel007 Themenstarter:in
6 Beiträge seit 2008
vor 15 Jahren

Hallo kleines_eichhörnchen und vbprogger,
nun hab ich es ...endlich 🙂
Die Einbindung als Referenz erzeugt gleichzeitig den Proxy. Der Proxy heißt genau so, wie ich die Referenz benannt habe.
Demnach ist die Lösung für mein konkretes Beispiel genau diese:

global.ServiceSoapClient service = new global.ServiceSoapClient();
Console.WriteLine(global.methode...);

Mehr wollte ich doch zunächst gar nicht wissen 🙂
Vielen Dank für eure Hilfe!!!
Nun werde ich mir als nächstes Mal reinziehen wie das mit den Credentials funktioniert...
Grüße!