Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Mobile Anwendung zur Datenerfassung: Welche Technik als Basis wählen (HTML, WP, PhoneGap, ...)?
reloop
myCSharp.de - Member

Avatar #avatar-3256.jpg


Dabei seit:
Beiträge: 139

Themenstarter:

Mobile Anwendung zur Datenerfassung: Welche Technik als Basis wählen (HTML, WP, PhoneGap, ...)?

beantworten | zitieren | melden

Hallo liebe Community,

wir setzen in der Firma zur (externen) Datenerfassung eine Mobile Lösung ein. Die Mitarbeiter besitzen momentan einen PDA oder Mobiles Gerät mit Windows Mobile 6.5. Die Anwendung wurde in C# mit dem Compact Framework erstellt.

Nun möchten/müssen wir diese Anwendung neu schreiben. Nachdem ich mich über die gänigen Möglichkeiten informiert habe, scheint es mir das beste zu sein, das Projekt als reine Webseite zu entwickeln, da die Mitarbeiter in 99% ihrer Zeit sowieso eine Internetverbindung aufbauen können.

Nun Frage ich mich, hat jemanden Erfahrungen mit PhoneGap oder ähnlichem gemacht?

Und was ist mit Windows Phone? Da es momentan noch kein HTML5 unterstützt, wäre das vielleicht der falsche Ansatz?

Im Endeffekt bin ich soweit, dass ich die Seite einfach ganz normal mit PHP u. JavaScirpt schreiben möchte, angepasst, auf Mobile - Endgeräte.

Ich frage mich nur, ob ich diesen Schritt nicht in einem halben Jahr bereuen werde.

Vielleicht habt ihr ja ein paar Tipps oder eine Meinung dazu.

Beste Grüße,
reloop
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Hallo,
Zitat von reloop
Im Endeffekt bin ich soweit, dass ich die Seite einfach ganz normal mit PHP u. JavaScirpt schreiben möchte, angepasst, auf Mobile - Endgeräte.
das heißt doch dann, dass eure Anwendung gar keine telefonspezifischen Features benötigt, oder? Zusammen damit, dass die Mitarbeiter Internetverbindungen aufbauen können spricht doch nichts gegen ne normale Webapplikation, sondern eher alles gegen native Apps.
Zitat
Und was ist mit Windows Phone? Da es momentan noch kein HTML5 unterstützt,...
Es gab tatsächlich ne Zeit vor HTML5, nämlich jetzt wo die allermeisten Seiten im Web immer noch gar keine HTML5 Features nutzen :)
Wieso soll man also keine normale Webanwendung schreiben können? Der Browser in Windows Phone 7 ist nen Zwischending zwischen IE 8 und IE 7, so schlecht ist der nun auch nicht und spätestens in Herbst ist dann mit dem Mango Update IE 9 angesagt inklusive hardwarebeschleunigtes Rendern etc.

Anfangs sprichst du von Windows Mobile, dann Windows Phone, was ja ne gänzlich andere Plattform ist - was ist denn das eigentliche Zielsystem für die neu zu entwickelnde App?
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.195

beantworten | zitieren | melden

Es gibt Boilerplates, die HTML 5 auch auf Browsern nutzbar machen, die kein HTML 5 nativ unterstützen - teilweise neben den neuen HTML Elementen sogar CSS-Animationen.
Ein Beispiel wäre http://html5boilerplate.com/, das auch für mobile Anwendungen ebenso genutzt werden kann.

Hierfür gibt es wiederum auch Templates für ASP MVC 3. Evtl. muss man hier aber die genutzten Elemente (css/jQuery Libs) aktualisieren.
private Nachricht | Beiträge des Benutzers
reloop
myCSharp.de - Member

Avatar #avatar-3256.jpg


Dabei seit:
Beiträge: 139

Themenstarter:

beantworten | zitieren | melden

Zu Beginn sprach ich von Windows Mobile 6.5 - richtig. Da dies die momentanen Endgeräte sind. Aber immer mehr der Aussendienstmitarbeiter werden nun auf Windows Mobile 7 Geräte umgestellt.

Der Gedanke mit der Webanwendung kam mir auch schon. Und dabei stieß ich auf PhoneGap. (Was übrigends HTML5 voraussetzt.)

Oder soll ich das ganze einfach als Mobile Anwendung umsetzen, zusammen mit einer guten JS-Library?

Gruss & danke!
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.111

beantworten | zitieren | melden

Wovon du noch gar nichts geschrieben hast wäre, was die Anwendung genau macht. Davon hängt es nämlich ab, welche Anwendungsart die beste ist.

