Valeurs des attributs de synchronisation
L’attribut de synchronisation est une propriété déclarative qui spécifie le type de synchronisation que vous souhaitez que vos composants aient lorsqu’ils sont activés. Lorsque vous incluez l’attribut de synchronisation, COM+ gère les détails de la synchronisation en votre nom ; vous n’êtes pas obligé d’effectuer d’autres appels.
Selon ses exigences, un objet peut partager la synchronisation de son appelant, exiger une nouvelle synchronisation ou fonctionner sans synchronisation.
COM+ fournit les valeurs d’attribut de synchronisation suivantes :
Désactivé. Lorsque vous désactivez l’attribut de synchronisation, COM+ ignore les exigences de synchronisation du composant pour déterminer le contexte de l’objet. Par conséquent, l’objet peut ou non partager le contexte (et la synchronisation) de son appelant.
En général, vous devez utiliser cette valeur d’attribut lorsque vous savez que le composant n’accède jamais à un gestionnaire de ressources. Lors de la migration des composants COM vers COM+, vous devez désactiver l’attribut de synchronisation pour conserver le même comportement que le composant COM non configuré. Un composant non configuré est un composant COM qui n’a pas été installé dans une application COM+.
Non pris en charge. Un objet avec cette valeur ne participe jamais à la synchronisation, et ce quel que soit l’état de son appelant. Ce paramètre est disponible uniquement pour les composants qui ne sont pas transactionnels et qui n’utilisent pas le service d’activation juste-à-temps (JIT) COM+ .
Pris en charge. Un objet avec cette valeur participe à la synchronisation s’il existe. Vous déclarez cette valeur quand vous souhaitez qu’un objet partage dans la synchronisation de son appelant, mais que vous n’avez pas besoin de sa propre synchronisation.
Une bonne raison de définir votre attribut de synchronisation sur Pris en charge est que ce paramètre peut être moins coûteux en termes de ressources système. Toutefois, il est plus difficile d’écrire votre composant en raison de la nécessité de le protéger contre les appels simultanés. L’implication de la définition de l’attribut de synchronisation sur Supported est que, dans certaines circonstances, une instance de votre objet peut être créée de telle sorte qu’elle ne soit pas synchronisée. Si le modèle de thread du composant est Gratuit ou Les deux, vous devrez protéger vos données instance avec un type de mécanisme de verrouillage. Si le modèle de thread est Apartment (STA), vous n’avez pas besoin de protéger vos données instance.
Obligatoire. Lorsque vous définissez cet attribut, COM+ garantit que tous les objets créés à partir du composant seront synchronisés. En effet, chaque fois que COM+ crée une instance de votre composant, il s’assure qu’il n’y a qu’un seul thread qui traverse cette instance à la fois.
Lorsque COM+ active un objet, il examine la status de synchronisation de son appelant. Si l’appelant est synchronisé, COM+ indique la limite de synchronisation de l’appelant pour inclure le nouvel objet. Sinon, COM+ commence la synchronisation.
Nécessite new. Un objet avec cette valeur doit participer à une nouvelle synchronisation, où COM+ gère les contextes et les appartements pour le compte de tous les composants impliqués dans l’appel. COM+ lance automatiquement une nouvelle synchronisation, qui est distincte de la synchronisation de l’appelant.
Une bonne raison de définir votre attribut de synchronisation sur Nécessite nouveau est que ce paramètre vous permet d’effectuer des appels externes à un instance de votre composant plus efficacement. Toutefois, cela rend également les appels entre votre objet et l’objet qui l’a créé plus coûteux en termes de ressources système.
Par exemple, supposons que votre objet et son objet créateur partagent la même limite de synchronisation. Si le client A appelle l’objet créateur et que le client B appelle votre objet, le deuxième appel doit attendre la fin du premier appel. Si vous définissez Nécessite nouveau, votre objet est créé dans une limite de synchronisation distincte. Dans ce cas, les appels d’autres objets peuvent être traités en même temps. Toutefois, les appels de l’objet créateur à votre objet nécessitent davantage de ressources système, car elles doivent dépasser les limites de synchronisation.
Rubriques connexes