2012-06-26 17 views
7

Ich bin in diesem Projekt:PHP zu C# und umgekehrt

Eine Webseite Das wurde von den Front-End-Unternehmen Menschen verwendet werden, um Abfragen und Aktualisieren von Daten aus einer SQL-DB. Ich arbeite mit Visual Studio und der Code dahinter (C#) ist fast fertig, so dass die Interaktionen zwischen SQL und C# in Ordnung sind. Meine ursprüngliche Idee war es, mit ASP.NET zu arbeiten, was mir vertraut ist, aber das wird nicht möglich sein. Ich muss zu PHP wechseln. Also, heute ist mein erster Tag lernen PHP, Überprüfung http://php.net/manual/en/index.php und eine Menge Dinge scheinen sehr ähnlich zu ASP.NET, so denke ich, es wird nicht so schwer sein.

Wie auch immer, einige Fragen tauchten ziemlich schnell auf, weil ich etwas anderes als eine "Hallo Welt" schreiben wollte.

Gibt es eine einfache Möglichkeit, C# -Variablen aus meiner Klasse mit einer PHP-Seite zu bekommen/senden? Ich habe etwas über XML gelesen, um das zu tun, aber ich kratze mich am Kopf, gibt es einen anderen, einfacheren Weg, dies zu tun?

+4

Vielleicht erstellen Sie einen C# WebService und konsumieren ihn über PHP. – canon

+0

Wird Ihre 2. Option untersuchen, danke viel Antisunität. –

+2

Ohne alles in PHP neu zu starten ... Ich zweitens die redeploy die C# als Web-Service ... es ist die einzige Option, die Sie haben, wenn Sie bin bin nicht wirklich Code du bist ... um PHP zu machen Ich würde einfach einen RESTfull-Ansatz für den Web Service übernehmen. – Brian

Antwort

11

Sie haben Optionen.

  1. direkte Integration. PHP kann Objekte instanziieren und verwenden. Siehe die DOTNET-Bibliothek in PHP. Wenn Sie also PHP unter Windows ausführen und Ihre .NET-Logik entsprechend den Anforderungen der PHP DOTNET-Infrastruktur verfügbar machen, können Sie .NET-Klassen einfach direkt von PHP aus aufrufen. Einige Einschränkungen: PHP wurde für die Integration in die .NET 2.0-Laufzeit entwickelt. Sie können keine .NET 4.0-Objekte erstellen und eine Verbindung zu ihnen über PHP herstellen.

  2. synchrone Netzwerkprotokolle. Wie andere vorgeschlagen haben, können Sie Ihre C# -Logik über die Schnittstelle aREST oder die Web-Services verfügbar machen und dann diese Dienste von PHP aus aufrufen, indem Sie die curl-Bibliothek oder file_get_contents() verwenden. Die C# -Logik könnte öffentlich sein, muss aber nicht sein. Mit anderen Worten, Sie können es nur innerhalb der Firewall Ihrer App zugänglich machen, so dass kein anonymer öffentlicher Zugriff möglich ist. Auf der anderen Seite kann Ihre Architektur Zugriff auf die gleiche API von Drittanbieter- oder Benutzer-Apps verlangen. In diesem Fall muss es öffentlich zugänglich gemacht werden.

    In beiden Fällen, öffentlich oder privat, möchten Sie WCF oder ASPNET MVC verwenden, um diese in C# implementierten Dienste verfügbar zu machen.

  3. asynchrone Mechanismen. PHP kann eine Verbindung zu MSMQ herstellen. Siehe Using PHP to Open MSMQ Queues. Natürlich kann C# auch tun. Sie könnten MSMQ als Puffer-Kommunikationsmechanismus zwischen den beiden Welten verwenden. Um dies zu tun, müssen Sie ein Datenserialisierungsprotokoll für die Nachrichten erstellen, die Sie in die Warteschlange stellen. JSON oder XML wären hier die richtige Wahl.

  4. Datenbank. Wenn Sie Bedenken haben, MSMQ zu verwenden, da es "eine weitere zu verwaltende Infrastruktur" ist, können Sie auch eine Datenbank als Vermittler verwenden. Auf eine gemeinsam genutzte Datenbank kann sowohl von PHP als auch von C# zugegriffen und als Nachrichtenwarteschlange oder Kommunikationskanal verwendet werden. PHP fügt Nachrichten in eine MySQL-Tabelle ein und die C# -App könnte sie lesen und verarbeiten und dann die Antwortnachrichten in einer anderen Tabelle platzieren. Dies würde einige Arbeiten von Ihnen erfordern, um die Nachrichtenformate, Protokolle, Indizes und den Anfrage/Antwort-Korrelationsmechanismus zu entwerfen. Aber es beruht auf bewährter, existierender Technologie, die Sie bereits beherrschen.

  5. Endlich gibt es Phalanger. So können Sie PHP auf dem .NET Framework kompilieren. Dies bedeutet, dass die Integration zwischen C# und PHP einfach ist. Ich habe das nicht versucht, aber es könnte Ihre Anforderungen erfüllen.

+0

Vielen Dank für Ihre Antwort, sie scheinen alle gute Ideen Aber rate mal, ich probiere zuerst die dotnet-Bibliothek aus, da ich mit .net in Ordnung bin. Danke noch einmal! –

Verwandte Themen