An einer Webanwendung würde mich stören
- die ewigen Ladezyklen für so ziemlich jeden Klick den man ausführt
- die unterschiedlichen Stellen an denen man Code hat (Server, Client)
- fehlende Flexibilität beim Aufbau eines Formulars (man hat immer nur genau eines, keine MessageBox usw...)
- das Gepfriemel bei der Datenhaltung, da sich ein zustandsloses Formular nichts merken kann

Daher wär das für mich schon eine Überlegung, was ich denn wirklich wie haben will. Eine bestehende Verbindung sagt noch nichts über die Qualität dieser Verbindung aus. Wenn ich eine Liste umsortieren will und dann ein paar Sekunden warten muss bis meine Webseite sich deswegen neu geladen hat, hab ich doch lieber ne eigene Anwendung die das Sortieren ohne Wartezeit macht.

Kurz gesagt, meiner Meinung nach eigent sich eine Webanwendung immer weniger, je individueller, intelligenter (auf die Anwendung bezogen) und intensiver der Benutzer damit arbeiten soll/will.
private Nachricht | Beiträge des Benutzers
reloop
myCSharp.de - Member

Avatar #avatar-3256.jpg


Dabei seit:
Beiträge: 139

Themenstarter:

beantworten | zitieren | melden

Hallo chilic,

die Anwendung muss folgendes Leisten:

- Login mit seinem Mitarbeiter Account
- Erfassung seiner heute erledigten Aufträge
- Übersicht seiner erfassten Aufträge ( + Bearbeiten )
- Abarbeitung eines individualisierten Aufgaben-Kataloges

Bei der alten Anwendung war es so, dass wenn keine Internetverbindung hergestellt werden konnte, die Daten auf dem Gerät zwischengepuffert wurden und beim nächstmögichen Verbindungsaufbau mit übertragen wurden.

Auf dieses Feature werde ich zukünftig wohl oder übel verzichten müssen, oder?

Beim erfassen dieser Daten, soll er es natürlich so komfortabel wie nur möglich haben. Bedeutet, umsortieren von Listen, Hinweismeldung im Sinne von Messages und das effiziente Laden sollten vorhanden sein.

Nun als die Frage, auf welche Technik ich gehen soll.

Android, Windows Phone und iOS sollten im Idealfall abgedeckt sein. Wobei letzteres eher sekundär ist.

Danke für eure Hilfe!

reloop
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Nunja, eine Website würde zwar ausreichend sein, allerdings fände ich hier eine eigene Anwendung schon sinnvoller. Auf die Pufferung würde ich hier nicht unbedingt verzichten wollen. Es könnte eben durchaus möglich sein, dass das Netz Probleme hat. So wären die Daten dennoch vorhanden und der Benutzer kann seine Arbeit weiter verrichten.

Wenn iOS nicht unbedingt dabei sein soll, würde ich hier eine C# Anwendung vorschlagen. - Am besten solltest du diese allgemein halten. Das heißt, keine Windows Phone spezifischen Sachen nutzen. So könntest du mittels Mono für Android die Anwendung auf den Android Geräten laufen lassen.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
reloop
myCSharp.de - Member

Avatar #avatar-3256.jpg


Dabei seit:
Beiträge: 139

Themenstarter:

beantworten | zitieren | melden

Hallo inflames2k,

ist es mir denn dort auch möglich, "lokal" auf dem Gerät Daten zwischenzuspeichern?

Und ist es nicht ein Umweg, wenn ich die Verbreitung der Anwendung über den Shop regeln muss, anstatt den Aussendienstkollegen nur eine Webseite aufrufen lassen zu müssen?

Denn wen mich nicht alles täuscht, ist der Weg, bis zur Verfügbarkeit der Application im Store ein etwas länger u. umfangreicherer Weg.

Beste Grüße,
reloop
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Ich weiß nicht, ob Silverlight auf Android geht. evtl aber die Alternative Moonlight.

jedenfalls wäre Silverlight von den Anforderungen her gesehen auch nicht auszuschließen.
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Ja, sind halt alles Punkte die man abwägen muss :) In einen sauren Apfel muss man halt beißen.

Wobei grad
Zitat
Beim erfassen dieser Daten, soll er es natürlich so komfortabel wie nur möglich haben. Bedeutet, umsortieren von Listen, Hinweismeldung im Sinne von Messages und das effiziente Laden sollten vorhanden sein.
doch für ne lokale Anwendung spricht, da man dort die Telefonspezifischen Features nutzen kann, was die Bedienung wesentlich erleichtern kann.

