Laden...

"Starthilfe" Windows Phone Projekt

Erstellt von fod vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.410 Views
F
fod Themenstarter:in
84 Beiträge seit 2008
vor 12 Jahren
"Starthilfe" Windows Phone Projekt

Hallo zusammen,

aktuell planen wir ein neues Projekt umzusetzen. Da wir hier absolutes Neuland betreten wollte ich vor der "Grundsteinlegung" einmal andere Gedanken einholen.

Es geht um die mobile Anbindung von Mitarbeitern im Außendienst. Hierbei sollen die Mitarbeiter Zugriff auf Informationen haben und selbst auch Bereichte, Notizen u.ä, verfassen können.

Aktuell haben wir ein solches System bereits im Einsatz, welches allerdings nicht mehr den Anforderungen entspricht und auch nahezu nicht mehr wart- und erweiterbar ist.
Das bisher eingesetzte System (angehängte Grafik) ist ausgerichtet auf BlackBerry - Geräte die via Enterprise Aktivierung im Netzwerk registriert sind und auf eine ASP.NET Seite zugreifen.

Schon kurz nach dem Release der Windows Phone 7 Geräte haben wir die ersten Testspielereien veranstaltet, ich denke ihr kennt das.

Nun würden wir gern die Entwicklung voran treiben. Allerdings fangen hier die Fragen an:

  • Ist der Weg über WCF / REST Services der richtige zum Datentransfer? // Welche Alternativen gibt es?
  • Gibt es einen anderen Weg als über den IIS zu gehen?
  • Können die Services außerhalb meiner App von dritten genutzt werden? (Stichwort Sicherheit)
  • Habt ihr ähnlich gelagerte Projekte und könnt auf allgemeine Stolpersteine hinweisen?

Das reflektiert natürlich nur einen Bruchteil der Fragen, aber alles andere würde die "Starthilfe" Formulierung sprengen.

Schöne Grüße,
fod

P.S.: Sollte ich relevante Infos ausgelassen haben war das keine Absicht und reiche ich gerne nach.

N
22 Beiträge seit 2007
vor 12 Jahren

Hallo fod,
ich habe vor ca. einen Monat eine kostenlose "Fahrtenbuch"-App in den Marketplace gestellt.
Eine kurze grobe Beschreibung: Anhand der Gps-Daten ermittelt die App die Adresse und sobald Abfahrts- und Ankunftsort feststehen, wird anhand eines Routenplaners die Entfernung geschaetzt.
Danach kann der Benutzer den Kilometerstand korrigieren und einen Grund/Bemerkung fuer die Fahrt hinterlegen.

Die Ermittlung der Adressdaten/Entfernung und Speicherung der Daten erfolgen auf einen Server, der mittels Wcf mit den einzelnen WP7-Clients kommuniziert.
Dies laeuft bei mir momentan ueber Wcf mit BasicHttpBinding. Ueber Wcf stehen einem leider auch keine anderen Moeglichkeiten (z.B. tcpBinding oder WsHttpBinding) zur Verfuegung.
Bin mir jetzt nicht mehr ganz sicher, aber ich glaube ausser mit Wcf kann man noch per WebRequests mit der Aussenwelt kommunizieren. Mehr Moeglichkeiten hat man momentan nicht.

Die Kommunikation kann ueber SSL mit einem "offiziellen" Zertifikat verschluesselt werden. Selber generierte Zertifikate sollen nicht funktionieren.

Wcf-Dienste brauchst du nicht zwingend ueber einen IIS zur Verfuegung stellen. Du kannst sie auch selber hosten. (Das habe ich z.B. so gemacht.)

Du solltest den Wcf-Dienst natuerlich mind. mit einer Authentifizierung absichern.
(Ich glaube mit den Windows Credentials funktioniert das sogar. Da bin ich mir nicht sicher, weil ich ein eigenes Authentifizierungssystem verwende.)
Ausserdem sollte der MetaDataExchange ins Internet nicht sichtbar sein.

Ein "Stolperstein" fuer mich war, dass die Kommunikation vom WP7-Client zu den Wcf-Service nur asynchron erfolgt. Was anscheinend bei Silverlight "normal" ist. Da ich vorher aber noch nie was mit Silverlight gemacht habe, war ich doch sehr ueberrascht. 😉

