Interopérabilité COM
Le Common Language Runtime permet aux objets .NET d'interagir parfaitement avec les composants COM traditionnels. ASP.NET expose l'API Server.CreateObject(ProgId) familière aux développeurs pour la création de références à liaison tardive à COM.
Dim myConn
myConn = Server.CreateObject("ADODB.Connection");
Vous pouvez également utiliser des composants COM traditionnels à liaison anticipée en créant des RCW (Runtime Callable Wrappers), ce qui optimise les performances des appels entre du code non managé et du code managé. Vous pouvez créer un RCW à l'aide de l'utilitaire Tlbimp.exe fourni dans le Kit de développement .NET Framework SDK. Pour plus d'informations sur Tlbimp.exe, consultez la section du didacticiel Démarrage rapide pour les tâches courantes. La section Performances du didacticiel de ASP.NET fournit des informations supplémentaires en comparant la liaison tardive à la liaison anticipée.
Comme avec ASP, vous pouvez également créer des composants COM traditionnels à l'aide de la balise <object> avec un attribut progid ou classid. Outre les pages, vous pouvez utiliser la balise <object> dans le fichier Global.asax de l'application. Dans ce cas, l'objet est ajouté à la collection Page.Application.StaticObjects et est accessible par programme en utilisant simplement son attribut id. Remarquez que vous ne pouvez pas créer d'objet STA (Single-Threaded Apartment) statiquement dans le fichier Global.asax, car cela engendre une erreur d'exécution, comme dans ASP.
ASP.NET continue également à prendre en charge les interfaces intrinsèques ASP existantes ObjectContext Intrinsic Flow, OnStartPage et OnEndPage. La prise en charge de ces interfaces signifie que vous pouvez utiliser des composants existants (Commerce Server, Exchange, etc.) dans les pages ASP.NET. Ces interfaces ne sont pas activées par défaut, mais vous pouvez les activer explicitement à l'aide de la directive de page suivante :
<%@ Page ASPCompat="true" %>
Cette directive entraîne la création par ASP.NET d'objets intrinsèques ASP non managés et leur passage aux composants COM utilisés dans la page. Elle exécute également la page dans un pool de threads STA. Pour plus d'informations, consultez la section suivante.
Remarques sur les performances
Dans ASP.NET, par défaut, le pool de threads est un MTA (Multithreaded Apartment), ce qui peut affecter les performances de composants Visual Basic 5 et Visual Basic 6 cloisonnés de threads traditionnels. L'attribut ASPCompat="true" permet à un pool de threads STA de résoudre les problèmes de performances liés aux composants Visual Basic existants, page par page.
Les appels entre des composants managés et non managés entraînent également un coût de marshaling, ce qui peut altérer les performances de vos pages. Tous les scénarios se traduisent par des performances différentes. Par conséquent, il est important d'effectuer les tests adéquats avant de décider si l'interopérabilité constitue le bon choix pour votre application. Cependant, dans pratiquement tous les scénarios, la réécriture de vos composants COM dans le code managé améliore les performances. Pour obtenir des informations supplémentaires et des conseils importants, consultez la section Performances du didacticiel de ASP.NET.
- ASP.NET expose l'API Server.CreateObject familière aux développeurs pour la création de références à liaison tardive à COM.
- Vous pouvez également utiliser des composants COM traditionnels à liaison anticipée en créant des RCW (Runtime Callable Wrappers), ce qui optimise les performances des appels entre du code non managé et du code managé.
- ASP.NET continue à prendre en charge les interfaces intrinsèques ASP existantes ObjectContext Intrinsic Flow, OnStartPage et OnEndPage. Ces interfaces peuvent être activées explicitement à l'aide de la directive de page
<%@ Page ASPCompat="true" %>.
- L'attribut
ASPCompat="true" permet à des pools de threads STA de résoudre les problèmes de performances liés aux composants Visual Basic existants, page par page.
- Dans pratiquement tous les scénarios, la réécriture de vos composants COM dans le code managé améliore les performances.
|