如何搭配 Host-Initiated 處理使用持續性連線
持續性連線是一種連線,會保持開啟超過特定呼叫的持續時間。 因為您的應用程式不需要在每個呼叫上重新建立連線,所以您可以使用持續性連線來提升主機起始應用程式的效率。 使用與主機起始處理 (HIP) 持續連線的應用程式,其運作方式與 Windows-Initiated 處理 (WIP) 相同。 當然,差別在於大型主機會起始和終止連線,而 Windows 應用程式則會回應大型主機的要求。
注意
主機整合伺服器支援與 WIP 相同的許多 HIP 程式設計環境。 例外狀況包括 IMS Connect、分散式程式呼叫 (DPC) ,以及 HIP 持續性連線不支援的 SNALink。
搭配 HIP 使用持續性連線
從大型主機接收與 Windows 應用程式的呼叫,指出已建立連線。
大型主機應用程式必須負責要求持續性連線。
讓您的 Windows 應用程式以相關方式回應要求。
您的應用程式不需要執行任何特定動作,才能使用持續性連線:建立和終止連線是大型主機應用程式的責任。
您可以選擇性地建立 HIPServerUserCoNtext 的新實例,以查詢連線的狀態。
系統會使用相關連線的內容資訊自動建立新的實例。 使用 HIPServerUserConext,您可以判斷大型主機已建立的連線類型,並據以回應。
範例
下列程式碼是從 SDK 中的 CICS 範例應用程式提取。 此範例會使用伺服器物件的 CONNTYPE 來執行不同的動作。
decimal GetAccountBalance(object[] contextArray)
{
decimal ReturnBalance = 0.0m;
string ConnType;
object contextValue;
_TIServerContext.ReadContext("CONNTYPE", out contextValue, ref contextArray);
if (contextValue == null)
ReturnBalance = 123.45m;
else
{
ConnType = contextValue.ToString();
ConnType.ToUpper();
switch (ConnType)
{
case "OPEN":
// Set the initial value of the Account Balance
// and save it in a global varaible and return it.
ReturnBalance = 123.45m;
_AccountBalance = ReturnBalance;
break;
case "USE":
// Increase the value of the global Account Balance
// varaible and return its value. Save this new value
// in the global variable for later use
_AccountBalance += 100;
ReturnBalance = _AccountBalance;
break;
case "CLOSE":
// Increase the value of the global Account Balance
// variable and return the new value. Set the global variable
// to zero because the "CLOSE" call indicates that we are
// done with it.
ReturnBalance = _AccountBalance + 150;
_AccountBalance = 0.0m;
break;
case "UNKNOWN":
default:
_AccountBalance = 0.0m;
ReturnBalance = 123.45m;
break;
}
}
return ReturnBalance;
}
程式碼範例會使用全域變數來儲存資訊。 您也可以使用內容物件本身來儲存資訊。 雖然這裡未顯示,但可以使用內容物件將資訊傳回 Windows 應用程式。