이 항목에서는 Windows 운영 체제에서 APPC를 사용하여 TP(트랜잭션 프로그램) 개발에 대한 정보를 요약합니다.
바이트 순서 지정
반응: WINAPPC.H 및 WINCSV.H에 정의된 상수의 값은 사용되는 하드웨어의 바이트 순서에 따라 달라집니다. 매크로는 상수 값을 올바른 값으로 설정하는 데 사용됩니다.
기본적으로 Intel little-endian 바이트 순서는 16비트 값의 낮은 바이트와 높은 바이트 순으로 사용됩니다. 인라인 매크로를 정의할 때 WINAPPC.H 및 WINCSV.H에서 사용되는 NON_INTEL_BYTE_ORDER 매크로는 상수의 바이트 순서를 뒤집지 않습니다. 동사 제어 블록(VCB)의 비 상수 입력 매개 변수(예: 길이, 포인터 등)는 항상 네이티브 형식입니다.
예를 들어 AP_PARAMETER_CHECK 기본 반환 코드는 0x0001 값을 가지도록 정의됩니다. 환경(바이트 순서)에 따라 상수 AP_PARAMETER_CHECK 0x0001 수 있거나 그렇지 않을 수 있습니다. 일부 형식은 메모리에 표시되는 값을 정의합니다. 다른 사용자는 2 바이트 변수로 정의합니다. 애플리케이션에서 항상 하드 연결 값이 아닌 제공된 상수로 사용한다고 가정할 수 없으므로 바이트를 교환하는 매크로를 정의할 수 있습니다. 다음은 매크로를 사용하는 예제입니다.
/* 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' */
이벤트
데이터를 비동기적으로 수신하기 위해 이벤트 핸들이 VCB의 세마포 필드에 전달됩니다. 이 이벤트는 APPC에 전달될 때 신호가 없는 상태여야 하며, 이벤트에 대해 EVENT_MODIFY_STATE 액세스 권한이 핸들에 있어야 합니다.
라이브러리 이름
동일한 컴퓨터에서 Win16 및 Win32 API 라이브러리의 공존을 지원하기 위해 Win32 DLL 이름이 변경되었습니다.
| 이전 DLL 이름 | 새 DLL 이름 |
|---|---|
| WINAPPC.DLL | WAPPC32.DLL |
| WINCSV.DLL | WINCSV32.DLL |
호스트 통합 서버에서만 실행하려는 Win32 기반 애플리케이션에 새 DLL 이름을 사용해야 합니다.
제한
Windows 운영 체제의 경우 프로세스당 허용되는 동시 CSV(공용 서비스 동사)의 수는 64개입니다. 스레드당 이러한 동사 중 하나만 동기(차단)할 수 있습니다.
APPC를 사용하면 프로세스당 최대 동시 대화 수는 15,000개입니다. 각 프로세스는 최대 15,000개의 동시 TP를 지원합니다.
여러 스레드
TP에는 동사를 발급하는 여러 스레드가 있을 수 있습니다. Windows APPC는 다중 스레드 Windows 기반 프로세스에 대한 프로비저닝을 만듭니다. 프로세스에는 하나 이상의 실행 스레드가 포함됩니다. 스레드에 대한 모든 참조는 다중 스레드 Windows 환경의 실제 스레드를 참조합니다.
RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT 및 MC_RECEIVE_AND_WAIT를 제외하면, 하나의 대화에서는 한 번에 하나의 대화 동사만 활성 상태가 될 수 있습니다. 그러나 다른 대화에서는 다른 동사를 사용할 수 있습니다. 이 지침은 TP 동사 및 TP에도 적용됩니다. 여러 TP 동사를 실행할 수 있지만 TP에서 한 번에 하나의 TP 동사만 처리할 수 있습니다. 이는 비동기 호출을 사용하는 다중 스레드 애플리케이션 및 단일 스레드 애플리케이션 모두에 적용됩니다.
포장
성능 고려 사항의 경우 VCB는 압축되지 않습니다. 첫 번째 요소 뒤의 VCB 구조체 멤버 요소는 멤버 형식 또는 DWORD(4바이트) 경계의 크기 중 더 작은 값에 맞춰 정렬됩니다. 결과적으로 DWORD는 DWORD 경계에 맞춰지고, WORD는 WORD 경계에 맞춰지며, BYTE는 BYTE 경계에 맞춰집니다. 예를 들어 기본 반환 코드와 보조 반환 코드 사이에 2 바이트 간격이 있음을 의미합니다. 따라서 VCB의 요소는 제공된 구조를 사용하여 액세스해야 합니다.
구조체 및 공용 구조체 멤버 맞춤에 대한 이 옵션은 Microsoft C/C++ 컴파일러의 기본 동작입니다. 제공된 LUA(논리 단위 애플리케이션) 라이브러리와의 호환성을 위해 다른 C/C++ 컴파일러를 사용하거나 Microsoft 컴파일러를 사용할 때 구조체 맞춤 옵션을 명시적으로 지정할 때 동등한 구조체 및 공용 구조체 멤버 압축 옵션을 사용해야 합니다.
애플리케이션 등록 및 등록 취소
모든 Windows APPC 애플리케이션은 세션 시작 시 WinAPPCStartup 을 호출하여 애플리케이션을 등록하고 세션이 끝날 때 WinAPPCCleanup 을 호출하여 애플리케이션 등록을 취소해야 합니다.
모든 Windows CSV 애플리케이션은 세션 시작 부분에서 Windows SNA 확장 WinCSVStartup 을 호출하여 애플리케이션을 등록하고 WinCSVCleanup 을 호출하여 세션이 완료되면 애플리케이션 등록을 취소해야 합니다.
런타임 연결
런타임에 TP가 APPC에 동적으로 연결되려면 TP에서 다음 호출을 실행해야 합니다.
LoadLibrary 함수를 사용하여 WINAPPC.DLL 또는 WAPPC32.DLL 동적 연결 라이브러리를 로드합니다.
APPC, WinAsyncAPPC, WinAPPCStartup 및 WinAPPCCleanup과 같은 DLL에 원하는 모든 진입점에 APPC를 지정하는 GetProcAddress입니다.
런타임에 TP가 CSV에 동적으로 연결되려면 TP에서 다음 호출을 실행해야 합니다.
Windows CSV용 동적 연결 라이브러리인 WINCSV.DLL 또는 WINCSV32.DLL 로드하기 위한 LoadLibrary입니다.
GETProcAddress는 ACSSVC, WinAsyncCSV, WinCSVStartup 및 WinCSVCleanup과 같은 DLL에 원하는 모든 진입점에 CSV를 지정합니다.
APPC 또는 CSV 라이브러리가 더 이상 필요하지 않은 경우 TP는 FreeLibrary 호출을 실행해야 합니다.
다른 구성 요소에 대한 양보
Windows 환경은 다중 스레드이므로 다른 구성 요소에 양보할 필요가 없습니다.