Verwenden einer persistenten Verbindung mit Host-Initiated Verarbeitung
Eine dauerhafte Verbindung ist eine Verbindung, die über die Dauer eines bestimmten Anrufs hinweg geöffnet bleibt. Da Ihre Anwendung die Verbindung nicht bei jedem Aufruf erneut erstellen muss, können Sie eine persistente Verbindung verwenden, um die Effizienz Ihrer vom Host initiierten Anwendung zu erhöhen. Eine Anwendung, die eine persistente Verbindung mit vom Host initiierter Verarbeitung (HIP) verwendet, funktioniert auf viele Arten wie eine Windows-Initiated Processing (WIP). Der Unterschied besteht natürlich darin, dass der Mainframe die Verbindung initiiert und beendet, während die Windows-Anwendung auf die Anforderungen des Mainframes antwortet.
Hinweis
Host Integration Server unterstützt viele der gleichen Programmierumgebungen für HIP wie für WIP. Ausnahmen sind IMS Connect, Distributed Program Call (DPC) und SNALink, die für persistente HIP-Verbindungen nicht unterstützt werden.
Verwenden einer persistenten Verbindung mit HIP
Erhalten Sie einen Anruf mit Ihrer Windows-Anwendung vom Mainframe, der angibt, dass eine Verbindung hergestellt wurde.
Es liegt in der Verantwortung der Mainframeanwendung, die persistente Verbindung anzufordern.
Lassen Sie Ihre Windows-Anwendung in relevanter Weise auf die Anforderung reagieren.
Es gibt nichts Spezifisches, das Ihre Anwendung tun muss, um eine dauerhafte Verbindung zu verwenden: Das Erstellen und Beenden der Verbindung liegt in der Verantwortung der Mainframeanwendung.
Optional können Sie eine neue instance des HIPServerUserContext erstellen, um die status der Verbindung abzufragen.
Der neue instance wird automatisch mit den Kontextinformationen für die jeweilige Verbindung erstellt. Mithilfe von HIPServerUserConext können Sie bestimmen, welche Art von Verbindung der Mainframe erstellt hat, und entsprechend reagieren.
Beispiel
Der folgende Code wird aus der CICS-Beispielanwendung im SDK abgerufen. Im Beispiel wird der CONNTYPE des Serverobjekts verwendet, um verschiedene Aktionen auszuführen.
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;
}
Im Codebeispiel wird eine globale Variable zum Speichern von Informationen verwendet. Es ist auch möglich, das Kontextobjekt selbst zum Speichern von Informationen zu verwenden. Obwohl hier nicht dargestellt, ist es möglich, das Kontextobjekt zu verwenden, um Informationen an die Windows-Anwendung zurück zu übergeben.