2009-11-06 2 views
0

Je tente de créer une application Web client/serveur. Le logiciel client est écrit en Objective-C (Mac), et le logiciel serveur est écrit en Python (Linux). Je voudrais encapsuler des données d'objet de chaque côté, et l'envoyer à travers l'Internet à l'autre côté. Cela inclura les types standard tels que les chaînes, les doubles et les structures de données (tableaux, dictionnaires), ainsi que les fichiers binaires.Quelles technologies permettent d'envoyer des données encapsulées et de les convertir ultérieurement entre Python et Objective-C?

Ma question est, comment pourriez-vous me recommander de faire cela? Quelles technologies permettent d'envoyer des données encapsulées et de les convertir ultérieurement entre deux langages de programmation différents? Plus précisément Objective-C et Python?

Python a cornichon/cPickle qui vous permettra de prendre des objets Python et les encapsuler dans un fichier, mais eux vous laisse un décapage avec des objets Python et pas des objets Obj-C. J'ai également vu XML et JSON, bien que je sois toujours coincé avec le problème de la conversion d'objets, tels qu'un dictionnaire Python dans un NSDictionary Obj-C, ou vice-versa. D'après ce que j'ai compris, XML/JSON peut être difficile à utiliser avec des données binaires, ce qui nécessite de le convertir en texte avant de l'encapsuler. J'envoie peut-être de grandes quantités de données binaires (50-100 Mo par requête), donc une conversion de texte augmenterait considérablement la taille du fichier, ce que je voudrais éviter.

Merci pour toute aide!

Répondre

2

Si vous parlez d'une application Web basée sur un navigateur traditionnel, alors je m'en tiendrai probablement à la sérialisation JSON ou XML.

Pour tout ce que je vous suggère s'il vous plaît roulement de tambour ...

Google Protocol Buffers

Petit, rapide et dispose d'un ensemble décent de fournisseurs pour différentes langues.

1

Pourrait vérifier une partie de la technologie appelée Thrift. C'est un service basé sur Apache spécialement conçu pour communiquer entre différentes langues.

EDIT - link

1

Vous pouvez utiliser PyObjC du côté client et une sorte de sérialisation à base de python. PyObjC dispose d'installations pour l'intégration dans une application Cocoa existante et pour la communication avec l'environnement d'exécution Python.

Questions connexes