Mit AVR ins Web Zusatzinformationen

10. März 2007 | Von | Kategorie: Programmierung

„Der nachfolgende Beitrag stellt eine Ergänzung zu dem Artikel „Mit AVR ins Web“ aus der NEWSolutions Ausgabe 9/10 S.14 dar, und bietet Ihnen technische Informationen“ … Mit Visual RPG (AVR) von ASNA und den neuen ActiveX und COM Funktionen können sowohl herkömmliche als auch Web-basierte Lösungen mit RPG entwickelt werden. AVR 3.0 ist eng gekoppelt mit den Web-Serving Komponenten des Microsoft NT Servers, …

au2_look_IMG_0030_Z_nf_oZusatzinformationen

Der nachfolgende Beitrag stellt eine Ergänzung zu dem Artikel „Mit AVR ins Web“ aus der NEWSolutions Ausgabe 9/10 S.14 dar, und bietet Ihnen technische Informationen“

Mit Visual RPG (AVR) von ASNA und den neuen ActiveX und COM Funktionen können sowohl herkömmliche als auch Web-basierte Lösungen mit RPG entwickelt werden. AVR 3.0 ist eng gekoppelt mit den Web-Serving Komponenten des Microsoft NT Servers, dem Internet Information Server (IIS). IIS ist kostenlos im NT 4 Option Pack 4.0 integriert und stellt die Microsoft-Technologie Active Server Pages (ASP) zur Verfügung. ASP in Verbindung mit AVR 3.0 ermöglicht die Entwicklung hoch skalierbarer, performanter Web Sites auf NT, die AS/400 Daten übertragen und sammeln.

ASP 101

Bevor wir uns genauer ansehen, wie AVR und ASP beim Erstellen von AS/400-Web Sites zusammenspielen, wollen wir kurz auf Microsofts ASP-Technologie eingehen. Zum Erstellen von ASP-Host Web Sites mit NT Server verwendet man HTML-Seiten mit eingebetteten Scripts. Diese Scripts geben nach der Verarbeitung durch die ASP-Engine des NT-Servers HTML an den Browser zurück (Abbildung 1). ASP-Scripts sind an der Dateierweiterung „ASP“ erkennbar.

Die Script-Abschnitte einer Seite sind durch die Trennzeichen „<%“ und „%>“ begrenzt. Wenn die ASP-Engine ein ASP-Script empfängt, durchsucht sie es und löst alle markierten Script-Abschnitte in HTML auf. Das HTML-Script in Abbildung 2a wird z.B. in die in Abbildung 2b dargestellten HTML-Anweisungen aufgelöst und an den Browser übergeben. Da das ASP-Script auf der Server-Seite interpretiert wird (im Gegensatz zu den Client-seitigen Scripts in Jscript oder VBScript), werden Seiten mit ASP in Standard-HTML aufgelöst, das mit jedem Standard-Browser angezeigt werden kann. ASP-Scripts können, anders als das in Abbildung 2a gezeigte Beispiel, recht komplex werden. Sie können mit For-Logik, Do-Schleifen und anderen gängigen Programmier-Konstrukten zu anspruchsvollen Web-Seiten werden. ASP verfügt auch über eingebaute Funktionen wie z.B. die Funktion time(), die in Abbildung 2a zur Ermittlung der aktuellen Zeit auf dem Server verwendet wird.

ASP baut auf einem Programmiermodell mit sechs eingebauten Objekten auf. Diese Objekte haben Ereignisse, Methoden und Eigenschaften wie andere Objekte, die Sie vielleicht schon kennen (z.B. ActiveX-Controls). Die sechs Objekte im Überblick:

  • Application steht für die gesamte ASP-Anwendung. Es gibt ein Application-Objekt für alle Benutzer der ASP-Anwendung. Dieses Objekt wird für globale Start- und Beendigungs-Routinen verwendet (z.B. Initialisieren von globalen Variablen).
  • Server liefert den Zugriff zum Web-Server auf dem NT-Server. Hier können globale Konfigurationsdaten bearbeitet werden, wie z.B. Time-Out-Werte für Scripts. Die wichtigste Aufgabe des Server-Objekts ist aber wahrscheinlich das Instantiieren von benutzerdefinierten Objekten, wie z.B. den mit AVR erstellten Objekten.
  • Request übergibt die HTTP-Anfrage des Clients an Ihre ASP-Anwendung. Dieses Objekt repräsentiert also die Benutzereingaben.
  • Response stellt die HTTP-Ausgabe des Servers an den Browser dar. Das einfache Beispielscript in Abbildung 2a verwendet die Methode Write dieses Objekts zur Ausgabe einer Textzeile auf dem Browser.
  • Session bietet den Zugriff auf alle Daten, die speziell ASP-Anwendungssitzung eines bestimmten Benutzers gehören.
  • ObjectContext (eigentlich ein Objekt des MS Transaction Servers) ist auch im NT-Server Option Pack 4.0 enthalten und bietet Transaktions-Unterstützung (vor allem Commit-Steuerung und Rollback) für ASP-Anwendungen.

