Was ist die beste Methode für die Kommunikation zwischen Flex und PHP?
In der Vergangenheit haben wir AMFPHP mit AS2 verwendet, und es funktionierte größtenteils großartig (der Vorteil von AMFPHP ist, dass es auch einen JSON-Modus hat, mit dem Sie denselben entfernten PHP nahtlos mit Javascript- oder Actionscript-Frontends verwenden können) .
Es scheint jedoch, dass AMFPHP nicht mehr wirklich gepflegt wird. Also, was empfehlen die Leute, es zu ersetzen? Was ich bisher gefunden habe, ist:
Meistens lehne ich mich AMFPHP zu, auch wegen der Schattenseiten, da ich das gewohnt bin. Irgendeinen Grund sollte ich erwägen, zu etwas anderem zu wechseln?
Wenn Sie eine schnelle und effiziente Kommunikation haben wollen, empfehle ich Ihnen, anstelle eines REST oder eines AMF-Protokolls zu bleiben JSON benutzerdefiniertes Format.
ZendAMF ist eigentlich nicht sehr verwirrend. Sieh dir das Einführungs-Tutorial auf GotoAndLearn an, es ist ziemlich ruhig einfach.
Und nur damit Sie es wissen, einige der Entwickler von AMFPHP sind umgezogen arbeite an ZendAMF. In gewisser Weise ist ZendAMF die Fortsetzung von AMFPHP.
ZendAMF Gute kurze lesen - Ссылка
Für mich ist das kein Kinderspiel. Das Zend-Framework ist eines der besten PHP-Frameworks, und jetzt können Sie mit Flash-Clients sprechen. Ergänzen Sie es mit Adobe-Unterstützung, das ist ein gelungener Deal in meinem Buch.
Alternativen:
WebORB für php Ссылка
AMFPHP Ссылка Wenn Sie die obige URL lesen, werden Sie wahrscheinlich wissen, warum dies nicht mehr auf meinem Radar ist.
Ich kann Ihnen nicht sagen, was am besten ist (weil das sowieso irgendwie subjektiv ist), aber was ich tun kann ist, Ihnen von einem meiner letzten Projekte zu erzählen.
Da dies eine sehr reichhaltige Web-App war und Datenanfragen an den Server häufig waren, wollte ich sicherstellen, dass die Größe der Anfragen so klein wie möglich war. Dies bedeutet, JSON als Format zu wählen.
Als nächstes, aufgrund der Art der Anwendung und der Tatsache, dass meine Flash / Flex-Entwickler 1000 Meilen entfernt waren, brauchte ich eine API, die einfach und zustandslos war. Dies führte uns letztendlich zu HTTP + REST.
Also ist die Kommunikationsschicht meiner App eine einfache Zend Framework-basierte Gruppe von REST-Ressourcen mit URIs wie
%Vor%Sie alle geben JSON zurück. Es gibt auch ein allgemeines JSON-Format für alle Fehler (Ausnahmen werden gefangen und in JSON-Objekte konvertiert), so dass der Flash-Client Fehler leicht behandeln kann.
Wenn du kein Framework wie Zend verwendest, ist normales AMFPHP immer noch großartig, wenn auch nur aus dem einfachen Grund. Ich denke, wenn Sie sich damit wohl fühlen, warum nicht? Die Sache mit der Rolle dieser AMF-Schnittstellen ist, dass sie wirklich nicht zu viel tun müssen, und was AMFPHP in Klassenzuordnung, Recordset-Parsing in ArrayCollection, großartige Leistung .... hat, ist sogar gut mit XML, da es wird komprimiert. Der Service-Browser kombiniert mit Charles hat mich ebenfalls abgedeckt.
Ich konnte mir nicht vorstellen, wie sich die Bemühungen von ZendAMF auf das ursprüngliche AMFPHP beziehen. Während ich graben kann, sage ich nur, dass ich auf der AMFPHP-Mailing-Liste auf Nabble den Blog von Wade Arnold lese ... es ist einfach nicht ganz klar.
Sie sollten Zend AMF in Erwägung ziehen. Das Zend Framework ist so konzipiert, dass es ein Pick and Choose Framework ist, so dass es völlig in Ordnung ist, eine einzelne Komponente (in diesem Fall Zend AMF) für Ihre Anwendung auszuwählen.
Zend AMF ist extrem einfach zu bedienen. Sie müssen lediglich die Funktionen / Klassen angeben, die Sie bereitstellen möchten, und die Klassenzuordnung für Ihre Aktionsskriptklassen festlegen. Alles andere ist ziemlich transparent.
Dieser Link ist ein Screencast, der zeigt, wie WebORB für PHP WDMF (WebORB Data Management für Flex) verwendet wird.
In allen Projekten mit Flash und PHP Backend habe ich entweder mit AMFPHP oder XML Anfragen gearbeitet.
AMFPHP vereinfacht understanting die Anwendung für die zukünftige Wartung, obwohl es die ganze Sache mit dieser spezifischen Technologie verbindet und zusätzlichen Serveraufwand mit sich bringt - um alle benötigten Klassen zu erstellen.
Nach XML, was Sie hier gewinnen, sind standardmäßige REST-Webservices und es kommt nicht auf Flash an (Sie könnten beispielsweise auch Daten von einer Desktop-App ziehen, während Sie JSON oder eine andere von Browsern abhängige Technologie verwenden) erlaube das nicht).
Wenn Sie 100% zukünftige "Unterstützung" wünschen, dann würde ich empfehlen, was überhaupt keine Unterstützung benötigt: XML.
XML in PHP kann mit SimpleXML viel einfacher sein.
Ich würde einfach JSON als Rückgabe für einfache Aufrufe gegen Ihre PHP-API verwenden.
Ich würde definitiv für WebORB gehen. Ich habe es mit .NET in einem früheren Job verwendet und es war eine Freude mit zu programmieren. Seine Benutzerfreundlichkeit und seine gut durchdachte Management-Konsole machen es sehr schnell zu erlernen, und seine Dokumentation ist sehr vollständig; Ich weiß, dass es verlockend ist, bei AMF zu bleiben, nur weil es das ist, was du bereits weißt, aber ich glaube, es lohnt sich, WebORB auszuprobieren.
Sehen Sie sich das Screencast für die Actionscript-Generierung mit PHP, es ist ziemlich schick.
Prost.
PHP hat eine ziemlich gute serialize()
-Funktion, also habe ich für ein kürzlich durchgeführtes Projekt (hohe Punktzahlen für ein Spiel) Sephiroths Serializer . Es macht die Serialisierung auf Flash-Seite fast so einfach wie in PHP. Serializer behandelt auch Datentypen (anders als json / xml) wie AMF.
Nachteil - es ist nicht so kompakt wie AMF, aber das ist nichts, was die gzip-Komprimierung nicht verarbeiten kann.
AMF hat einen schönen situativen Vorteil. Wenn Sie große und komplexe Objekte übertragen möchten, gehen Sie auf jeden Fall mit AMF. Aber wenig wissen die Leute über den Overhead, den AMF trägt, wenn Sie kleine Objekte übertragen. Wenn Sie nur ein Objekt mit drei Eigenschaften übertragen, kann die Verwendung von AMF die Nutzlastgröße verdreifachen.
Nebenbei bemerkt, ich bin ein großer Verfechter der REST-Architektur. Da JSON und AMF beide nur Repräsentationen sind, können Sie einen REST-Service erstellen, der beides akzeptiert, und zur Laufzeit die tatsächliche Repräsentation mit Ihrem Client aushandeln.
"Wenn Sie eine schnelle und effiziente Kommunikation haben möchten, empfehle ich Ihnen, ein AMF-Protokoll beizubehalten"
Und wenn Sie eine schnelle, effiziente und generalisierte Kommunikation wünschen, gehen Sie mit json. Dann wird Ihr Webservice für Flash-, Ajax- oder normale http-Anfragen verfügbar sein.