共用方式為


程式設計考量

本主題摘要說明在 Windows 作業系統上使用 APPC (TP) 開發交易程式的相關資訊:

位元組排序
WINAPPC 中定義的常數值。H 和 WINCSV。H 相依于所使用硬體的位元組順序。 宏可用來將常數設定為正確的值。

根據預設,會使用 Intel 小端位元組順序,後面接著高位元組的低位元組 16 位值。 不過,定義內嵌宏時,NON_INTEL_BYTE_ORDER WINAPPC 中使用的宏。H 和 WINCSV。H 不會反轉 () 常數的位元組順序。 動詞控制項區塊中的非常數輸入參數 (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

新的 DLL 名稱應該用於僅要在主機整合伺服器上執行的 Win32 型應用程式。

限制
針對 Windows 作業系統,每個進程允許的同時一般服務動詞 (CSV) 數目為 64。 每個執行緒只有其中一個動詞可以同步 (封鎖) 。

使用 APPC 時,每個進程同時交談的最大數目是 15,000。 每個進程最多可支援 15,000 個同時 TP。

多個執行緒
TP 可以有多個發出動詞的執行緒。 Windows APPC 會針對多執行緒的 Windows 進程進行布建。 進程包含一或多個執行的執行緒。 執行緒的所有參考都會參考多執行緒 Windows 環境中的實際執行緒。

除了 RECEIVE_AND_POSTMC_RECEIVE_AND_POSTRECEIVE_AND_WAITMC_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 ,才能註冊應用程式, 並在 會話完成時取消註冊應用程式。

執行時間連結
若要讓 TP 在執行時間動態連結至 APPC,TP 必須發出下列呼叫:

  • LoadLibrary 可載入動態連結程式庫 WINAPPC.DLL 或 WAPPC32.DLL。

  • GetProcAddress 在 DLL 的所有所需進入點上指定 APPC,例如 APPCWinAsyncAPPCWinAPPCStartupWinAPPCCleanup

    若要讓 TP 在執行時間動態連結至 CSV,TP 必須發出下列呼叫:

  • LoadLibrary 以載入 windows CSV 的動態連結程式庫 WINCSV.DLL 或 WINCSV32.DLL。

  • GetProcAddress 可指定所有所需進入點的 CSV,例如 ACSSVCWinAsyncCSVWinCSVStartupWinCSVCleanup

    當不再需要 APPC 或 CSV 程式庫時,TP 必須發出 FreeLibrary 呼叫。

    產生給其他元件
    因為 Windows 環境是多執行緒的,所以不需要產生其他元件。