Consideraciones sobre la programación
En este tema se resume la información sobre el desarrollo de programas de transacciones (CSP) mediante APPC en sistemas operativos Windows:
Ordenación de bytes
Valores de constantes definidas en WINAPPC. H y WINCSV. H depende del orden de bytes del hardware utilizado. Las macros se usan para establecer las constantes en el valor correcto.
De forma predeterminada, se usa la ordenación de bytes little-endian de Intel, con el byte bajo de un valor de 16 bits seguido del byte alto. Sin embargo, al definir macros insertadas, la macro NON_INTEL_BYTE_ORDER que se usa en WINAPPC. H y WINCSV. H no invertirá (voltear) el orden de bytes de las constantes. Los parámetros de entrada no constantes de los bloques de control de verbos (VCB) (como longitudes, punteros, etc.) siempre están en el formato nativo.
Por ejemplo, el código de retorno principal de AP_PARAMETER_CHECK se define para tener un valor de 0x0001. Según el entorno (ordenación de bytes), la constante AP_PARAMETER_CHECK puede o no ser 0x0001. Algunos formatos definen el valor tal como aparece en la memoria; otros lo definen como una variable de 2 bytes. Dado que no se puede suponer que la aplicación siempre usa constantes proporcionadas en lugar de valores cableados, puede definir una macro para intercambiar los bytes. A continuación se muestra un ejemplo del uso 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' */
Eventos
Para recibir datos de forma asincrónica, se pasa un identificador de eventos en el campo semáforo del VCB. Este evento debe estar en el estado no asignado cuando se pasa a APPC y el identificador debe tener EVENT_MODIFY_STATE acceso al evento.
Nombres de biblioteca
Para admitir la coexistencia de bibliotecas de API win16 y Win32 en el mismo equipo, se han cambiado los nombres de dll de Win32.
Nombres de DLL antiguos | Nuevos nombres dll |
---|---|
WINAPPC.DLL | WAPPC32.DLL |
WINCSV.DLL | WINCSV32.DLL |
Los nuevos nombres dll deben usarse para las aplicaciones basadas en Win32 que están diseñadas para ejecutarse solo en Host Integration Server.
Límites
En el caso de los sistemas operativos Windows, el número de verbos de servicio común simultáneos (CSV) permitidos por proceso es 64. Solo uno de estos verbos por subproceso puede ser sincrónico (bloqueo).
Con APPC, el número máximo de conversaciones simultáneas por proceso es de 15 000. Cada proceso admite hasta 15 000 TP simultáneos.
Varios subprocesos
Un TP puede tener varios subprocesos que emiten verbos. Windows APPC hace provisiones para procesos basados en Windows multiproceso. Un proceso contiene uno o varios subprocesos de ejecución. Todas las referencias a subprocesos hacen referencia a subprocesos reales en los entornos multiproceso de Windows.
A excepción de RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT y MC_RECEIVE_AND_WAIT, solo un verbo de conversación puede estar pendiente en cualquier conversación; sin embargo, se pueden emitir otros verbos para otras conversaciones. Esta directriz también se aplica a los verbos y los TP. Aunque se pueden emitir varios verbos tp, solo un verbo TP puede estar pendiente a la vez en un TP. Esto se aplica a las aplicaciones multiproceso y a las aplicaciones de un solo subproceso que usan llamadas asincrónicas.
Embalaje
Para tener en cuenta el rendimiento, los VCB no están empaquetados. Los elementos miembro de la estructura VCB después del primer elemento se alinean en el tamaño del tipo de miembro o los límites DWORD (4 bytes), lo que sea menor. Como resultado, los DWORD se alinean en los límites de DWORD, los WORD se alinean en los límites de WORD y los BYTEs se alinean en los límites de BYTE. Esto significa, por ejemplo, que hay un intervalo de 2 bytes entre los códigos de retorno principal y secundario. Por lo tanto, solo se debe tener acceso a los elementos de un VCB mediante las estructuras proporcionadas.
Esta opción para la alineación de miembros de estructura y unión es el comportamiento predeterminado para los compiladores de Microsoft C/C++. Para la compatibilidad con las bibliotecas de aplicación de unidad lógica (LUA) proporcionadas, asegúrese de usar una opción de empaquetado de miembros de unión y estructura equivalentes al usar otros compiladores de C/C++ o al especificar explícitamente una opción de alineación de estructura al usar compiladores de Microsoft.
Registro y anulación del registro de aplicaciones
Todas las aplicaciones appC de Windows deben llamar a WinAPPCStartup al principio de la sesión para registrar la aplicación y WinAPPCCleanup al final de la sesión para anular el registro de la aplicación.
Todas las aplicaciones CSV de Windows deben llamar a la extensión de Windows SNA WinCSVStartup al principio de la sesión para registrar la aplicación y WinCSVCleanup para anular el registro de la aplicación cuando finalice la sesión.
Vinculación en tiempo de ejecución
Para que un TP se vincule dinámicamente a APPC en tiempo de ejecución, el TP debe emitir las siguientes llamadas:
LoadLibrary para cargar las bibliotecas de vínculos dinámicos WINAPPC.DLL o WAPPC32.DLL.
GetProcAddress para especificar APPC en todos los puntos de entrada deseados en el archivo DLL, como APPC, WinAsyncAPPC, WinAPPCStartup y WinAPPCCleanup.
Para que un TP se vincule dinámicamente a CSV en tiempo de ejecución, el TP debe emitir las siguientes llamadas:
LoadLibrary para cargar WINCSV.DLL o WINCSV32.DLL, las bibliotecas de vínculos dinámicos para CSV de Windows.
GetProcAddress para especificar CSV en todos los puntos de entrada deseados al archivo DLL, como ACSSVC, WinAsyncCSV, WinCSVStartup y WinCSVCleanup.
El TP debe emitir la llamada a FreeLibrary cuando la biblioteca APPC o CSV ya no es necesaria.
Rendimiento en otros componentes
Dado que los entornos de Windows son multiproceso, no es necesario producir ningún otro componente.