CFPropertyList: PHP-Klassen zur Manipulation von Apples property lists
Bei meiner Arbeit für das iPhone-Projekt habe ich die Kommunikation zwischen Webservice und Applikation vor einiger Zeit auf XML-PLists umgestellt.
Allerdings hat das XML-Format (genau wie die anderen XML-basierten Protokolle, die ich vorher benutzt habe) das Problem, dass es sehr „geschwätzig” ist: so hatte ich in einem Extremfall über 80KB an Daten, die übertragen werden mussten. Prinzipiell ja nicht so wild, 80KB hat man mit heutigen DSL-Anschlüssen schnell übertragen. Aber problematisch wird das, wenn man bedenkt, dass die Daten eventuell auch über GPRS oder Edge übertragen werden müssen. In dem Fall wird es nämlich erstens schnell teuer und zweitens steigen die Ladezeiten ins Unermessliche.
Um diesem Problem entgegen zu treten, habe ich das Format umgestellt auf binäre PLists, Apples Standard-Format für PLists. Das Format ist ziemlich gut, finde ich, unterstützt es doch so Sachen wie „uniquing” von Objekten (jedes Objekt taucht nur einmal auf in einer Datei und wird ansonsten nur noch referenziert). Damit war es mir möglich, das Datenaufkommen um 60% zu reduzieren. Nachdem ich noch GZip darüber gejagt habe, war ich bei satten 1,8kb statt vorher 80kb. Ein Ergebnis, mit dem ich mehr als leben kann.
Zum Erstellen habe ich die PList-Klassen vom Kellerkind erweitert um binäre PLists. Das Ergebnis möchte ich euch nicht vorenthalten, wir (das Kellerkind und ich) haben ein Google-Code-Projekt draus gemacht.