Die Idee mit Monodroid ist nicht schlecht. Man könnte die ganze Funktionalität problemlos portieren zwischen Android und Windows Phone wenns plain C# ist, und man hätte nur eine plattformspezifische GUI die die entsprechenden Plattformfeatures nutzt (was sie auch tun sollte. Nichts bedient sich schlimmer als ne generische GUI die nicht die jeweiligen plattformspezifischen Dinge berücksichtigt - die Anwendungen fühlen sich immer fremd an).

Einen riesen Punkt gibts da aber grad - Monodroid ist tot. Novell hat ja Mono abgestoßen und die Entwickler haben Xamarin gegründet und entwicklern dort Mono weiter. MonoDroid ist aber explizit nen Produkt von Novell und daher siehts grad schlecht aus. Aber kein Grund den Kopf hängen zu lassen weil die von Xamarin nen neues "MonoDroid" basteln - welches sogar kompatibel zum alten sein soll, siehe dazu auch diesen Blogpost von Miguel de Icaza.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Zitat
ist es mir denn dort auch möglich, "lokal" auf dem Gerät Daten zwischenzuspeichern?
Wie wäre es damit?
Web SQL Database
private Nachricht | Beiträge des Benutzers
ingemar
myCSharp.de - Member



Dabei seit:
Beiträge: 194
Herkunft: Kärntnafornia, aber in Wien lebend ;)

beantworten | zitieren | melden

hallo,

zum thema lokales abspeichern von daten auf mobilen endgeräten, kann ich dir vistadb empfehlen. http://www.vistadb.net/
kostet zwar was, bietet dafür aber auch einiges ;)
ich musste auch mal eine applikation für barcodelaser schreiben, da haben wir vistadb verwendet. außerdem lag die db auf einer speicherkarte, damit auch ja nichts verloren geht...

grüße,
ingemar
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.996

beantworten | zitieren | melden

Was für eine Verschwendung, wo es doch SQLite für jedes embedded gerät auch kostenlos gibt.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo FZelle,

es ging ja wohl darum, eine Webanwendung bei fehlender Verbindung lokal bedienen zu können und dabei die Daten lokal zwischenzuspeichern. Würde das mit SQLite funktionieren?

herbivore
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.996

beantworten | zitieren | melden

ingemar Sprach vom localen speichern von Daten auf Mobilen Geräten, nicht von WebAnwendungen.

Allerdings gibt es für Silverlight eine Version des CSharp ports von SQLite, ginge also auch über eine SL WebAnwendung.
private Nachricht | Beiträge des Benutzers
Christoph Burgdorf
myCSharp.de - Member

Avatar #avatar-2915.jpg


Dabei seit:
Beiträge: 365
Herkunft: Hannover

beantworten | zitieren | melden

Hallo zusammen,

hinter dem buzzword html5 verstecken sich auch APIs zum lokalen Speichern von Daten, die selbst erhalten bleiben, wenn der Browser geschlossen wird. Klar der Windows Mobile 6.5 Browser kann das nicht. Aber vielleicht kann man darauf hoffen, das Opera Mobile 11 noch für Windows Mobile 6.5 rauskommt. Aktuell gibt es leider nur Opera Mobile 10 für WM 6.5 welcher noch keinen localStorage unterstützt.

Das ist das Dilemma. Siehe auch:

Browser with HTML5 localStorage for Windows Mobile 6.5

Gruß

Christoph
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.111

beantworten | zitieren | melden

Eine Webanwendung ist ja zunächst mal eher etwas das pro Aktion einen Request sendet und das die Datenn serverseitig verarbeitet. Jetzt soll manchmal eben nicht per Request gearbeitet werden, sondern Daten werden gespeichert. Woher kommt dann schon mal die ganze Logik, die bisher auf dem Server steckt?
Wirds dann nicht doch ein bisschen unübersichtlich?

