Les extensions serveur ISAPI sont des dll. Ils travaillent dans l'espace de processus du serveur. Les requêtes simultanées pris une extension ISAPI sont gérées par des threads séparés. Par conséquent, le code dans une extension ISAPI doit être thread-safe.
Situation
Méthodes d'accès de base de données qui permet de gérer l'initialisation COM ne sont pas thread-safe. Le problème spécifique réside dans l'initialisation des bibliothèques de COM dans un thread et ensuite à l'aide d'un autre thread pour accéder aux données. La mise en œuvre actuelle des pilotes Microsoft ODBC Desktop tombe dans cette catégorie. Ces pilotes (dBase, Microsoft Visual FoxPro, Microsoft Access, Microsoft Excel, Paradox et texte) fournis avec Visual C++, utilisez le moteur de base de données Microsoft Jet 3.0, qui n'est pas thread-safe. Aussi, les objets d'accès données (DAO) est une API COM-basé, donc elle ne court pas de manière fiable dans un environnement multithread une extension ISAPI.
Il y a peut-être d'autres méthodes d'accès de base de données qui ne sont pas thread-safe.
Résolution
Pour accéder à une base de données à une extension de serveur ISAPI, utilisez un pilote ODBC qui a été conçu et testé pour une utilisation multithread. Pilotes ODBC de Microsoft pour Microsoft SQL Server 6.x sont un exemple.
Les classes de base de données MFC ODBC sont thread-safe de la MFC 4.2. Veillez à ce que tout pilote de base de données ODBC que vous utiliser avec ces classes a thread-safe.
Les applications qui utilisent les classes de base de données ODBC MFC antérieures à la version 4.2 de MFC doivent avoir le code de base de données placé à l'intérieur d'une section critique pour s'assurer qu'un seul thread accède au code de base de données MFC à la fois. Pour plus d'informations, consultez classe CCriticalSection.
Actuellement, les classes de base de données DAO MFC ne sont pas thread-safe car ils utilisent les objets DAO COM.
&Notes techniques par le numéro |nbsp ; Notes techniques par catégorie