IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Creation d'une API multi language


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut Creation d'une API multi language
    Bonjour a tous,

    je cherche à creer une API sur l'un de mes soft (Celui-ci est ecrit en C++ et uniquement compatible Windows).
    Je voudrai que cette API puisse etre utilisé depuis different language comme Java, Python, C#, etc......

    La seule chose que j'ai trouvé pour l'instant est de faire mon API via ActiveX/COM.
    Malheureusement je ne trouve pas sa "clair et propre".

    Donc avez vous d'autres idées sur les techno que je peux étudier ?


    Je vous remercie d'avance pour votre aide

    PS: je ne sais pas si je post dans le bon forum. Désoler

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    pourquoi ne pas ajouter une implémentation Rest à ton soft ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Il y a la JNI en java pour coder en C/ C++.
    C'est utiliser sur Android

    Ensuite, tu peux coder en C en python: Cython. Il y en peut-être d'autres "trucs".

    Tu peux regarder les bibliothèques multi-plateformes comme Boost: Boost.Python
    Mais aussi MoSync SDK (Invoke C++ Code from JavaScript)

    Donc cela fait déjà un petit paquet: une bibliothèque C/ C++ avec des morceaux en python et "des accès" en Java/ Python/ JavaScript ... mais ton application finale risque de morfler niveau dépendance, performance, taille

    Le .Net je pense que c'est mort: ou alors il faut passer par du C++ managé/ CLI

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Salut,

    pourquoi ne pas ajouter une implémentation Rest à ton soft ?
    Je ne peux pas faire juste du REST...
    Le REST ne me permet pas de faire des chose complexes facilement.
    Le "without states" entre deux appels a l'API m'empeche de faire cela.

    -----------------------------------------------------------------------------------------------


    JNI --> Permet de faire des appels dans des DLL C++. Ok, pour les type simple, mais pour les objets plus complexe, cela fonctionne aussi ?

    Dans tous les cas, tu me dit que c'est a l'utilisateur de faire le binding vers son langage favoris.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    c'est quoi comme API, elle permet de faire quoi? c'est indépendant d'une instance de l'application?

    c'est a l'utilisateur de faire le binding vers son langage favoris
    Oui.

    Ya pas de truc universel. Les DLL c'est un peu un standard car ca vient de l'OS (windows), c'est la méthode la plus simple mise a disposition par l'os pour partager du code. C'est pas lié a un language, on dit "DLL C" mais tu peux en écrire en VB ou meme en pascal il me semble. De ce fait tous les langages permettent d'appeller des fonctions dans des dll.
    T'as parlé d'exporter des trucs plus complexes je suppose que tu parles de classes, donc non, tu peux le faire, mais je ne te le conseil pas du tout, ca va créer beaucoup de problèmes.
    Par contre tu peux exporter des interfaces, mais évidement ca réduit les langages utilisables à ceux qui peuvent utiliser des interfaces.

    Pour ce qui est de COM, c'est une techno que j'affectionne beaucoup. C'est un des trucs les plus propres qui existe concernant le partage de code orienté object. La POO dans toute sa splendeur. C'est clair c'est pas simple au début, beaucoup de théorie, pas beaucoup d'exemples, mais au final c'est pas trés compliqué.
    Avantages :
    - Peu d'overhead
    - Utilisable par beaucoup de langages (pour peu qu'ils soient orienté objet)
    - Permet une extensibilité remarquable (tant qu'il s'agit de c++)
    Inconvénients :
    - Doit enregistrer les interfaces / composants dans le registre
    - Pas mal de code à écrire

    Pour conclure, je pense que dans ton cas il vaut mieux faire une DLL C. Ca sera utilisable partout, et c'est simple à réaliser.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Ok, donc je vais voir pour faire cela en COM
    Merci a tous pour votre aide

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello !

    <gout personnel> Pour ma part, je n'aime pas beaucoup COM, car si les concepts derrière sont intéressants, ça n'est pas bien implémenté et ça utilise beaucoup trop de mécanismes runtime lorsqu'on en a pas besoin.</gout personnel> En plus c'est une techno fermée, pas ce qui se fait de mieux quand on veut ouvrir son API aux autres .

    Fournir des bindings en Python, Ruby, Java et autre sur un soft en C++ (ou en quoi que ce soit d'autre d'ailleurs) demande beaucoup de travail humain, car une API en C++ ne se traduit pas naturellement dans un autre langage. Tu peux automatiser facilement lorsqu'il s'agit de partager des données (protobuf, thrift, serialisation json). Pour l'appel de procédure, c'est tout de suite plus compliqué et nécessite de se pencher sur la méthode adéquate pour chaque langage.

    Par contre je ne suis pas d'accord avec "l'utilisateur doit faire le binding pour son langage favori". Les bindings sont toujours de meilleure qualité si produits par la même équipe qui a implémenté l'API en dessous. Certe, un utilisateur peut toujours créer un binding. Mais si on cherche à ramener de nouveau utilisateurs, ce sera plus efficace en fournissant le dit binding !
    Find me on github

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/10/2012, 14h34
  2. Creation d'une API JAVA pour envoyer/recevoir des sms
    Par issiaga isaac dans le forum Multimédia
    Réponses: 1
    Dernier message: 04/07/2008, 16h02
  3. Creation d'une Application multi-utilsateur
    Par ninsekh dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/10/2007, 07h49
  4. [Recherche]Une api pour la creation de jeux 2D
    Par kedare dans le forum Graphisme
    Réponses: 3
    Dernier message: 03/10/2006, 18h41
  5. creation d'une API
    Par dev007 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 06/06/2006, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo