praktikum 27. juni 2003 projekt. einführung das praktikum endet mit einem projekt: erstellt einen...

24
Praktikum 27 . Juni 2003 Projekt

Upload: ottoline-zeltner

Post on 06-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 2: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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: …

Page 3: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

TimelineHeute: erste Treffen

Letzte Treffen (25 Juli)

Zusammentragen der Daten vollständig (11 Juli)

PDAs Zurückgeben

Nächste Freitag: PDA-Anwendung und Daten-Upload Web Service

fertig gestellt

Page 4: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Das Szenario

Kneipenführer Web service

Datenbank

Web Sites

Mobile Db Gruppe 1

Mobile Db Gruppe 2

Mobile Db Gruppe 3

Mobile Db Gruppe 4

HTTP POST

SOAP

Page 5: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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?

Page 6: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Compaq iPAQPocketPC

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)

Page 7: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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...

Page 8: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Forts. Installation• http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=AD37ACEA-

8020-45E4-9489-270C1E638759 – SQL Dashboard

• http://www.angers.ensam.fr/wce/_0_site_web_2001/site_anglais/travail_angers/serveur_web.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

Page 9: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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>

Page 10: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Beispiele

• Kommentare:C# // Hier ist ein KommentarVB REM Hier ist ein Kommentar

• Variablen definierenC# string MystringVB 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 ausdruckenC# Console.Write(“Variable=“+Mystring)VB Response.Write “Variable=“ & Mystring

Resultat: Variable=I am a “string“ with quotes

Page 11: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Vergleiche, OperatorenC#

If (variable==null) { ...}==><!=>=<=

VBScript

If Variable is Nothing Then... = > <<>>=<=

Page 12: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Iteration - Beispiele

For i=0 to 20 step +2

Response.Write i&“<br>“

Next

Dim myArray(10)

Dim i

For i=0 to 9 step +1

myArray(i)=10-i

Response.Write i&“<br>“

Next

While i<10

i=i+1

Wend

Do while not i>10

i=i+1

If i=5 Then

Exit Do

End If

Loop

Page 13: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Prozeduren

C#

void myFunction(){

}

int myFunction(){

// oder anderen Typ

return int_value

}

VBScript

Sub myFunction()

End Sub

Function myFunction()

...

myFunction=returnvalue

End Function

Page 14: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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

Page 15: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

String manipulation

Dim mystring=“Hello world“ rem mystring definieren

mystring2=Replace(mystring,“world“,“Karlsruhe“) rem mystring2 ist “Hello Karlsruhe“

mylength=Len(mystring) rem die Lange von String bestimmen

mystring2=Left(mystring,5) rem mystring2 ist jetzt “Hello“

mystring2=Right(mystring,5) 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

Page 16: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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!

Page 17: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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

Page 18: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Beispiele

Do While Not dbObject.EOFResponse.Write dbObject(0).Name & “ “_

& dbObject(0).Value

Response.Write “<BR>“

dbObject.MoveNext

Loop

Page 19: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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.

Page 20: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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 ;-)

Page 21: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Notwendige Scripts1. 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‘ FormularDieses 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/ UpdatesAkzeptiert 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.)

Page 22: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

Forts. Scripts4. 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“

5. Einträge anzeigenLiest alle Einträge der Datenbank aus und zeigt sie auf dem Bildschirm angemessen an, zusammen mit Links zu (4), (6) und (7) (optional).

6. Details anzeigenLiest 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).

7. Upload ScriptDieses 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.

Page 23: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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>

Page 24: Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht

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! ;-)