Il existe plusieurs:
Performance - il est un peu plus vite que vous ne devez pas passer par l'automatisation des messages (de débranchement et unmarshalling)
Isolation - si un grand nombre d'applications différentes utilisent la bibliothèque, chacun aura sa propre copie. Ce point est le plus important pour traiter les différences entre un MTA (multithread Appartement) et un STA (Appartement fileté simple modèle)
Serveur IN-PROC (qui est vraiment un hors des processus, de le processus de l'appelant) est partagé par tous les différents interlocuteurs (ce qui est un excellent moyen d'avoir pas cher IPC/RPC)
Ok je suis l'édition avec quelques définitions, et un peu plus de références:
- Contexte est vraiment tout l'état autour de l'utilisation d'un objet.
- La causalité est vraiment un concept similaire à un fil qui indique l'utilisation d'un objet dans un contexte. ("Une causalité est une chaîne distribuée d'appels de méthode COM qui s'étend sur un nombre quelconque de contextes dans un nombre quelconque de processus" - ISBN: 0-201-61594-0)
Ceux à concepts sont discutés dans environ 30 pages du chapitre 2 de l'excellent livre de Tim Ewald "Transactional COM +" ISBN: 0-201-61594-0
Donc, en prenant une citation directe du résumé du chapitre 2: "Un objet peut interagir avec son contexte en utilisant le contexte de l'objet Ces deux objets fournissent des interfaces pour interagir avec les services d'exécution COM +, ce style de codage, «en contexte», rend le développement de COM + très différent du développement COM classique.
Enfin, le chapitre 2 a une discussion « Pourquoi Applications Bibliothèque? », (ce qui est différent de votre question, pourquoi ne pas tout simplement vieux COM?) Ses arguments indiquent essentiellement les mêmes raisons d'utiliser un objet COM, 1. Chaque application a sa propre instance. 2. Charger dans le processus non DLLhost.exe. 3. Beaucoup moins de frais généraux. 4. Déploiement simple d'objets communs. Donc, la ligne de fond est que si vous n'êtes pas distribué, et non transactionnel dans la nature, il n'y a pas de réel avantage à utiliser COM + sur COM. Mais si vous écrivez une application COM + et que vous la déployez en tant qu'application LIBRARY, elle se comportera un peu plus comme un composant COM.
Espérons que ça aide.
Je ne comprends pas du tout. Lorsqu'un serveur in-process est utilisé, il est chargé séparément par chaque client et aucun marshaling n'est utilisé. – sharptooth
J'ai ajouté quelques mots supplémentaires. Faites-moi savoir si c'est ce que vous cherchiez (pensez que vous essayez vraiment de comprendre la différence entre "COM" et "COM + Library Apps" pas la différence entre "COM + Server Apps" et "COM + Library Apps") –