Wir erstellen eine Suite nativer mobiler Anwendungen als Ergänzung zu unserer vorhandenen Anwendung, die derzeit nur eine Webschnittstelle zum Server unterstützt. Die Anwendung kann von Clients in ihrer eigenen Infrastruktur installiert und gehostet werden oder von uns für Clients gehostet werden, die sie nutzen möchten. Große Unternehmenskunden entscheiden sich normalerweise für das Selbsthosting, während kleinere Kunden unsere Hosting-Option wählen.
Wir müssen mehrere Versionen der Anwendung unterstützen. Nicht alle Kunden möchten gleichzeitig ein Upgrade durchführen. Mit der Weboberfläche ist die Unterstützung mehrerer Versionen nicht schwierig, da die Weboberfläche automatisch die Serverversion verwendet, die der Serverinstallation zugeordnet ist. Bei mobilen Anwendungen, bei denen normalerweise nur eine einzige App in den App Stores verfügbar ist, wird die Unterstützung für verschiedene Ebenen der Server-API und -Funktionalität in der mobilen App zu einer Herausforderung. Ich bin interessiert zu wissen, wie andere Leute das Problem lösen. Meiner Meinung nach haben Sie Optionen wie:
- Unterstützt mehrere Versionen der App im App Store.
- Integrieren Sie Unterstützung in die mobilen Anwendungen, um automatisch die API-Version des Servers zu ermitteln, mit dem gesprochen wird, und um Anrufe an die entsprechenden Server-API-Endpunkte weiterzuleiten. Führen Sie außerdem eine Art Feature-Umschaltmechanismus ein, um Funktionen in der mobilen Anwendung basierend auf den in den verschiedenen Serverversionen verfügbaren Funktionen zu aktivieren / deaktivieren.
- Verwenden Sie den App Store nicht zum Bereitstellen Ihrer App. Verweist Benutzer auf eine versionierungsspezifische URL, über die sie die App herunterladen und installieren können.
Option 1 - IMO sorgt für Verwirrung bei den Benutzern der App. Es gibt auch keinen guten Migrationspfad von einer Version der App zur nächsten, da es sich tatsächlich um zwei separate Anwendungen handelt.
Option 2 - kann andererseits schnell sehr komplex werden, wenn Sie berücksichtigen, dass sich Ihre UI-Grafiken jetzt grundsätzlich an die Funktionen anpassen müssen, die in der Version der Server-API verfügbar sind, mit der gesprochen wird. Es muss auch die verschiedenen Versionen der Server-API-Aufrufe unterstützen, die es ausführen muss.
Option 3 - ist in der Android-Welt möglich, wenn Sie Ihre App von der Seite laden. Soweit ich weiß, wird dies in iOS nicht unterstützt, und ich bin mir nicht sicher, wie das Bild für Windows 10 Mobile-Apps in Zukunft aussehen wird.
Welche anderen Ansätze gibt es, um das Problem anzugehen? Bitte diskutieren Sie nicht die Tatsache, dass wir native Apps schreiben. Das frage ich nicht. Ich suche nach Anleitungen, wie andere Leute das Problem der Unterstützung mehrerer Versionen derselben nativen mobilen App angehen, die mit verschiedenen Versionen einer Server-API kommunizieren.
quelle
Antworten:
Schau dir an, was passieren wird ...
Option 1 generiert Supportanrufe, wenn Benutzer die falsche Version installieren. Es wird immer einen Benutzer geben, der die neueste Version entweder nicht lesen oder auswählen kann, weil er glaubt, sie besser zu kennen ... und Sie haben eine große Anzahl von Versionen, auf die Sie möglicherweise Korrekturen zurückportieren können, falls dies erforderlich sein sollte.
Option 2 fügt dem UI-Code eine gewisse Komplexität hinzu. Wie viel davon abhängt, wie gut die UI geschrieben ist, um adaptiv zu sein. Aber es hat die beste Benutzererfahrung.
Option 3 kann unter iOS nicht ausgeführt werden (Android und Windows erlauben dies in bestimmten Konfigurationen), was unterschiedliche Verhaltensweisen für unterschiedliche Plattformen bedeutet. Das macht die Dinge inkonsistent, was ein Rezept für Ärger ist.
Von diesen ist die Erstellung einer reaktionsschnellen Benutzeroberfläche und die Ausrichtung auf den richtigen Endpunkt bei weitem der beste Weg für Ihre Benutzer.
quelle
Ich habe mich in einem etwas anderen Kontext damit befasst, aber wir haben festgestellt, dass Sie ein Upgrade durchführen müssen, wenn Sie unseren öffentlichen Server verwenden. Wenn Sie selbst gehostet haben, konnten Sie auf jeder gewünschten Version bleiben.
Ich weiß, dass dies nicht die kundenfreundlichste Antwort ist, und es ist möglicherweise keine Option, abhängig von Ihrer Situation, aber es war die Haltung, die wir letztendlich eingenommen haben.
Eine Sache, die zu beachten ist: Wir mussten am Ende viele Einzelarbeiten durchführen, die auf alten Baselines basierten, die selbst gehostet wurden, als wir Sicherheitsprobleme oder signifikante Fehler fanden. Wenn Sie mehrere Versionen unterstützen, unabhängig davon, wie wir es getan haben, oder wenn Sie am Ende mehrere APIs vollständig unterstützen, müssen Sie sicherstellen, dass Sie über ein solides Konfigurationsmanagement und Quellcodeverwaltung verfügen. Wenn Sie Fehler finden, nehmen Sie sich die Zeit, um sie wieder auf den Ursprung zu bringen, da sie möglicherweise in einem alten Zweig behoben werden müssen.
quelle
Die API-Versionierung ist in Ordnung, erfordert jedoch mehr Arbeit auf der UI-Ebene. A) Die UI muss wissen, welche Version der API je nach Konfiguration aufgerufen werden soll (verwenden Sie eine Eigenschaftendatei oder eine Ressourcendatei auf dem Clientgerät).
b) Außerdem muss der Server mehrere Versionen der APIs unterstützen.
Gilt die Server-API nur für mobile Clients oder hat sie auch andere Clients? Wenn es sich um andere Clients handelt, möchten Sie möglicherweise nur für Mobilgeräte eine Wrapper-API erhalten, die die Server-API an einem Ende mit Versionsunterstützung aufruft.
Grundsätzlich ist die Versionierung der Server-API schwierig, wenn andere Clients wie öffentliche APIs von der Server-API bereitgestellt werden. Andernfalls ist dies einfach.
Meine 2 Cent.
quelle