Zitat von Tropi
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
"PHP Service" zu Webservice
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zitat von NoEs Beitrag anzeigenJo das war eigendlich von Anfang an der Plan.
Allerdings wird eine WSDL Schnittstelle verlangt.
Ist schon etwas her als ich mich mit diesem Thema auseinandergesetzt habe.
Ich dachte SOAP ist für die eigentliche Datenübertragung verantwortlich
(also ein Protokoll) und WSDL stellt Quasi dann die Methoden des Services zur Verfügung.
Ich kann nun meinen Funktionierenden Webservice mit
http://meineSeite:/index.php?parameter=xxx
gedanklich nicht mit WSDL Verbinden.
Da scheint entweder ne große Verständnislücke zu sein
oder das was ich da mit php gebaut habe ist eifnach kein Webservice?
Die WSDL ist sozusagen eine Beschreibung der Schnittstelle.
Sie gibt an welche Parameter übergeben werden können, welche Funktionen auf Serverseite aufrufbar sind und wie die Rückgabewerte aussehen, außerdem den Zielpunkt des Requests.[COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
[URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]
Kommentar
-
Zitat von tkausl Beitrag anzeigenWindows hat auch einen Webserver für C#-Webservices (in etwa vergleichbar mit z.B. Tomcat für Java), nur wie das da genau abläuft weiß ich nicht da ich kein großer Fan von Microsoft-Produkten bin.
C# ist in Verbindung mit ASP durchaus Webservice und Webserverfähig. Unterschätzt nicht die C# API, man bekommt Funktionalitäten "pluggable" fix und fertig, nur noch zum Konfigurieren. Es ist extrem mächtig... aber auch ziemlich nervig, weil ASP (sorry, ist eine persönlich Abneigung von mir).
Am Neuschreiben geht wohl nix vorbei, aber das sollte eher Fleißarbeit sein, es sei denn man will es gleichzeitig verbessern.Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
Kommentar
-
Also wenn du eine PHP Umgebung bekommen kannst ist es nicht so schwer einen Webservice aufzubauen.
Man muss aber drauf achten das C# sehr empfindlich ist was so eine WSDL angeht.
Aber mal einfach von vorne.
Erstmal brauchst du einen "Server Script". Ist ein einfaches PHP Script welches den Service Ausführt:
Bsp: server.php
PHP-Code:error_reporting(E_ALL);
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache, Wichtig beim testen!!
ini_set('display_errors',1);
/**
* Eine Klasse mit allen Methoden die der Service nacher haben soll.
*/
class Test {
public function testMe($input1,$input2) {
return $input1.' test '.$input2;
}
}
/* Mann kann das Script erstmal so aufrufen um die Quelltext zu testen.
$Test = new Test();
echo $Test->testMe('Hallo','Welt');
die();
*/
/**
Die WDSL // WDSL ist eine Beschreibung was der Service kann und darf
*/
$server = new SoapServer('dummy.wsdl');
/**
* Dem Service sagen welche Klasse er verwenden soll
*/
$server->setClass("test");
$server->handle();
Von Client Seite kann man diesen dann Einfach so aufrufen:
PHP-Code:ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
header('content-type: text/html; charset=utf-8');
try{
$obj_SoapClient = new SoapClient('http://www.exampel.com/webservice/dummy.wsdl');
echo $obj_SoapClient->testMe('Hallo','Welt');
}
catch(SoapFault $e) {
print_r($e);
echo $e->getMessage();
echo $obj_SoapClient->__getLastResponse();
}
Hier die Beschreibung für nur diese eine Methode die wir oben sehen.
HTML-Code:<?xml version ='1.0' encoding ='UTF-8' ?> <definitions name='exampleService' targetNamespace='http://www.exampel.com/webservice/server' xmlns:tns='http://www.exampel.com/webservice/server' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' xmlns='http://schemas.xmlsoap.org/wsdl/'> <message name="testMeRequest"> <part name="input1" type="xsd:string" /> <part name="input2" type="xsd:string" /> </message> <message name="testMeResponse"> <part name="result" type="xsd:string" /> </message> <portType name='testMePortType'> <operation name='testMe'> <input message='tns:testMeRequest'/> <output message='tns:testMeResponse'/> </operation> </portType> <binding name='testMeBinding' type='tns:testMePortType'> <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='testMe'> <soap:operation soapAction='urn:exampleService#login'/> <input> <soap:body use='encoded' namespace='urn:exampleService' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> </input> <output> <soap:body use='encoded' namespace='urn:exampleService' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> </output> </operation> </binding> <service name='testMeService'> <port name='testMePort' binding='tns:testMeBinding'> <soap:address location='http://www.exampel.com/webservice/server.php' /> </port> </service> </definitions>
www.exampel.com durch deine Adresse ersetzt bzw.
www.exampel.com/webservice/server.php durch den Ort wo dein server.php liegt hast du ein funktionierendes Beispiel auf das man auch mit einem C# zugreifen kann.Vieles kann, wenig muss.
Kommentar
-
Ich hab mir jetzt nicht alles durchgelesen.
Aber diese Aussage ist mir hängen geblieben:
Zitat von NoEs Beitrag anzeigenDieses Projekt soll nun in die bestehende Landschaft integriert werden.
Also aus einer Anwendung heraus, die in c# geschrieben wurde soll nun dieser
XML Inhalt, welchen mir mein PHP Gedöhns gibt verfügbar sein.Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen
Kommentar
-
Die Frage ist doch eigentlich, wie ist die Firmenstruktur aufgebaut.
Sind die C# Entwickler und die der PHP Entwickler in einem Unternehmen, ich denke da es im Intranet laufen soll ja.
Also wo ist das Problem dann einen Apache Server mit PHP aufzusetzen und so zugänglich zu machen das alle das Ding nutzen können, dazu ist ja ein Webservice da.
Auf das Ding kann dann sogar via VPN zugegriffen werden, wenn es sein muss.
Allerdings würde ich kein SOAP anbieten, sondern eher auf Basis REST Webservice gehen und JSON als Datenaustauschformat anbieten. Da werden die Daten nämlich via HTTP geholt und das kann C# mit einem Lachen ohne kleinste Probleme.Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
[URL]http://www.lit-web.de[/URL]
Kommentar
-
Das was Varon geschrieben hat trifft den Nagel meines Problems auf den Kopf.
Danke dafür! Das hat mir im Verständnis weitergeholfen.
So wäre es aufjedenfall möglich das in php zu belassen und den Service trotzdem für die
C# Entwickler zugänglich zu machen.
Sind die C# Entwickler und die der PHP Entwickler in einem Unternehmen, ich denke da es im Intranet laufen soll ja.
Das PHP Projekt war eine Leiche aus meinen alten Projekten, aber würde halt jetzt zur Anwendung kommen. Aber dazu muss es halt für alle anderen Entwickler verfügbar gemacht werden.
Es wäre Quasi die einzige Anwendung die mit php laufen würde.
Es wäre Möglich diese PHP Anwendung auf irgendeinen Server in der Firma laufen zu lassen.
Allerdings würde dann niemand mehr rausfinden wie der Server konfiguriert wurde usw
wenn das Personal mal wechselt.
Daher habe ich die Vorgabe bekommen das nicht auf einen extra Server zu hosten,
sondern einen WEB Dienst (mit .asmx Datei usw) mit Visual Studio zu erstellen, und diesen Dienst dann wie alle anderen Dienste zentral anzubieten...
D.h. -->das ganze Projekt nach C# umschreiben
Kommentar
-
//kleines Update von mir
Es gibt die Möglichkeit php Code in .NET laufen zu lassen.
◾Phalanger allows you to execute PHP scripts right inside a .NET language. Enhance your C# code with functionality written in PHP.
"Input" bzw. die Serviceanfrage aufnimmt.
Anschließend werden meine Algorithmen, die nach wie vor php code sind, ausgeführt.
Die Ergebnisse werden wieder über den Webservice zurückgereicht.
Ich bin gerade ziemlich begeistert von:
Phalanger
Kommentar
Kommentar