2016-08-09 69 views
2

Ich habe ziemlich etwas zu diesem Thema recherchiert, aber ich kann nicht genug Informationen zu meinem Problem zu verstehen/finden.Backend-Architektur für iOS-Karten-Anwendung

Ich bin neu in einer kleinen Software-Firma, wo ich gerade ein Projekt bekommen habe, in dem ich die technische Anforderungsspezifikation schreiben muss.

Wir entwickeln eine iOS-Karten-App, mit der ein Benutzer eine Karte basierend auf einer Stadt erstellen kann, in der der Benutzer interessante Punkte hinzufügen und diesen Bilder mit Beschreibungen usw. hinzufügen kann. Der Punkt ist, dass der Benutzer kann Reiseerfahrungen aus einer bestimmten Stadt mit anderen Nutzern teilen.

Mein Problem ist dann, dass ich die Gesamtsystemarchitektur beschreiben und entscheiden muss, wie die Back-End-Lösung zusammengesetzt werden sollte. Ich habe keine Erfahrung mit Systemarchitektur.

Ich habe untersucht, was Microsoft Azure um https://azure.microsoft.com/en-us/pricing/details/app-service/ und speziell die Standard-S1-Plan-Option kann. Aber ich weiß nicht, ob diese Lösung genug sein wird, wenn die Benutzerbasis der App, sagen wir, 20.000 Benutzer sein wird? Und ist eine NoSQL-Datenbank in diesem enthalten oder kann es sein?

Ich entschuldige mich, wenn es ähnliche Fragen dazu gibt, die ich übersehen habe!

Hoffnung jeder kann mit einigen allgemeinen Beratung

Prost Chip!

Antwort

0
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    mapView = [[MKMapView alloc]initWithFrame: 
     CGRectMake(10, 100, 300, 300)]; 
     mapView.delegate = self; 
     mapView.centerCoordinate = CLLocationCoordinate2DMake(37.32, -122.03); 
     mapView.mapType = MKMapTypeHybrid; 
     CLLocationCoordinate2D location; 
     location.latitude = (double) 37.332768; 
     location.longitude = (double) -122.030039; 
     // Add the annotation to our map view 
     MapAnnotation *newAnnotation = [[MapAnnotation alloc] 
     initWithTitle:@"Apple Head quaters" andCoordinate:location]; 
     [mapView addAnnotation:newAnnotation]; 
     CLLocationCoordinate2D location2; 
     location2.latitude = (double) 37.35239; 
     location2.longitude = (double) -122.025919; 
     MapAnnotation *newAnnotation2 = [[MapAnnotation alloc] 
     initWithTitle:@"Test annotation" andCoordinate:location2]; 
     [mapView addAnnotation:newAnnotation2]; 
     [self.view addSubview:mapView]; 

} 


// When a map annotation point is added, zoom to it (1500 range) 
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views 
{ 
    MKAnnotationView *annotationView = [views objectAtIndex:0]; 
    id <MKAnnotation> mp = [annotationView annotation]; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance 
    ([mp coordinate], 1500, 1500); 
    [mv setRegion:region animated:YES]; 
    [mv selectAnnotation:mp animated:YES]; 
} 

können Sie bearbeiten nach Ihnen Hinweis: Sie benötigen popUp (custom) zu implementieren.

+0

Vielen Dank für die Antwort. Ich bin mir jedoch nicht ganz sicher, ob dies meine etwas breitgefächerte und vielleicht vage gestellte Frage beantworten wird. Ich suchte eher nach Ratschlägen, ob die verlinkte Lösung ausreichen würde und ob es möglich wäre, eine NoSQL-Datenbank damit zu verwenden. Oder wenn eine andere Lösung besser wäre. – masterp

1

Ein App-Service bietet nur die Web-Hosting-Funktion. Das ist eine ziemlich breite Fähigkeit und enthält viele Skalierungsfunktionen. Es kann skalieren (wenn das schreibgeschützte Backend statusfrei ist, können Sie mehrere Kopien ausführen) und verfügt über alle erforderlichen DevOps-Anforderungen.

Zu diesem grundlegenden Backend werden Sie weitere Funktionen hinzufügen möchten. DocumentDb oder Azure Table Storage bieten alle NoSQL-Funktionen mit unterschiedlichen Latenzzeiten, Abfragemöglichkeiten und Ausfallsicherheit. Sie können auch eine SQL-Datenbank, einen Blobspeicher oder eine eigene Datenbank oder eine Drittanbieterdatenbank in der Architektur verwenden.

Systemarchitektur ist zu weit und vage ohne echte Anforderungen. Zu fragen, ob eine spezifische Lösung für solch eine breite und vage Lösung geeignet ist, ist hier nicht wirklich angebracht.