Zu beachten waere noch, dass du nur in deinem IsolatedStorage Bereich Dateien ablegen/lesen kannst. (Also nicht App-uebergreifend.)

...und du solltest dir vor dem publishen auf jeden Fall die Guidelines von Microsofts "Application Certification Requirements" durchlesen.
Falls du da einen Punkt nicht erfuellst, wird die App abgelehnt!

Mehr faellt mir gerade nicht ein.

Bei konkreten Fragen kann ich dir aber gerne behilflich sein. (Soweit ich sie beantworten kann. 😉 )

F
fod Themenstarter:in
84 Beiträge seit 2008
vor 12 Jahren

Hallo normen,

erst einmal vielen Dank für die doch recht ausführliche Antwort.
Ich habe mir natürlich das von dir erwähnte Fahrtenbuch auch direkt mal angeschaut und würde mir wünschen bereits an dieser Stelle der Entwicklung zu sein 😃

Da, wie ich finde, deine App vom Prinzip her alle Elemente beinhaltet die auch für mich spannend sind
(

  • Klassen als Web Service erstellen
  • Web Service korrekt hosten
  • DB Zugriff
    )

würde ich gern tiefer in die Materie eintauchen und da auch weiter nachbohren wenn es dich nicht stört.

Wie hostest du denn die Web Services? Und wie sieht es mit der Strukturierung innerhalb des WCF Projektes auch. Kann ich hier wie gewohnt meine Kapselung über mehrere Ebenen fahren?

Hast du auch noch andere WP7 Projekte?

Grüße,
fod

P.S.: Die Anforderungen an die App um die Freigabe zu erlangen sind denke ich ab dem Mango Update etwas überholt wenn man reine B2B Apps (was unsere ja definitiv ist und zwar nur inhouse) veröffentlichen möchte.

N
22 Beiträge seit 2007
vor 12 Jahren

Wie hostest du denn die Web Services?

Momentan ist der Wcf-Service eine einfache Konsolenanwendung, die dann den ServiceHost erstellt.
(Soll in einem naechsten Step aber als Windows-Service laufen.)

Und wie sieht es mit der Strukturierung innerhalb des WCF Projektes auch. Kann ich hier wie gewohnt meine Kapselung über mehrere Ebenen fahren?

Bei mir ist der Wcf-Dienst in drei Ebenen unterteilt.
(Wcf-Service -> Logikschicht -> Datenhaltung)

Der Wcf-Service befindet sich in einer eigenen Assembly und die Logik- und Datenhaltung befindet sich in einer zweiten Assembly.

Der Wcf-Service stellt eigene Objekte fuer den Client zur Verfuegung und erstellt aus diesen Objekten dann die Objekte aus der Logikschicht und reicht sie dann an diese weiter.
(Das wuerde ich jetzt anders machen. 😉 Ich wollte damit eigentlich eine losere Kopplung erreichen. Allerdings ist meine Logikschicht nicht sehr umfangreich und ich koennte wahrscheinlich genauso gut direkt mit den Wcf-Objekten arbeiten.
Jetzt habe ich das Problem, dass ich viel "Mapping"-Code habe.
Ich wuerde jetzt auch alles in eine Assembly packen.)

Validierungsfehler werden dann ueber FaultExceptions an die Clients zurueckgegeben und per MessageBox an den User ausgegeben.

Falls die Logikschicht nicht allzu umfangreich ist, waeren die Wcf-RIA Services einen Blick wert.
Waehrend einer Schulung haben wir die mal angetestet und falls die Datenhaltung direkt in Tabellen erfolgt und die Logikschicht nicht allzu umfangreich ist, scheinen sie sinnvoll zu sein.
(Wenn die Schulung frueher gewesen waere, haette ich sie wahrscheinlich auch eingesetzt. 😉 )

Weitere Projekte habe ich momentan nicht.
Vorher muss das Fahrtenbuch den Stand erreichen, den ich gerne haette.
...und davon ist es momentan leider noch entfernt. 😉