Eine detailliertere Darstellung dieser Objekte würde den Umfang dieses Artikels sprengen, aber am Ende des Artikels finden Sie Hinweise auf weiterführende Informationen zum Verständnis und zur Programmierung von ASP-Objekten. Mit Grundkenntnissen über die sechs ASP-Objekte, AVR und mit Programmiererfahrung in RPG sind ASP-Webseiten sehr einfach zu erstellen.

Arbeiten mit AS/400-Daten

Nachdem Sie sich das grundlegende Konzept von Asp einverleibt haben, ist es leicht zu verstehen, wie AVR AS/400-Daten (oder jede andere, von AVR unterstützte Acceler8DB-Datenbank) mit dem Web verbindet. Der allgemeine Datenfluß ist in Abbildung 3 dargestellt. Der Ablauf ähnelt dem einfacheren, in Abbildung 1 dargestellten, aber zusätzlich sehen Sie, wie AVR mit Hilfe von ASP AS/400-Daten in die gewünschte Web-Anzeige integriert. Der größte Unterschied ist, daß das Script in Abbildung 3 ein benutzerdefiniertes COM-Objekt auf dem NT-Server anspricht, um AS/400-Daten zu lesen und gegebenenfalls auch zu schreiben.

Ein sehr einfaches Beispiel für ein derartiges Script ist in Abbildung 4a zu sehen. Dieses ASP-Script verwendet die Methode CreateObject des Server-Objekts zum Erzeugen einer Instanz des Objekts SwapMeet.Booth, eines mit AVR geschriebenen COM-Objekts. Nach dem Instantiieren des SwapMeet.Booth-Objekts (mit Fehlerprüfung und gegebenenfalls Ausgabe einer Fehler-Seite bei Instantiierungsfehlern) ruft das ASP-Objekt dessen Methode ListArticles auf, um eine Tabelle mit AS/400-Daten auf der Web-Seite anzuzeigen. Das klingt recht anspruchsvoll, bedeutet aber lediglich, daß die Active Server Page eine Instanz eines AVR-Programms erstellt und eine Subroutine namens ListArticles in diesem RPG-Programm aufruft. ListArticles liest eine AS/400-Datei und generiert die HTML-Ausgabe.

<HTML>
<HEAD>
<TITLE>Example</TITLE>
</HEAD>
<BODY>
<TR>
<TD> <!-Create a Booth class object –>
<% Set Booth = Server.CreateObject(„SwapMeet.Booth“)
if( Not isObject( Booth ))
then Response.redirect („CreateObjectError.asp“)
end if Booth.ListArticles%>
</TD>
</TR>
</BODY>< BR > </HTML>

Ein Teil dieses RPG-Programms, das das COM-Objekt SwapMeet.Booth erzeugte, ist in Abbildung 4B dargestellt. (Das Programm ist in AVRs eingerückter Syntax mit der Bezeichnung Caviar geschrieben, könnte aber genauso in normalem, spaltenorientiertem RPG geschrieben werden.) In Abbildung 4B sehen Sie die F-Spezifikationen für die beiden verwendeten Eingabedateien und einige Felddeklarationen, die ein ObjectContext-Objekt für den Transaction Server und ein ASP Response-Objekt definieren. Der Code in der Subroutine ListArticles sieht auf den ersten Blick vielleicht etwas fremdartig aus, aber bei genauerer Betrachtung erkennt man, daß es sich um eine einfache Leseschleife über die Tabelle Articles handelt. Für jeden Satz in der Tabelle Articles wird mit der Write-Methode eine HTML-Tabellenzeile in das Response-Objekt geschrieben. Wie Sie sehen können, bedeuten die Anforderungen an grundlegende HTML-Kenntnisse vielleicht mehr Aufwand für Sie als die Beschäftigung mit der ASP- und COM-Architektur. Trotzdem werden Sie überrascht sein, wie wenig HTML sie kennen müssen, um ansprechende Web-Seiten zu erstellen.

