Recommandation pour wrapper C ++ pour les liaisons de bibliothèque dynamique de plate-forme transversale en cours de fabrication (par exemple un poids léger, de haute performance COM ou CORBA) [fermée]

StackOverflow https://stackoverflow.com/questions/1854323

Question

Nous développons une application qui aura une « architecture » plug-in pour permettre aux consommateurs de l'application de fournir leurs propres algorithmes propriétaires. (Nous allons essentiellement un ensemble de parseurs et permettre à des tiers de fournir leur propre bien)

L'espace de domaine nécessite des performances très élevées, donc les liaisons hors processus ne vont pas travailler et nous préférons laisser les choses comme des poids lourds CORBA et COM seul.

En fait, nous sommes à la recherche pour un simple emballage multi-plateforme autour de:

  • bibliothèque de chargement à partir d'un chemin relatif
  • fournir une cartographie de la dll particulier / .so dans une certaine configuration / nom
  • faire une initialisation et d'interroger la bibliothèque pour assurer qu'elle fournit les fonctionnalités nécessaires

Je pense que cela est vraiment juste un emballage autour loadlibrary () et les appels de méthode exportés. Nous pouvons écrire nous-mêmes, mais nous préférons utiliser le code existant que nous avons assez sur notre assiette.

Encore une fois, le débit et les performances sont très très importants.

Des questions similaires sont:

alternatif multi-plateforme à COM - celui-ci est proche, mais nous voulons uniquement en cours - pas besoin de processus et nos besoins sont un peu « poids léger »

.

C ++ multiplateforme Bibliothèques dynamiques; Linux et Windows

Ceci est pour C ++ non géré - nous ne pouvons pas utiliser .NET

EDIT - ce que nous avons trouvé

Nous avons constaté que Poco fonctionne très bien pour nos besoins. En prime Cette page est un commentaire très apprécié sur l'état du développement de C et la direction de la langue ...

Il était un papier d'emballage multi-plateforme que nous avions besoin que Poco offre. Vraiment il n'y a pas grand-chose à, mais nous sauve encore du temps et des essais. Aucune autre information pendant l'exécution.

Était-ce utile?

La solution 2

Je pense que cela pourrait aussi fonctionner: http://pocoproject.org/docs/Poco.SharedLibrary.html

Autres conseils

bibliothèque ACE contient des emballages pour le chargement de la bibliothèque dynamique transversale qui fonctionnent Plate-forme. Si vous voulez plus de confort que loadlibrary plaine puis regarder TAO L'ACE ORB . En utilisant CORBA avec TAO est extrêmement performant et le plus probable bat toute infrastructure de plugin auto conçu en particulier si vous utilisez des appels de processus, comme TAO les optimise.

Pour utiliser l'utilisation wrapper de plate-forme de croix de bibliothèque dynamique ACE_DLL . Il fournit l'emballage de la plate-forme de croix les plus élémentaires que vous avez mentionné dans loadlibrary ().

entre l'utilisation et l'utilisation ACE_DLL TAO est le cadre de configuration de service d'ACE qui vous permet de charger dynamiquement des objets. Après le chargement, vous pouvez obtenir un pointeur upcast à l'objet chargé que vous pouvez appeler et mis en œuvre une méthode sur l'objet chargé.

Le code pour le faire ressembler à ceci:

char const * const cpc_myClass = ACE_DYNAMIC_SERVICE_DIRECTIVE(
  "myclass",
  "dllname",
  "_make_MyClass",
  ""
);
result = ACE_Service_Config::process_directive(cpc_myClass);
MyClass * p_obj = ACE_Dynamic_Service<MyClass>::instance ("myclass");
p_obj->callAnyMethodYouLike();

est expliqué que TAO connaît deux types d'optimisation de la colocalisation (thru_poa et direct):

  

Lorsque vous utilisez la stratégie directe, les invocations de méthodes sur les objets colocalisés deviennent des appels directs à serviteur sans vérifier l'état du POA.

Vous pourriez être étonné de voir comment TAO peut être efficace si elle est utilisée correctement. Je suggère de créer une simple preuve de concept et faire des mesures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top