Éléments de programmation à prendre en considération

Cette rubrique récapitule les informations sur le développement de programmes transactionnels (TPs) à l’aide d’APPC sur les systèmes d’exploitation Windows :

Ordre des octets
Valeurs des constantes définies dans WINAPPC. H et WINCSV. H dépendent de l’ordre des octets du matériel utilisé. Les macros sont utilisées pour définir les constantes sur la valeur correcte.

Par défaut, l’ordre des octets Intel little-endian est utilisé, avec l’octet faible d’une valeur 16 bits suivie de l’octet élevé. Toutefois, lors de la définition de macros inline, la NON_INTEL_BYTE_ORDER macro utilisée dans WINAPPC. H et WINCSV. H n’inverse pas (retourne) l’ordre des octets pour les constantes. Les paramètres d’entrée non constants dans les blocs de contrôle de verbes (VBV) (tels que les longueurs, les pointeurs, etc.) sont toujours au format natif.

Par exemple, le code de retour principal de AP_PARAMETER_CHECK est défini pour avoir une valeur de 0x0001. Selon l’environnement (ordre des octets), la constante AP_PARAMETER_CHECK peut être 0x0001 ou non. Certains formats définissent la valeur telle qu’elle apparaît en mémoire ; d’autres la définissent comme une variable de 2 octets. Comme vous ne pouvez pas supposer que l’application utilise toujours des constantes fournies plutôt que des valeurs câblées, vous pouvez définir une macro pour permuter les octets. Voici un exemple d’utilisation de la macro :

/* when NON_INTEL_BYTE_ORDER is specified, the APPC_FLIPI macro defined in WINAPPC.H macro becomes */  
#define APPC_FLIPI(x)    (x)  
  
/* otherwise this macro flips bytes by defining */  
#define APPC_FLIPI(X) APPC_MAKUS(APPC_HI_UC(X),APPC_LO_UC(X))  
  
/* the AP_PARAMETER_CHECK macro is now defined using the APPC_FLIPI macro */  
#define AP_PARAMETER_CHECK APPC_FLIPI (0X0001)      /* X '0001' */  

Événements
Pour recevoir des données de manière asynchrone, un handle d’événement est passé dans le champ sémaphore du VCB. Cet événement doit être dans l’état non signé lorsqu’il est passé à APPC, et le handle doit avoir EVENT_MODIFY_STATE accès à l’événement.

Noms des bibliothèques
Afin de prendre en charge la coexistence des bibliothèques d’API Win16 et Win32 sur le même ordinateur, les noms des DLL Win32 ont été modifiés.

Anciens noms de DLL Nouveaux noms de DLL
WINAPPC.DLL WAPPC32.DLL
WINCSV.DLL WINCSV32.DLL

Les nouveaux noms de DLL doivent être utilisés pour les applications win32 qui sont destinées à s’exécuter uniquement sur Host Integration Server.

Limites
Pour les systèmes d’exploitation Windows, le nombre de verbes de service communs (CSV) simultanés autorisés par processus est de 64. Un seul de ces verbes par thread peut être synchrone (blocage).

Avec APPC, le nombre maximal de conversations simultanées par processus est de 15 000. Chaque processus prend en charge jusqu’à 15 000 TPs simultanés.

Plusieurs threads
Un TP peut avoir plusieurs threads qui émettent des verbes. Windows APPC prend des dispositions pour les processus Windows multithread. Un processus contient un ou plusieurs threads d’exécution. Toutes les références aux threads font référence à des threads réels dans les environnements Windows multithread.

À l’exception des RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT et MC_RECEIVE_AND_WAIT, un seul verbe de conversation peut être en suspens à la fois sur n’importe quelle conversation ; Toutefois, d’autres verbes peuvent être émis pour d’autres conversations. Cette directive s’applique également aux verbes tp et aux TPs. Bien que plusieurs verbes TP puissent être émis, un seul verbe TP peut être en attente à la fois sur un TP. Cela s’applique à la fois aux applications multithread et aux applications monothread qui utilisent des appels asynchrones.

Emballage
Pour des raisons de performances, les vcB ne sont pas emballés. Les éléments membres de la structure VCB après le premier élément sont alignés sur la taille du type de membre ou sur les limites DWORD (4 octets), selon la taille la plus petite. Par conséquent, les DWORD sont alignés sur les limites DWORD, les WORD sont alignés sur les limites WORD et les BYTE sont alignés sur les limites BYTE. Cela signifie, par exemple, qu’il existe un écart de 2 octets entre les codes de retour principal et secondaire. Par conséquent, les éléments d’un VCB ne doivent être accessibles qu’à l’aide des structures fournies.

Cette option pour l’alignement des membres de la structure et de l’union est le comportement par défaut pour les compilateurs Microsoft C/C++. Pour assurer la compatibilité avec les bibliothèques d’application d’unité logique (LUA) fournies, veillez à utiliser une option de compression de structure et de membre d’union équivalente lors de l’utilisation d’autres compilateurs C/C++ ou lors de la spécification explicite d’une option d’alignement de structure lors de l’utilisation de compilateurs Microsoft.

Inscription et annulation de l’inscription d’applications
Toutes les applications Windows APPC doivent appeler WinAPPCStartup au début de la session pour inscrire l’application et WinAPPCCleanup à la fin de la session pour annuler l’inscription de l’application.

Toutes les applications WINDOWS CSV doivent appeler l’extension Windows SNA WinCSVStartup au début de la session pour inscrire l’application et WinCSVCleanup pour annuler l’inscription de l’application lorsque la session est terminée.

Liaison au moment de l’exécution
Pour qu’un TP soit lié dynamiquement à APPC au moment de l’exécution, le TP doit émettre les appels suivants :

  • LoadLibrary pour charger les bibliothèques de liens dynamiques WINAPPC.DLL ou WAPPC32.DLL.

  • GetProcAddress pour spécifier APPC sur tous les points d’entrée souhaités de la DLL, tels que APPC, WinAsyncAPPC, WinAPPCStartup et WinAPPCCleanup.

    Pour qu’un TP soit lié dynamiquement au CSV au moment de l’exécution, le TP doit émettre les appels suivants :

  • LoadLibrary pour charger WINCSV.DLL ou WINCSV32.DLL, les bibliothèques de liens dynamiques pour Windows CSV.

  • GetProcAddress pour spécifier csv sur tous les points d’entrée souhaités à la DLL, tels que ACSSVC, WinAsyncCSV, WinCSVStartup et WinCSVCleanup.

    Le TP doit émettre l’appel FreeLibrary lorsque la bibliothèque APPC ou CSV n’est plus nécessaire.

    Rendement à d’autres composants
    Étant donné que les environnements Windows sont multithreads, il n’est pas nécessaire de céder à d’autres composants.