Praktikum 27th Juni 2003

Werbung
Praktikum 27. Juni 2003
Projekt
Einführung
• Das Praktikum endet mit einem Projekt:
• Erstellt einen Kneipenführer!
• Am Ende wird der Kneipenführer vielleicht für das
NUKATH-Projekt benutzt werden.
• 1. Schema Definition
• 2. PocketPC Anwendung
• 3. Web Service für Daten-Upload
• 4. Zusammentragen der Daten
• 5. Kneipenführer Web-Seite (benutzt Web Services)
• 6. Falls ihr Zeit habt: …
Timeline
Heute: erste Treffen
Nächste Freitag: PDAAnwendung und DatenUpload Web Service
fertig gestellt
Zusammentragen der
Daten vollständig (11 Juli)
PDAs Zurückgeben
Letzte Treffen (25 Juli)
Das Szenario
Mobile Db Gruppe 1
Datenbank
Mobile Db Gruppe 2
Kneipenführer
Web service
Mobile Db Gruppe 3
SOAP
Mobile Db
Gruppe 4
Web
Sites
HTTP
POST
Schema
• Wir brauchen ein XML-Schema
• z.B. Name der Kneipe, Adresse,
Bierangebot (alkoholfreie Biere,
Weizenbier, belgische Biere), Musik,
Atmosphäre, Telefonnummer, UID
(Eindeutige Identifikator)...
• Stadtplan?
• Landmarke?
Compaq iPAQ
PocketPC
StrongARM/XScale, MIPS, oder SH3
Prozessor
iPAQ StrongArm >200MHz
240 x 320 LCD Bildschirm
32 – 64 Mb Speicher (RAM)
16 Mb flüchtiger Speicher (Flash ROM)
Web Server Installation
• Es gibt mehrere Web Server für den
Pocket PC, z.b. Apache und IIS + ASP
(kommt mit Microsoft SQL Dashboard)
• Wir benutzen IIS
• Heute existiert außerdem IIS.Net für
Pocket PC, unter anderem – aber die
Installation ist kompliziert und es ist nichts
vorkompiliert...
Forts. Installation
•
•
•
•
•
•
•
•
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=AD37ACEA8020-45E4-9489-270C1E638759 – SQL Dashboard
http://www.angers.ensam.fr/wce/_0_site_web_2001/site_anglais/travail_angers/serveur_we
b.htm - Installation HOWTO
http://members.cox.net/nnsysdev/ppcwebserver.htm - Installation HOWTO
„Weicher“ Neustart (Soft Reset):
zum Neustart des Pocket PC drücken Sie mit dem Stift die Soft-Reset-Taste
„Harter“ Neustart (Hard Reset):
Zum „harten“ Neustart drücken Sie die Soft-Reset-Taste + Sync-Taste+ Kalender-Taste und
warten Sie 5 Sek.
ALLE DATEIEN WERDEN GELÖSCHT
Die VBScript Programmiersprache
• Alt, unkompliziert, unvollständig
• Keine objekte, dynamische Arrays, usw.
• Einführung:
• Hello.asp
<HTML><% @ LANGUAGE=“VBScript“%>
<BODY>
<H2><% Response.Write “Hello World“ %></H2>
</BODY>
</HTML>
Beispiele
• Kommentare:
C# // Hier ist ein Kommentar
VB REM Hier ist ein Kommentar
• Variablen definieren
C# string Mystring
VB Dim Mystring
rem Dieses VBscript ist ‚weakly typed‘!
• Escaping anführungszeichen
C# Mystring=“I am a \“string\“ with quotes“
VB Mystring=“I am a ““string““ with quotes“
• Variablen ausdrucken
C#
VB
Console.Write(“Variable=“+Mystring)
Response.Write “Variable=“ & Mystring
Resultat: Variable=I am a “string“ with quotes
Vergleiche, Operatoren
C#
VBScript
If (variable==null) { ...}
==
>
<
!=
>=
<=
If Variable is Nothing Then...
=
>
<
<>
>=
<=
Iteration - Beispiele
For i=0 to 20 step +2
Response.Write i&“<br>“
Next
While i<10
i=i+1
Wend
Dim myArray(10)
Dim i
For i=0 to 9 step +1
myArray(i)=10-i
Response.Write i&“<br>“
Next
Do while not i>10
i=i+1
If i=5 Then
Exit Do
End If
Loop
Prozeduren
C#
void myFunction(){
VBScript
Sub myFunction()
}
End Sub
int myFunction(){
// oder anderen Typ
return int_value
}
Function myFunction()
...
myFunction=returnvalue
End Function
Try/Catch
// C#
try {
// Code hier einsetzen...
} catch {
//error=true
}
If(!error){
// No error occurred
}
REM VBScript
Dim wErr
On Error Resume Next
Rem Put code here
wErr= Err.Number
On Error Goto 0
If wErr <> 0 Then
Rem No error occurred
End If
String manipulation
Dim mystring=“Hello world“
mystring2=Replace(mystring,“world“,“Karlsruhe“)
mylength=Len(mystring)
mystring2=Left(mystring,5)
mystring2=Right(mystring,5)
rem mystring definieren
rem mystring2 ist “Hello Karlsruhe“
rem die Lange von String bestimmen
rem mystring2 ist jetzt “Hello“
rem mystring2 ist jetzt “world“
Die Mid() Funktion ist nicht verfügbar in dieser Ausführung – benutze Left(Right, ), )
Chr(eine_Zahl) liefert den Buchstaben, der mit ‚eine_Zahl‘ übereinstimmt
Char(Buchstabe) liefert den character code des Buchstaben in der Funktion
Es gibt verschiedene VBScript String-Konstanten:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsconvbscript.asp
HTTP Get/Post
• Um Variablen von der HTTP Get Methode
abzurufen:
Request.Querystring(“variableName“)
• Um Variablen von der HTTP Post Methode
abzurufen :
Request.Form( “variableName“)
Diejenigen, die VBScript kennen, könnten die Idee
haben, die ‚For Each Field In Request.Form‘
Methode anzuwenden. Diese Methode ist aber
nicht in diese ASP-Programm definiert!
Datenbank-Zugang
• Ein verfügbares Objekt ist das ADOCE Recordset
Dim dbObject=CreateObject(“ADOCE.RecordSet.3.0“)
• Nutzliche Funktionen:
– dbObject.Open “dbname“, , 2, 3
– dbObject.MoveFirst rem zum Beginn des Recordsets springen
– dbObject.MoveNext rem springt zum nächsten Eintrag (EOF wird angezeigt,
wenn es sich um den letzten Eintrag handelt)
– dbObject.Close
rem das Recordset schließen
– dbObject.AddNew
rem neuer Eintrag
– dbObject.Fields(“ColumnName“)=“Value“
– dbObject.Update
rem Recordset aktualisieren
Beispiele
Do While Not dbObject.EOF
Response.Write dbObject(0).Name & “ “_
& dbObject(0).Value
Response.Write “<BR>“
dbObject.MoveNext
Loop
Forts. Datenbank, SQL
• Um das Recordset zu laden oder zu benutzen,muß man
mit der Db mit SQL kommunizieren
• Hier sind einige Beispiele:
– Löschen
• SQLquery=“Delete from tablename where columnname=“&value
– Eine Tabelle kreieren
• SQLquery=“Create table tablename (Id INT, pubname Text)“
– Nach Einträgen suchen
• SQLquery=“Select * from tablename“ [sort by column]
– Nach einem bestimmten Eintrag suchen
• SQLquery=“Select * from tablename where column=“&uniquevalue
– Sortieren: ADO besitzt normalerweise eine Sortier-Option, dieser
ist aber in diesem ASP-Programm nicht verfügbar. Stattdessen
benutze ‚sort by column‘ bei der ‚select‘ Abfrage.
CreateObject & andere Funktionen
• Generell ist VB/ASP weniger limitiert
• Weil sehr wenige Funktionen in diesem ASP Programm
verfügbar sind, ist man gezwungen mit wenig Mitteln viel
zu machen.
• Versucht nicht die Grenzen des ASP Programmes zu
finden – es sind genug Angaben gemacht um die
erforderlichen Resultate zu erzielen.
• Es gibt ein komplettes, funktionstüchtiges Beispiel auf
der Praktikums-Seite. SCHREIBT ES NICHT EINFACH
NUR AB! Es benutzt CSV für die interne
Datenspeicherung und ist einerseits falsch, und
andererseits sofort zu erkennen ;-)
Notwendige Scripts
1.
Kneipen-Info-Tabelle
Dieses Script versucht, beim Laden die Tabelle zu kreieren.
Sowohl die erfolgreiche Durchführung als auch jegliche Fehler,
die auftreten, sollen angezeigt werden.
2.
HTTP Post ‚neuer Eintrag‘ Formular
Dieses Formular sollte die Kneipen-Informationen zu dem ...
Script senden (3). Fals genügend Zeit bleibt, versucht, das
Script so zu designen, dass man es außerdem zum Editieren
von bereits existierenden Einträgen benutzen kann...
3.
Script für Einträge/ Updates
Akzeptiert Daten von Formular (2). Öffnet die Verbindung zur
Datenbank. Generiert eine “unique ID“. Fügt eine „Gruppe ID“
hinzu. Löscht verbotene Zeichen, falls vorhanden, im input.
Fügt Werte zur Datenbank hinzu, mit der generierten “unique
ID“. (Andernfalls, wenn es sich um ein Update handelt, löscht
es den Original-Eintrag, um ihn danach als neuen Eintrag mit
der selben “unique ID“ wieder einzufügen.)
Forts. Scripts
4.
5.
6.
7.
Löschen von einem Eintrag
Benutzt HTTP Get, um die “Unique ID“ zu lesen, um danach den
korrespondierenden Eintrag mit SQL Query aus der Datenbank zu
löschen. Zeigt an: “Löschvorgang erfolgreich“ bzw. “Fehler beim
Löschvorgang“
Einträge anzeigen
Liest alle Einträge der Datenbank aus und zeigt sie auf dem
Bildschirm angemessen an, zusammen mit Links zu (4), (6) und (7)
(optional).
Details anzeigen
Liest alle Details eines gegebenen Eintrags aus der Datenbank, indem
es die “Unique ID“ benutzt, um ihn zu lokalisieren und ihn danach
angemessen auf dem Bildschirm darzustellen (z.B. indem es das
Formular (2) zum erneuten Eintrag der Werte benutzt).
Upload Script
Dieses Formular schickt alle Daten von der Datenbank, codiert als ein
einzelnes XML-String, als eine versteckte Variable. Die XML-Daten
werden zu einem Web Service geschickt, der den XML-String
speichert.
Web Service
• Um Daten zu laden
– Weil iPAQ nicht direkt in der Lage ist, Web Services zu benutzen, kann
es nur auf ‚standard HTTP‘ – POST und GET zurückgreifen.
– Deswegen benutzen wir HTTP POST, um Daten zu laden.
– Das ist möglich durch Verändern des ,web.config‘ Files – dadurch
erwartet es einfach HTTP POST input.
• Der Web Service
– Der Web Service empfängt und speichert einen Text-String – davon
abgesehen, liest oder benutzt er den Text-String nicht weiter.
– Denkt daran, eure versteckte Variable so zu nennen, wie es der Web
Service erwartet!
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
<add name="HttpPostLocalhost"/>
</protocols>
</webServices>
Zusammentragen der Daten
• Logistik klären...
2 Gruppen, Daten- und PDA- Gruppe
Die PDA-Gruppe arbeitet hier
Aufteilung innerhalb Gruppe?
Daten-Gruppe ???
Aufteilung innerhalb Gruppe ?
Hotspots...
Vermeidet doppelte Einträge!
Ist es zweckmäßig, zur Lokalisierung der Kneipen Karlsruhe in
Quadranten aufzuteilen?
• Und jetzt: Auf geht‘s in die Kneipe! ;-)
Herunterladen