Ankündigung

Einklappen
Keine Ankündigung bisher.

"PHP Service" zu Webservice

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von Tropi Beitrag anzeigen
    MySpace hat auch eine Windows Infrastruktur... *scnr*
    My wer? War das nicht die Firma was NewsCorp soviel "Gewinn" brachte?
    Windows Server gehören NICHT ins Internet!

    Dildo? Dildo!

    Kommentar


    • #17
      Zitat von NoEs Beitrag anzeigen
      Jo 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?
      Sieh dir einfach mal ein Tutorial zu PHP + Soap an.
      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


      • #18
        Zitat von tkausl Beitrag anzeigen
        Windows 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.
        Das nennt sich dann ASP...

        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


        • #19
          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(); 
          Damit steht schon der ganze Service mit einer Methode testMe.
          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();
              } 
          Jetzt fehlt nur noch die WDSL, die ist das Kernstück des ganzen und beschreibt exakt welche Methoden der Service hat und welche Parameter er erwartet und zurück gibt.
          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>
          Wenn du in allen Scripten
          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


          • #20
            Ich hab mir jetzt nicht alles durchgelesen.
            Aber diese Aussage ist mir hängen geblieben:
            Zitat von NoEs Beitrag anzeigen
            Dieses 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.
            Wenn die beiden sich "eine Landschaft" teilen, sehe ich keinen Grund für einen Web Service. Und selbst dann könnt man per FTP die Datei in das c# Verzeichnis bringen, dort müsste man dann dieses Verzeichnis dauerhaft überprüfen o.ä.
            Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

            Kommentar


            • #21
              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


              • #22
                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.
                Nein. Es gibt ausschließlig C# Entwickler (mich eingeschlossen).
                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


                • #23
                  //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.
                  Ich habe nun einen WCF Webservice in C# geschrieben der den
                  "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

                  Lädt...
                  X