Marshaling d’interface

Sauf si vous savez hors de tout doute que votre interface ne sera jamais utilisée au-delà des limites de l’appartement, du thread ou du processus, vous devez décider comment fournir la prise en charge du marshaling pour vos interfaces. Il existe trois façons de fournir la prise en charge du marshaling :

  • Écrivez votre propre code proxy/stub qui appelle le canal COM, qui à son tour appelle les bibliothèques d’exécution RPC. Théoriquement, il est possible de le faire, mais dans la pratique, il est presque impossible de le faire sans un effort important.
  • Décrivez vos interfaces dans un fichier IDL (Interface Definition Language) et utilisez le compilateur MIDL pour générer une DLL proxy/stub. Cette méthode offre les meilleures performances et la plus grande flexibilité en termes de types de données acceptables. À l’aide des stubs proxy générés par MIDL, vous pouvez contrôler non seulement la gestion de la mémoire, mais même le marshaling et le démarshalation de types de données complexes sur différentes plateformes.
  • Utilisez MIDL pour générer une bibliothèque de types que le système utilise pour fournir la prise en charge du marshaling au moment de l’exécution. Il s’agit du moyen le plus simple d’implémenter la prise en charge du marshaling. Il vous suffit de générer une bibliothèque de types et de l’inscrire. Vos interfaces doivent être compatibles avec Automation ( oleautomation ou dual), ce qui impose des restrictions sur les types de données que vous pouvez utiliser comme paramètres de méthode. Toutefois, dans la plupart des cas, l’avantage d’avoir vos interfaces accessibles aux programmes écrits dans d’autres langages, tels que Microsoft Visual Basic et Java, l’emporte sur les limitations sur les types de données.

Communication inter-objets