Die zweite Response.Write-Anweisung nach der DoWhile-Anweisung ist besonders interessant. Diese Anweisung erzeugt einen Link, indem Sie den Text „Bids.asp?ArticleID=“ und die String-Darstellung der Artikelnummer zusammenfügt. Dieser Link zeigt die Web-Seite mit der genaueren Beschreibung des entsprechenden Artikels an.

FArticles            I         E         K          DISK                UC
F                                        KDBDESC    ‚AsnaProduction‘
F                                        KFILEDESC  ‚BidOnFlea/ArticleBids‘
DclFld Context Type(MTxAS.ObjectContext)
DclFld Response Type(ASPTypeLibrary.Response)
//—————————————
// List all articles for sale
//—————————————
BegSR ListArticles Scope( *PUBLIC )
Response = Context.Item[ „Response“ ]< BR >
Response.Write(„<CENTER>“)
Response.Write(„<TABLE “ + TableAttr + „>“)
Response.Write(„<TR “ + HeaderAttr + „>“)
Response.Write(„<TH>Article</TH>“)
Response.Write(„<TH>Starting<br>Bid</TH>“)
Response.Write(„<TH>Highest<br>Bid</TH>“)
Response.Write(„<TH>Closing<br>Date</TH></TR>“)

Read Articles Eof( Finished )
DoWhile Not Finished
Response.Write(‚<TR>‘)
Response.Write(‚<TD><AHREF=“Bids.asp?ArticleId= ‚ + Str(ArticleID) + ‚“
frmEdit.BidAmount = StartingBid
Response.Write(„<TDalign= right>“ + frmEdit.BidAmount.Text + „</TD>“)
If ( HighestBid= 0 )
Response.Write(„<TD align= right>None</TD>“)
Else
frmEdit.BidAmount= BidOffer
Response.Write(„<TD align=right>“ + frmEdit.BidAmount.Text + „</TD>“
EndIf
Response.Write(„<TD align=right nowrap><small>“ + IsoToStr(ClosingDate)
Response.Write(„</TR>“)

Read Articles Eof( Finished )
If Not Finished
Response.Write(‚<tr><td colspan=“4″><hr></td></tr>‘)
EndIf< BR>      EndDo< BR>      Response.Write(„</TABLE></CENTER>“)< BR> EndSR

 

Abbildung 5 zeigt ein Beispiel für eine Web-Seite, die eine Routine wie ListArticles verwendet, um eine Tabelle mit Artikeln für eine Auktions-Web-Site zu erzeugen. In der ersten Spalte der Tabelle können Sie die generierten Links sehen. Da ASP-Sites zu 100 Prozent aus HTML bestehen, können Sie alle HTML-Tricks ausreizen, um beeindruckende Web-Sites zu erzeugen.

Oberflächlich gestreift

Dieser Artikel gibt nur einen oberflächlichen Eindruck davon, wie Sie mit ASNAs Visual RPG 3.0 die aufregende Welt der Active Server Pages nutzen können. ListArticles ist eine reine Ausgaberoutine, aber mit den anderen ASP-Objekten können Sie auch Ein- und Ausgabe-Web-Seiten erstellen, die Daten nicht nur an Benutzer verteilen, sondern auch abholen. Ein komplettes Beispiel für eine fiktive, aber voll funktionsfähige Auktions-Web-Site, das mit AVR erstellt wurde, finden Sie unter http://demo-bid.asna.com. Lassen Sie Ihre besten Programmierer damit herumspielen und fragen Sie sie, ob sie erraten würden, daß alles mit RPG gemacht wurde! Homepage ASNA: http://www.asna.com. Informationen zu IIS unter http://search.microsoft.com/us/dev/default.asp.

ASNA, Inc.-USA 14855 Blanco Rd.
Suite 306
San Antonio, Texas 78216
800-289-2762
210-408-0212
210-408-0211 Fax
ASNA Ltd.-UK 31 Frederick Sanger Rd.
Surrey Research Park
Guildford, Surrey GU2 5YD
Englandv
+44 1483 570666
+44 1483 578191 Fax

 

Schlagworte: , , , , , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.