Développement du serveur

Lorsque vous créez un programme serveur pour une application distribuée, vous devez utiliser le fichier d’en-tête et le stub du serveur générés par le compilateur MIDL. Pour plus d’informations, consultez Développement de l’interface. Incluez le fichier d’en-tête dans votre fichier de programme C du serveur. Compilez le stub du serveur avec les fichiers sources C qui composent votre application. Liez les fichiers d’objets résultants avec la bibliothèque d’importation. Ce processus est illustré dans le diagramme suivant.

processus de création d’un programme serveur pour une application distribuée

Comme vous pouvez le voir dans l’exemple de l’illustration, un fichier MIDL appelé MyApp.idl a été utilisé pour définir l’interface. Le compilateur MIDL a utilisé MyApp.idl pour produire MyApp_s.c et MyApp.h. Il produit également un fichier source C pour le stub client, mais cela n’est pas pertinent pour cette discussion particulière. Le fichier source C du programme serveur (dans ce cas, Mysrvr.c) doit inclure le fichier Myapp.h. Il devra également inclure les fichiers Rpc.h et Rpcndr.h.

L’application serveur a été développée dans deux fichiers, Mysrvr.c et Rprocs.c. Le fichier Mysrvr.c contient les fonctions nécessaires à l’exécution du programme serveur. Les procédures distantes proposées par le programme serveur sont contenues dans le fichier Rprocs.c.

Les fichiers Mysrvr.c et Rprocs.c ont été compilés avec Myapp_s.c pour produire des fichiers objet. Les fichiers objet ont ensuite été liés à la bibliothèque d’exécution RPC et à toutes les autres bibliothèques dont ils pourraient avoir besoin. Le résultat est un programme serveur exécutable nommé Mysrvr.exe.

Si vous ne compilez pas votre fichier IDL en mode de compatibilité Open Software Foundation (OSF) (/osf), votre programme serveur doit fournir une fonction pour allouer de la mémoire et une fonction pour la désallouer. Pour Windows 2000 et versions ultérieures de Windows, le mode recommandé est /Oicf. Pour plus d’informations, consultez Comment la mémoire est allouée et libérée, et Pointeurs et allocation de mémoire.