Aufbau und Struktur

Eine Frage an die Design Fetischisten unter Euch.

Ich bin gerade dabei eine kleine Railsanwendung zu bauen und hänge etwas
in der Luft. Derzeit liegt alles in einem Controller - leider - von
gutem Design kann man da nicht gerade sprechen.

Problemstellung:

Folgendes Szenario. ich versuche es mal in einzelne schritte aufzuteilen

  1. Benutzer gibt Suchquery an und schickt ab
  2. das query sucht die ersten 10 Treffer bei google
  3. diese 10 Treffer werden dann mit einer zweiten abfrage jeweils
    gecheckt
  4. Das Ergbnis hieraus wird dann dem Benutzer angezeigt…

so Preisfrage, wie mache ich sowas schnell und performant und vor allem
“Railslike”. Vor allem woran erkenne ich dass der User der gerade die
Anfrage abgeschickt hat auch der ist, der das Ergebniss bekommen soll?

Hilfe

Mario

Mario Schröder | http://www.ironschroedi.com/de/
Office: +49 361 2152062
Phone: +49 34464 62301 Cell: +49 163 27 09 807
Willkommen bei XING! | XING

Hi, ich bin kein sehr geübter Railser, aber vielleicht kann ich schonmal
ein bisschen die Diskussion in den Gang bringen :slight_smile:

Rails Camper wrote:

Eine Frage an die Design Fetischisten unter Euch.

Ich bin gerade dabei eine kleine Railsanwendung zu bauen und h�nge etwas
in der Luft. Derzeit liegt alles in einem Controller - leider - von
gutem Design kann man da nicht gerade sprechen.
Ich gehe jetzt einfach mal davon aus, dass du schon Views und Models
benutzt und lediglich die ganze Web-Kommunikation im Controller
abwickelst.

Problemstellung:

Folgendes Szenario. ich versuche es mal in einzelne schritte aufzuteilen

  1. Benutzer gibt Suchquery an und schickt ab
  2. das query sucht die ersten 10 Treffer bei google
  3. diese 10 Treffer werden dann mit einer zweiten abfrage jeweils
    gecheckt
  4. Das Ergbnis hieraus wird dann dem Benutzer angezeigt…
    Also wenn du nichts persitent halten willst, fallen hier bis auf den
    User schonmal die Models weg.

so Preisfrage, wie mache ich sowas schnell und performant
Mit dem “Internet” als Bottleneck würde ich erstmal die Performance
außer Acht lassen. Da kannst du dich später besser drum kümmern, wenn
dein Design deine Applikation wartbarer macht.

und vor allem “Railslike”.
Ich würde eine Zusatzbibliothek anlegen die ein Suchquery-Objekt annimmt
und 10 Treffer-Objekte von Google liefert. Diese sprichst du dann im
Controller an (Query von Benutzerinteraktion nutzen). Anschließend
könntest du die Treffer-Objekte sich selbst “checken” lassen. Und je
nachdem kannst du dann eine Liste von Treffer-Objekten als
Instanzvariable speichern und dann in der View iterieren und einzeln
anzeigen. Dazu kannst du dir auch einen Helper schreiben, wenn die View
zu unübersichtlich wird.

Vor allem woran erkenne ich dass der User der gerade die
Anfrage abgeschickt hat auch der ist, der das Ergebniss bekommen soll?
Egal ob du synchron oder asynchron arbeitest, das sollten die Frameworks
für dich regeln. Also mach dir darüber keine Gedanken :slight_smile:

Gruß
Robert

Robert R. wrote:

Ich gehe jetzt einfach mal davon aus, dass du schon Views und Models
benutzt und lediglich die ganze Web-Kommunikation im Controller
abwickelst.

Ja eine einfache rudimentäre Version die die Ausgabe übernimmt gibt es
bereits. Allerdings müssen hier die Ergebnisse von Hand eingegeben werden.
Diesen Schritt würde ich gerne umgehen bzw. wegfallen lassen.

Also wenn du nichts persitent halten willst, fallen hier bis auf den
User schonmal die Models weg.

Es muss nicht persistent gehalten werden, wenn es allerdings notwendig
ist, dann kann es aber so sein.
In meiner Idee greife ich auf eine persisitent Lösung zurück, ist aber
alles andere als schön, denn alleine die Datenbankanfragen sind mit
knapp 1sek pro Speichervorgang ziemlich langsam.

Mit dem “Internet” als Bottleneck würde ich erstmal die Performance
außer Acht lassen. Da kannst du dich später besser drum kümmern, wenn
dein Design deine Applikation wartbarer macht.

Das war der Sinn der Sache, wie gesagt die erste Version funktioniert.
Aber gerade jetzt wenn wir von wartbarem Code sprechen sind meinem
Know-How Grenzen gesetzt.

Meinst du mit einer Zusatzbibliothek ein eigene Lib hierfür anlegen?

Egal ob du synchron oder asynchron arbeitest, das sollten die Frameworks
für dich regeln. Also mach dir darüber keine Gedanken :slight_smile:

Ich hatte schon daran gedacht, dass ich die Anfrage und Ergebnisse an
die Session binde, allerdings war diese Lösung zwar für einmalige
Abfragen okay, wenn aber zwei Abfragen innerhalb einer Session abgesetzt
werden - hinkt auch diese Lösung schon…

Danke schon einmal an Robert,

Mario

Mario Schröder | http://www.ironschroedi.com/de/
Office: +49 361 2152062
Phone: +49 34464 62301 Cell: +49 163 27 09 807
Willkommen bei XING! | XING