Hintergrund:
Ich bin dabei, eine Webservices-Website zu erstellen, die viele Arten von einfachen Diensten über SOAP und möglicherweise auch andere Protokolle bereitstellen wird. Das Ziel ist es, zum Beispiel Konvertierungen, RSS-Parsing, Spam-Checks und viele andere Arbeiten einfach zu machen. Die Seite wird sich vor allem an Anfänger unter den Entwicklern richten.
Mein Problem:
Ich habe noch nie C# oder .NET entwickelt. Ich habe vor vielen Jahren etwas VB6 gehackt, aber das war's. Jetzt brauche ich einige Beispiele für RPC-Aufrufe über SOAP in C#. Ich habe versucht, das Web zu durchsuchen, und Stack Overflow, um dies zu finden, aber didn't finden viele Ressourcen, und ich habe keine Ahnung, wie die Ressourcen (welche sind alt? welche sind falsch? etc) zu bewerten.
Ich habe ein einfaches Beispiel Dienst, der wie folgt in PHP aufgerufen wird erstellt:
<?php
$client = new SoapClient('http://webservi.se/year'); //URL to the WSDL
echo $client->getCurrentYear(); //This method returns an integer, called "year"
?>
Nun möchte ich diese Methode so einfach wie möglich in C# aufrufen. Alle Hinweise und Beispiele sind sehr willkommen. Wo soll ich anfangen? Welche Klassen/Module/was auch immer kann ich verwenden?
Die Lösung muss nicht unbedingt SOAP beinhalten, wenn es bessere Kommunikationsframeworks gibt (das Backend soll ja erweiterbar sein), aber beachten Sie, dass die Serverseite in PHP auf Unix implementiert ist, so dass proprietäre Lösungen von Microsoft auf der Serverseite nicht in Frage kommen.
Beachten Sie, dass ich diese Informationen benötige, damit ich eine Dokumentation schreiben kann, der J. Random Web Developer folgen kann (auch wenn sie ein gemeinsames Webhosting nutzen). Ich denke daher, dass es am besten ist, dies nur im Code zu tun, aber auch andere Wege sind natürlich willkommen.
Voraussetzungen: Sie verfügen bereits über den Dienst und die veröffentlichte WSDL-Datei und möchten Ihren Webdienst von der C#-Client-Anwendung aus aufrufen.
Es gibt 2 Möglichkeiten, dies zu tun:
A) ASP.NET-Dienste, die alte Art, SOA zu betreiben B) WCF, wie von John vorgeschlagen, das neueste Framework von MS, das viele Protokolle, einschließlich offener und MS-eigener, bietet.
Der einfachste Weg ist die Erstellung von Proxy-Klassen in der C#-Anwendung (dieser Vorgang wird als Hinzufügen einer Dienstreferenz bezeichnet).
Ich verwende http://www.dneonline.com/calculator.asmx?WSDL als Beispiel
CalculatorServiceReference
(oder wie immer Sie den Dienst im vorherigen Schritt benannt haben).Sie sollten den Namen der generierten Proxy-Klasse und den Namespace sehen.
In meinem Fall ist der Namespace SoapClient.CalculatorServiceReference
, der Name der Proxyklasse ist CalculatorSoapClient
. Wie ich oben sagte, können die Klassennamen in Ihrem Fall variieren.
Gehen Sie zu Ihrem C#-Quellcode und fügen Sie Folgendes hinzu
using WindowsFormsApplication1.ServiceReference1
Jetzt können Sie den Dienst auf diese Weise aufrufen.
Service1Client service = new Service1Client();
int year = service.getCurrentYear();
Ich hoffe, dies hilft Ihnen. Wenn Sie auf Probleme stoßen, lassen Sie es uns wissen.
Werfen Sie einen Blick auf "using WCF Services with PHP". Darin werden die Grundlagen erklärt, die Sie benötigen.
Als theoretische Zusammenfassung:
WCF oder Windows Communication Foundation ist eine Technologie, die es ermöglicht, Dienste zu definieren, die von der Art und Weise - der zugrunde liegenden Kommunikationsmethode - abstrahiert sind, mit der sie aufgerufen werden.
Die Idee ist, dass Sie einen Vertrag darüber definieren, was der Dienst tut und was er anbietet, und auch einen anderen Vertrag darüber definieren, welche Kommunikationsmethode verwendet wird, um den Dienst tatsächlich zu nutzen, sei es TCP, HTTP oder SOAP.
Der erste Teil des Artikels hier erklärt, wie man einen sehr einfachen WCF-Dienst erstellt.
Weitere Ressourcen:
Werfen Sie auch einen Blick auf NuSOAP. Wenn Sie jetzt NuSphere kennen, ist dies ein Toolkit, mit dem Sie eine Verbindung von PHP zu einem WCF-Dienst herstellen können.
Sie suchen an der falschen Stelle. Sie sollten unter Windows Communication Framework nachsehen.
WCF wird sowohl auf dem Client als auch auf dem Server verwendet.