Frage

Ich möchte ein paar hundert, vielleicht ein paar tausend Menschen in Echtzeit verfolgen.

Nehmen wir an, die Hardwareaspekte werden ausgeklärt und ich kann die Daten in eine Datenbank bringen.

Jetzt möchte ich es in Echtzeit herausholen und zeigen.

Weeeell ... "Real-Earoug" -Time. Nehmen wir an, ich möchte alle 1 bis 5 Sekunden einen Grundriss eines Gebäudes zeichnen und alle planen.

(Ich möchte vielleicht nur bestimmte "Arten" von Personen auf Klicken auf eine Schaltfläche anzeigen. Ich werde DataMining usw. benötigen, aber lassen Sie uns beim schlechteren Fall bleiben.)

Ich fühle mich mit PHP bequem genug, obwohl nicht so etwas. Ich persönlich würde mit einer in Delphi codierten Windows -App zufriedener sein, aber der Trend scheint darin zu sein, alles Browser basieren zu lassen.

Die Frage ist also, ob ein Browser dies bewältigen kann und ob es überzeugende Argumente für eine Windows-basierte oder browserbasierte Lösung gibt.

Wenn Browserbasiert dies verarbeiten kann (mit ein paar tausend Datenpunkten eine Sekunde anzeigen), und es gibt keine überwältigenden Argumente für Windows, dann werde ich mich für Browserbasiert entscheiden und ein paar neue Tricks lernen. Der offensichtliche Vorteil ist, dass ich auch einen großen Teil meines Codes für (Fahrzeug-) Tracking auf Google Maps wiederverwenden könnte.

War es hilfreich?

Lösung

Der größte Teil Ihrer Arbeit wird wahrscheinlich in Ihrer räumlich fähigen relationalen Datenbank erledigt. Beispielsweise können Postgis Datenpunkte in einem Begrenzungsfeld oder komplexeren räumlichen Prädikaten (ST_Contains, ST_Crosses, ST_intersects, ST_Touches, ...) sowie die üblichen SQL -Verknüpfungen sowie wo und wo. Räumliche Auswahl sollte einen räumlichen Index verwenden, um die Dinge zu beschleunigen.

Wenn dies der Fall ist, ist Ihre App größtenteils eine Präsentationsebene. Verwenden Sie in diesem Fall, was auch immer für Sie am einfachsten ist. Der Vorteil von Browserbasiert ist, dass es standardmäßig plattformübergreifend ist, aber dies ist für Sie möglicherweise keine Rolle.

In Bezug auf die Renderngeschwindigkeit hängt es wirklich davon ab, wie Sie vorhaben, Ihre Karte zu rendern. Es gibt Geschwindigkeitstests Verfügbar für Google Maps. Ich vermute jedoch, dass wenn Sie auf einer Schnittstelle vom Typ Google Maps planen mehrere tausend Punkte werden in eine Unschärfe von Stiften. Haben Sie ein Schnittstellenmodus?

Andere Tipps

Wenn Sie mit einer App -Art gegenüber einer anderen zufriedener sind, schreiben Sie diese Art von App. Machen Sie nichts zu einer Browser -App, nur um sie zu einer Browser -App zu machen.

Zuerst sollten Sie verstehen, was das Ziel Ihrer App ist (und deren Größe, wie viele gleichzeitige Clients?), Und dann entscheiden, ob ein dicker Client oder ein dünn/web am besten zu ihm passt. Anschließend sollten Sie überprüfen, welche Art von Anwendung die von Ihnen prognostizierte Last verwalten kann. Könnten Sie jede Sekunde mit der Technologie, die Sie in Ihrem Zeitrahmen beherrschen, ein paar tausend Datenpunkte anzeigen? Würde Multithreading Ihnen helfen, aktuelle Multicore -Prozessoren zu nutzen, um Ihr Ergebnis zu erzielen? Mit welcher Technologie können Sie sie nutzen?

Vielleicht scheint ein bisschen alter Hut zu sein, aber wenn Sie sich für einen Browser basieren, könnten Sie die Punkte auf ein Bild vorspannen und einfach das Bild zeigen?

Websockets

Schauen Sie sich HTML5 an Websockets, Sie sind ein neuer Standard für den Server-/Browser -Datenaustausch:

WebSockets ist eine Technologie, die bidirektionale Full-Duplex-Kommunikationskanäle über ein einzelnes Getriebekontrollprotokoll (TCP) -Socket (TCP) bietet, der für Webbrowser und Webserver implementiert ist.

Der Server kann neue Daten an den Client weitergeben, wenn er verfügbar ist, und beseitigt den Overhead von Client -Pull -Anfragen.

Die Wikipedia -Seite listet auf verfügbare serverseitige Implementierungen, einschließlich PHP -Versionen (aber nicht Delphi).

Websockets sind nicht an JavaScript gebunden, die Websockets.org -Seite sagt:

Darüber hinaus kann das Web -Socket -Protokoll verwendet werden, um eine Vielzahl von Clients zu unterstützen (z. B. JavaScript, Adobe Flex, Javafx, Microsoft Silverlight usw.). Die HTML5-Spezifikation definiert jedoch nur die Unterstützung für JavaScript, was auf textbasierte Protokolle beschränkt ist. Um andere Kundentypen zu bedienen und binäre Protokolle zu unterstützen, müssen Sie sich auf externe Angebote befassen.

Nachrichtendaten können in ausgetauscht werden JSON Format, das von JavaScript unterstützt und auch für Delphi verfügbar ist (als Open -Source -Implementierungen wie SuperObject oder LKJSON).


Ajax

Ajax Reiche Internetanwendungen für Delphi können mit Intraweb oder erstellt werden Extpascal. Extpascal ist ein Objektpascal (Delphi, Freepascal/Lazarus) Wrapper/Bindung für Ext js, ein komplettes GUI -AJAX -Framework und bietet transparente Unterstützung für alle Haupt -Webbrowser: IE 6+, Firefox 1.5+, Safari 3+, Opera 9+ und Chrome 2+ auf jeder Client -Seitenplattform (PCs, Smartphones, iPhone, PDAs usw. ). Online -Demo -Bewerbungen: Fishfacts, mehr.

Ajax Push (auch bekannt als Reverse ajax / Komet) bietet an "HTTP -Server Push"Daten (im XML- oder JSON -Format), die Daten vom Server an alle verbundenen Webbrowser -Clients übertragen, wenn Daten auf dem Server ändert. Clients können sich auf die Informationen abonnieren, an denen sie interessiert sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top