Ich würde abwägen welche Gründe für und gegen die jeweiligen Anwendungen sprechen und dann das verwenden, das dabei gewinnt. Lokale Datenhaltung und Puffer usw. wären eben starke Gründe für eine Anwendung, die genau so gebaut werden kann wie man sie haben will.
private Nachricht | Beiträge des Benutzers
Stefan0410
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Also ganz ehrlich... ich wuerde fuer diesen Fall wahrscheinlich ne Java App schreiben, um erstmal einigermassen plattformunabhaengig zu sein. Als Geraete-Datendank selbstverstaendlich sqlite benutzen, um auch hier plattformunabhaengig zu sein...
Dann noch nen Synchro Dienst, der bei bestehender Verbindung die Datenbanken synchronisiert - getrennt von der Geraete App.
Denn vielleicht bekommt mal ein Mitarbeiter ploetzlich ein Nokia Handy, oder gar ein Android. Ein anderer benutzt zukuenftig ein netbook oder ein iPad.
Das ganze modular aufbauen und clever designen, so dass es auch ohne grafische UI funktionieren kann... und zum schluess nen huebsches UI draufsetzen. Evtl QT?!
So kannste es auch als Web App konfigurieren, als Client App benutzen, synchronisieren mit Datenpuffer in der DB, deine Plattformen spielen eine geringere Rolle, Java laesst sich gut proggen wenn Du sonst C# benutzt.
... ich bin nicht gerade ein Java Fan, aber fuer dieses Projekt mit unterschiedlichen Endgeraeten wuerde ich erst mal so plattformunabhaengig wie moeglich arbeiten, so dass man mit minimalen Aufwand die Plattform wechseln kann.


Edit:
Jetzt hab ich doch glatt Mono vergessen... das waere auch noch ne gute Alternative... das Framework ist mittlerweise fuer Windows Mobile, Windows Phone, Android und iPhone portiert, so kannst Du in C# proggen und bist trotzdem plattformunabhaengig, auch wenn das Framework nicht soviel hergibt, aber ne sqlite DB Connection und Networking Functions sind kein Problem.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Stefan0410 am .
private Nachricht | Beiträge des Benutzers
dispose
myCSharp.de - Member



Dabei seit:
Beiträge: 38

beantworten | zitieren | melden

Hallo reloop,

ich lese deinen Beitrag leider erst jetzt. Ich kann Dir von einer kompletten Online-Lösung nur abraten, wenn es um mobile Datenerfassung geht. Das funktioniert im industriellen Bereich noch nicht. Weiterhin halte ich PDAs/Smartphones für diese Aufgabe für unwirtschaftlich, da diese nicht dafür geeignet bzw. konzipiert sind.

Such mal nach CASIO IT-800 oder Psion Omnii und vergleich mal die Werte mit PDAs/Smartphones. Das geht bis IP68 und schlagfest bis 1,80 Meter Sturzhöhe.

IPones und Co sehen zwar gut aus und es macht Spaß sie zu bedienen. Qualitativ hochwertige Arbeitswerkzeuge sind es aber nicht.

Zum Thema oder eher Problem Online-Lösung:
  1. Es ist zu langsam, wenn die Daten direkt über Webservices abgerufen werden sollen. Die Bediener sollen arbeiten und nicht warten.

  2. Die Netzabdeckung kann nicht zu 100% garantiert werden. Selbst wenn nur jeder Nutzer eine Stunde pro Woche offline ist und es insgesamt 20 Bediener gibt, hast Du einen Ausfall von 52 Wochen mal 1 Stunde mal 20 Bediener. Das ergibt 1040 Stunden pro Jahr. Macht einen wirtschaftlichen Schaden von 62.400,- € pro Jahr bei einen internen Stundensatz von 60,- €. Merken Sie was?

  3. Der Akku reicht bei intensiver Bedienung für 8 Stunden nicht aus. Im Laufe der Zeit wird es noch schlimmer, da die Akkus an Kapazität verlieren, wenn sie altern.

Mein persönlicher Rat. Such dir ein industrielles Gerät und mach die Datenversorgung vor dem Schichtbeginn und die Entsorgung nach dem Schichtende. Versuch ein Windows CE und kein Mobile Gerät zu bekommen (die API ist mir hier zu abgespeckt) und lass die Anwendung auf dem .NET Compact Framework 3.5 laufen.

Und wer jetzt wissen will, warum ich kein Java erwähne. Dafür wird eine J9VM für das spezielle Gerät und Prozessor (MIPS, ARM, SH4 usw.) benötigt. Das kostet mehrere tausende von Euros, sich so etwas anfertigen zu lassen. Da bleiben wir doch lieber bei Microsoft.


Grüße,

dipose

P.S. Ich kann Dir als objekt-relationale Datenbank db4o (Open Source) wärmstens empfehlen. Das gibt es auch für das .NET Compact Framework. Einfacher und komfortabler geht es eigentlich nicht. Jedenfalls wenn die Anforderungen nicht ganz so hoch bzw. komplex sind.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dispose am .
private Nachricht | Beiträge des Benutzers