LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Offline in passato, essere online oggi è un must. Almeno per il moderno mondo degli affari. Presentazioni di prodotti e servizi di marca, ordinazione e consegna online, mantenimento di una base di clienti, comunicazione con i clienti e molto altro: tutto questo è semplicemente impossibile senza una presenza su Internet. Se hai bisogno di un'applicazione, devi avere sia il front-end (web) che il back-end (back-end della tua applicazione). E se vuoi essere in grado di modificare il contenuto della tua applicazione senza il coinvolgimento degli sviluppatori, hai bisogno di un buon pannello di amministrazione.

Mentre il Front-end nelle applicazioni mobili viene creato utilizzando tecnologie come X-Code e Java, il Back-end, in cui verranno archiviati il \u200b\u200bdatabase e tutta la logica dell'applicazione, richiede la conoscenza professionale di un linguaggio di programmazione lato server. Un buon esempio è PHP, che è probabilmente il linguaggio di programmazione più popolare utilizzato per sviluppare quasi tutti i server. Questo è il leader indiscusso.

Ci sono molti usi per PHP: siti web statici e dinamici + sistemi di gestione dei contenuti personalizzati, social media, sistemi CRM specializzati, software di e-commerce e altro ancora. Naturalmente, ci sono parti di server e pannelli di controllo gratuiti o economici. Tuttavia, in molti casi non forniscono il livello richiesto di comodità, personalizzazione e possibilità di aggiornamento.

I nostri programmatori lavorano con le tecnologie per implementare un'ampia gamma di soluzioni per diversi obiettivi, esigenze e requisiti aziendali. Analizziamo i requisiti di sistema per ogni progetto individualmente e applichiamo vari software server specializzati per prestazioni ottimali della tua applicazione mobile.

Se stai cercando un team che possa condurti alla soluzione più intelligente ed economica per creare un'app da zero o ricostruirne una esistente per un'esperienza utente perfetta, non devi più cercare. Appsmob è pronto per aiutarti a trovare la soluzione migliore per te.

Sviluppo del lato server dell'applicazione

introduzione

Una presenza su Internet è diventata una necessità per le aziende di oggi. Senza questo, è impossibile costruire un'interazione completa con i clienti. Spesso, per risolvere questo problema, ricorrono alla creazione di applicazioni client-server. Ciascuno di essi è costituito da un lato client e da un back-end. L'ultimo termine si riferisce al lato server dell'applicazione. Se in futuro è necessario modificare in modo indipendente il contenuto del programma mobile, il back-end dovrebbe essere creato con una qualità particolarmente elevata. Appomart garantisce l'adempimento dei compiti assegnati in conformità ai requisiti. Pertanto, quando si ordina la creazione di applicazioni server, si può essere certi del risultato corretto.

A cosa serve il back-end?

Lo sviluppo di applicazioni client-server prevede due parti. Il primo, Front-end, accetta le richieste degli utenti. È visibile dagli schermi dei dispositivi mobili dei clienti. Il secondo, l'applicazione server, elabora le richieste ricevute e funge da pannello amministrativo. I database e la logica del programma vengono memorizzati qui. Senza questo, nessuna applicazione client-server funzionerà. In effetti, il back-end è il cuore del programma. Questa è l'intelligenza che è responsabile dell'elaborazione delle richieste dei clienti, la velocità dell'applicazione. Pertanto, è importante che l'architettura dell'applicazione server sia pensata nei minimi dettagli, in modo che anche i servizi altamente caricati funzionino senza intoppi e rapidamente.

Come scegliere un linguaggio di programmazione?

Durante la preparazione dell'incarico tecnico (parte della documentazione di lavoro per il progetto), l'architetto progetta un sistema di database e collega, descrive gli oggetti e le loro proprietà, e sviluppa anche i metodi server necessari (richieste che verranno "utilizzate" dalle applicazioni mobili quando accedono al server).

L'importanza della documentazione e dei progetti abbandonati

Appomart viene spesso contattato da clienti che sono stati abbandonati per un motivo o per l'altro da altri appaltatori. E prendiamo il progetto di qualcun altro, a volte anche mal funzionante, per eseguire il suo audit e la successiva revisione e supporto. Nel processo di studio del codice sorgente e dei materiali ricevuti dal cliente, ci troviamo di fronte al fatto che molti sviluppatori deliberatamente non documentano i metodi server al fine di vincolare il cliente a se stessi, a causa dell'incommensurabilità dei costi di manodopera per il trasferimento del progetto a supporto di un altro sviluppatore, a causa della mancanza di documentazione lato server. ea volte solo per mancanza di professionalità. Questo fatto, purtroppo, non è solo triste ma anche diffuso. Il cliente, in questo caso, deve pagare per lo sviluppo della documentazione per il progetto esistente, nonché per l'audit del codice sorgente, prima che sia possibile giudicare l'operatività, la convenienza e l'opportunità del supporto del progetto. Il personale di Appomart conserva sempre la documentazione elettronica dei metodi di back-end in un formato supportato da Postman e Swagger per un uso successivo.

Come controllare l'appaltatore prima di firmare il contratto?

Ti invitiamo a scegliere con cura un appaltatore e concentrarti non solo sul prezzo allettante, ma anche sull'elenco dei documenti che riceverai con il progetto, nonché le condizioni per il trasferimento del codice sorgente e la copertura del codice con commenti, schemi di database (che si tratti di Mongo DB o MySQL ). La chiave del successo, di regola, diventa una documentazione di lavoro competente, che indica chiaramente i requisiti per i materiali trasferiti al completamento di ogni fase del lavoro.

Funzionalità di sviluppo

PHP per il lato server

La realizzazione del lato server delle applicazioni (da non confondere con i server come "hardware" o computer, visto che si tratta del lato software) richiede specifiche competenze professionali e conoscenza del linguaggio di programmazione che viene utilizzato lato server. Se guardiamo esempi di applicazioni client-server, possiamo vedere che PHP è popolare. È il leader indiscusso nello sviluppo di applicazioni server. Più della metà dei siti del mondo sono scritti in questa lingua in una configurazione o nell'altra. PHP è facile da sviluppare e mantenere e ci sono framework speciali per accelerare lo sviluppo di PHP.

Struttura

Framework (piattaforma software) - utilizzato per organizzare e aumentare i livelli di astrazione, il che rende il progetto più flessibile e scalabile. Va comunque inteso che il framework deve essere scelto correttamente, sulla base di un'analisi approfondita della documentazione di lavoro del progetto, senza la quale è impossibile sviluppare un prodotto di qualità.

Delphi, JAVA, Python

Esistono altri linguaggi utilizzati per creare il back-end. Quindi, le applicazioni server create nell'ambiente Delphi sono molto diffuse. Con il suo aiuto, il programma riceve un debug migliorato, è anche facile creare programmi unici nell'ambiente, viene fornita la creazione visiva, il che rende possibile creare un'interfaccia bella, comprensibile e conveniente. Anche le applicazioni server Java hanno guadagnato popolarità. Questi sono facilmente integrabili, facilmente eseguibili su qualsiasi piattaforma e hanno un discreto livello di sicurezza. Un altro linguaggio popolare è Python. Le applicazioni server con il suo aiuto vengono create rapidamente, semplicemente, senza gravi costi.

Diffusione

La creazione di applicazioni client-server è richiesta nell'ambiente aziendale. Spesso tali programmi vengono utilizzati per gruppi di lavoro o per la creazione di sistemi informativi all'interno dell'azienda. La stragrande maggioranza delle applicazioni mobili per mantenere la comunicazione con il client ha anche un'architettura simile. La popolarità è dovuta al fatto che l'uso delle funzionalità del server consente di garantire il controllo e l'integrità del sistema, riducendo il carico sulla rete.

Creeremo un'applicazione client-server per Android, iOS di alta qualità e puntuale

Sviluppo chiavi in \u200b\u200bmano

I programmatori Appomart sono esperti e qualificati per gestire compiti di un'ampia varietà di livelli. Siamo ugualmente bravi a implementare social network, progetti aziendali ad alto carico o la parte software per piccole startup. Se necessario, creeremo la parte client dell'applicazione con Android, iOS in base alle esigenze e ai requisiti esistenti.

Back-end in Appomart

I nostri programmatori lavorano con diverse tecnologie e lo fanno altrettanto bene. In Appomart puoi ordinare un'applicazione client-server in Java, PHP e Node.JS. I requisiti di sistema vengono analizzati individualmente per ciascuno dei progetti per garantire prestazioni ottimali del programma. Creiamo da zero un'applicazione client-server Java, PHP e Node.JS o prendiamo una esistente in supporto per miglioramenti e aggiornamenti. Se sei interessato a sviluppare una nuova parte server o supportarne una esistente, lascia una richiesta per ricevere un calcolo dettagliato del costo del lavoro e delle opzioni per la cooperazione.

Lo svantaggio dei client mobili è il server.

Requisiti aggiuntivi dipendono dalle specifiche dell'applicazione:
scalabilità del server: per SaaS, applicazioni social, dove, idealmente, è previsto un grande flusso di visitatori, questa condizione è obbligatoria. Per le applicazioni aziendali in cui sono presenti restrizioni sul numero di utenti o il numero è previsto, questa proprietà non è richiesta;
interattività: un certo numero di applicazioni deve essere dotato di un meccanismo di notifica - per informare l'applicazione (utente) del verificarsi di determinati eventi, inviare un messaggio all'utente. Questa proprietà dovrebbe essere posseduta, ad esempio, da un sistema di cambio o da un distributore automatico di taxi.
API aperta: si presume che sviluppatori di terze parti possano utilizzare le funzionalità del sistema tramite un protocollo documentato. Dopo tutto, un client può essere un'applicazione server mobile o esterna.
altri requisiti ...

Comando
Idealmente, la composizione del team di progetto per lo sviluppo del sistema potrebbe essere la seguente:
project manager: gestisce, controlla il progetto, interagisce direttamente con il cliente;
sviluppatore di applicazioni server: sviluppa un server di logica aziendale, database, protocollo di rete;
sviluppatore applicazione amministratore: sviluppa un'applicazione Web, un'interfaccia utente per la configurazione e la gestione di un'applicazione server;
sviluppatore di applicazioni client per Android;
sviluppatore di applicazioni client iOS;
sviluppatore di applicazioni client per ...
tester: verifica l'applicazione di amministrazione e le applicazioni client.

Il lettore attento noterà che se scrivi un'applicazione server con un'interfaccia grafica, ad esempio in HTML5, puoi risparmiare denaro. In questo caso, lo sviluppo di applicazioni client non è richiesto: il browser fornisce l'interfaccia utente. Questo articolo non tratta questo caso, ma riguarda lo sviluppo di applicazioni "native" (native) per dispositivi mobili.

Ho lavorato in una squadra con uno staff completo, ma sarò realista: non sempre le risorse umane e il budget consentono di mettere insieme una squadra del genere. E a volte i ruoli devono essere combinati: project manager + sviluppatore di applicazioni server, sviluppatore di applicazioni client + tester.

Tecnologie, strumenti, biblioteche
Per sviluppare un server per client mobili, di solito utilizzo il seguente stack di tecnologie "gratuite":
Apache Tomcat è un contenitore servlet;
MySQL - DBMS;
Subversion è un sistema di controllo delle versioni;
Maven è un framework per automatizzare le build del progetto;
JUnit: fornirà;
Apache Log4j - libreria di registrazione;
Jenkins - sistema di integrazione continua;
Hibernate - ORM (impostazioni, configurazione nelle proprietà, file xml e annotazioni);
hibernate-generic-dao - Implementazione DAO di Google, implementa metodi di base per lavorare con i dati del database, semplifica l'implementazione del filtraggio e dell'ordinamento nei metodi;
- implementazione di autenticazione e autorizzazione (sicurezza), contenitore di servizi e bean (configurazione nei file xml e nelle annotazioni), che usiamo anche durante la creazione dei test.

A seconda delle specifiche del sistema e dei suoi requisiti, utilizzo una delle 2 opzioni per implementare il protocollo di scambio dati.
Quando sono richieste multipiattaforma, prestazioni, semplicità, efficienza, scalabilità, API aperte, prendo Jersey, l'implementazione dei servizi Web REST (servizi Web RESTful). Questa libreria consente di utilizzare la serializzazione dei dati JSON e / o XML. La configurazione REST viene eseguita tramite annotazioni. Per lo scambio con i dispositivi mobili è stato adottato il formato JSON in quanto ha un'implementazione più semplice lato client (per questo motivo non utilizziamo servizi Web “classici”), viene generato meno traffico. Jersey ti consente di sintonizzarti sul "look" JSON più appropriato.
Altrimenti, se hai bisogno di multipiattaforma, alte prestazioni, semplicità, efficienza, interattività, allora prendo
Apache MINA è un framework per la creazione di applicazioni di rete,
Google protobuf è una libreria di codifica e decodifica di dati strutturati. La struttura dei dati è determinata dai file header * .proto, il compilatore genera da essi le classi Java (esiste anche la possibilità di generazione per altri linguaggi di programmazione: C ++, Objective-C, ecc., Che fornisce la proprietà multipiattaforma);
java.util.concurrent: usiamo il pacchetto standard.
Questa opzione può essere ridimensionata, ma deve essere definita in fase di progettazione a livello di architettura, tenendo conto della logica di business.

Consideriamo un problema ipotetico utilizzando l'esempio della scelta delle tecnologie per un vero servizio SaaS - "Asta di servizi" Auknem ", che consente alle persone di effettuare un ordine per l'esecuzione dei servizi o lavori richiesti, e le organizzazioni, a loro volta, lasciano loro proposte. Prendiamo tutti i requisiti di base per impostazione predefinita. Dato che la registrazione in questo sistema è gratuita e gratuita, è assolutamente necessario aggiungere scalabilità ad essi. E l'interattività? Sarebbe bello informare gli appaltatori (esecutori) sulla creazione di nuovi ordini e informare i clienti sulle proposte ricevute nello stesso momento nella domanda, e non solo tramite e-mail. Sulla base di ciò, prendiamo per l'implementazione di Apache MINA, Google protobuf. Diamo un'occhiata alla prossima proprietà: API aperta. Il servizio è disponibile pubblicamente, quindi supponiamo che gli sviluppatori esterni potrebbero essere interessati a integrarsi con esso. Aspettare! Non è così semplice. Il protocollo basato su Apache MINA dipende dall'implementazione e l'integrazione senza conoscerne le sfumature non è affatto trasparente. In una situazione del genere, dovrai valutare quale fattore è più importante e fare una scelta.

Conclusione
Sarei interessato a sapere quali tecnologie, librerie hai utilizzato per sviluppare un server per dispositivi mobili o sistemi simili? Tutto cambia, niente dura per sempre, ad ogni livello ci sono alternative con i propri vantaggi e svantaggi: MySQL -

Molto del moderno applicazioni per piattaforme mobili (iOS, Android, ecc.) Funziona in tandem con il server. Un'applicazione con dati obsoleti perde la sua utilità. Pertanto, è importante assicurarsi che i dati dal server al dispositivo siano costantemente aggiornati. Questo vale per le applicazioni offline che dovrebbero funzionare senza Internet. Per le applicazioni completamente online che non funzionano (o sono inutili) senza Internet (ad esempio, Foursquare, Facebook), esistono specificità che esulano dallo scopo di questo articolo.

Utilizzando l'esempio di una delle nostre applicazioni offline, ti dirò quali approcci abbiamo utilizzato per sincronizzare i dati. Nelle prime versioni abbiamo sviluppato algoritmi semplici e, in futuro, con l'esperienza, li abbiamo migliorati. Una sequenza simile è presentata nell'articolo: da semplici pratiche ovvie a quelle più complesse.

Va chiarito che l'articolo tratta del trasferimento dei dati solo in una direzione: dal server al dispositivo. Qui il server è la fonte dei dati.

Disposizioni generali per tutti gli approcci

Ad esempio, prenderemo in considerazione il trasferimento di una directory "piatti" su un dispositivo. Assumeremo che il dispositivo faccia una richiesta per l'url “/ service / dishes / update”, lo scambio avviene tramite protocollo http in formato JSON ( www.json.org). Il server ha una tabella "piatti" con i seguenti campi: id (identificatore del record), nome (nome del piatto), aggiornato (nel momento in cui il piatto viene aggiornato, è meglio supportare subito il fuso orario, "AAAA-MM-GGThh: mm: ssTZD", ad esempio, "1997 -07-16T19: 20: 30 + 01: 00 "), is_deleted (segno del record cancellato).

Nota riguardante la presenza dell'ultimo campo. Per impostazione predefinita, il suo valore è 0. In un'applicazione in cui le entità sono sincronizzate tra il client e il server, non è consigliabile eliminare fisicamente i dati dal server (per evitare errori). Pertanto, is_deleted \u003d 1 è impostato per i piatti eliminati.Quando un'entità con is_deleted \u003d 1 arriva al dispositivo, viene eliminata dal dispositivo.

Con qualsiasi approccio, che verrà considerato di seguito, il server restituisce un array di oggetti ai dispositivi JSON (potrebbe essere vuoto):

[
(id: , nome: , aggiornato: , isDeleted: },…
]

Esempio di risposta del server:

[
(id: 5625, nome: "Bread", aggiornato: "06/01/2013 06:23:12", isDeleted: 0),
(id: 23, nome: "semolino cotto", aggiornato: "2013-02-01 14:44:21", isDeleted: 0), (

nome: "Zuppa di pesce",

aggiornato: "2013-08-02 07:05:19",

Principi di aggiornamento dei dati su un dispositivo

  1. Se un elemento che si trova sul dispositivo è arrivato ed èDeleted \u003d 0, viene aggiornato
  2. Se è arrivato un elemento che non si trova nel dispositivo ed è eliminato \u003d 0, viene aggiunto
  3. Se un elemento che si trova sul dispositivo è arrivato ed è eliminato \u003d 1, viene eliminato
  4. Se è arrivato un elemento che non si trova sul dispositivo e isDeleted \u003d 1, non viene eseguito nulla

Approccio 1: sincronizza sempre tutto

Questo è il metodo più semplice. Il dispositivo richiede un elenco di piatti dal server e il server invia l'intero elenco. Ogni volta che arriva l'intera lista. Non ordinato.

Richiesta di esempio: null o "()"

Vantaggi:

  • la logica sul server è semplice: diamo sempre tutto
  • la logica sul dispositivo è semplice: sovrascriviamo sempre tutto

Svantaggi:

  • se richiedi l'elenco spesso (ogni 10 minuti), ci sarà molto traffico Internet
  • se l'elenco viene richiesto raramente (una volta al giorno), la rilevanza dei dati sarà violata

Area di applicazione:

  • per applicazioni a basso traffico
  • trasmissione di dati che cambiano molto raramente (elenco di città, categorie)
  • trasferimento delle impostazioni dell'applicazione
  • all'inizio del progetto per il primo prototipo di un'applicazione mobile

Approccio 2: sincronizza solo i file aggiornati

Il dispositivo richiede un elenco di piatti, aggiornato dalla sincronizzazione precedente. L'elenco viene ordinato per "aggiornato" in ordine crescente (opzionale, ma conveniente). Il dispositivo memorizza il valore “aggiornato” per l'ultima parabola inviata e, alla successiva richiesta, lo invia al server nel parametro “lastUpdated”. Il server invia un elenco di piatti che sono più recenti di "lastUpdated" (aggiornato\u003e lastUpdated). Alla prima richiesta al server “lastUpdated” \u003d null.

Richiesta di esempio: (lastUpdated: "2013-01-01 00:00:00")

Nel diagramma: "last_updated" è il valore memorizzato nel dispositivo. Di solito, viene creata una tabella separata sul dispositivo per memorizzare questi valori "last_updated" per ciascuna entità (piatto, città, organizzazione, ecc.)

Questo approccio è adatto per sincronizzare semplici elenchi lineari con le stesse regole di arrivo per tutti i dispositivi. Per una sincronizzazione più selettiva, vedere Approccio 5: sincronizzazione con la conoscenza di ciò che è già presente sul dispositivo.

Di solito questo approccio copre la maggior parte delle esigenze. Sul dispositivo arrivano solo nuovi dati, puoi sincronizzarli almeno ogni minuto: il traffico sarà ridotto. Tuttavia, ci sono problemi associati ai limiti dei dispositivi mobili. Questi sono memoria e processore.

Approccio 3: sincronizzazione in batch

I dispositivi mobili hanno poca RAM. Se sono presenti 3000 piatti nella directory, l'analisi di una stringa json di grandi dimensioni dal server negli oggetti sul dispositivo potrebbe causare una mancanza di memoria. In questo caso, l'applicazione andrà in crash o non salverà questi 3000 piatti. Ma anche se il dispositivo è stato in grado di digerire una tale stringa, le prestazioni dell'applicazione nei momenti di sincronizzazione in background saranno basse (ritardi dell'interfaccia, scorrimento non fluido, ecc.) Pertanto, è necessario richiedere l'elenco in porzioni più piccole.

Per questo, il dispositivo passa un ulteriore parametro ("importo"), che determina la dimensione della porzione. La lista deve essere inviata ordinata per il campo "aggiornato" in ordine crescente. Il dispositivo, simile all'approccio precedente, ricorda il valore "aggiornato" dell'ultima entità inviata e lo passa al campo "lastUpdated". Se il server ha inviato esattamente lo stesso numero di entità, il dispositivo continua la sincronizzazione e fa di nuovo una richiesta, ma con "lastUpdated" aggiornato. Se il server ha inviato meno entità, significa che non ha più nuovi dati e la sincronizzazione termina.

Nel diagramma: "last_updated" e "amount" sono i valori in cui sono memorizzati applicazione mobile ... "Last_item" - l'ultima entità (piatto) inviata dal server. È più recente di questo valore che verrà richiesto l'elenco successivo.

Richiesta di esempio: (lastUpdated: "2013-01-01 00:00:00", importo: 100)

Vantaggi:

  • Il dispositivo riceve tutti i dati che è in grado di elaborare alla volta. La dimensione della dose è determinata da prove pratiche. Le entità semplici possono essere sincronizzate 1000 alla volta. Ma accade anche che entità con un gran numero di campi e una complessa logica di elaborazione della memoria vengano sincronizzate normalmente non più di 5 pezzi.

Svantaggi:

  • Se ci sono 250 piatti con lo stesso aggiornamento, quindi con importo \u003d 100, gli ultimi 150 non verranno inviati ai dispositivi. Questa situazione è abbastanza reale ed è descritta nel seguente approccio.

Approccio 4: correggere la tempistica del batch

Nell'approccio precedente, è possibile che se nella tabella sono presenti 250 piatti con lo stesso "aggiornamento" (ad esempio, "2013-01-10 12:34:56") e la dimensione della porzione è 100, verranno visualizzati solo i primi 100 record. I restanti 150 verranno ritagliati (aggiornati\u003e lastUpdated). Perché dovrebbe succedere? Quando vengono richiesti i primi 100 record, lastUpdated verrà impostato su "2013-01-10 12:34:56" e la richiesta successiva avrà la condizione (aggiornata\u003e "2013-01-10 12:34:56"). Anche l'ammorbidimento della condizione (aggiornato\u003e \u003d “2013-01-10 12:34:56”) non aiuterà, perché il dispositivo richiederà quindi all'infinito i primi 100 record.

La situazione con lo stesso "aggiornato" non è così rara. Ad esempio, durante l'importazione di dati da un file di testo, il campo "aggiornato" era impostato su ADESSO (). Può richiedere meno di un secondo per importare un file con migliaia di righe. Può anche succedere che l'intera directory abbia la stessa "aggiornata".

Per risolvere questo problema, è necessario utilizzare un campo del piatto che sarebbe unico almeno entro un momento ("aggiornato"). Il campo "id" è unico in tutta la tabella, quindi dovresti usarlo anche per la sincronizzazione.

Quindi, l'implementazione di questo approccio è simile a questa. Il server restituisce la lista ordinata per “updated” e “id”, e i dispositivi richiedono dati utilizzando “lastUpdated” e il nuovo parametro “lastId“. Sul server, la condizione di selezione è più complicata: ((updated\u003e lastUpdated) OR (updated \u003d lastUpdated and id\u003e lastId)).

Nel diagramma: "last_updated", "last_id" e "amount" sono valori che vengono memorizzati nell'applicazione mobile. "Last_item" - l'ultima entità (piatto) inviata dal server. È più recente di questo valore che verrà richiesto l'elenco successivo.

Approccio 5: sincronizza con la conoscenza di ciò che è già presente sul dispositivo

Gli approcci precedenti non tengono conto del fatto che il server non sa realmente con quale successo i dati sono stati salvati sul dispositivo. Il dispositivo potrebbe semplicemente non salvare alcuni dati a causa di errori inspiegabili. Pertanto, sarebbe bello ricevere conferma dal dispositivo che tutti (o non tutti) i piatti sono stati conservati.

Inoltre, l'utente dell'applicazione può personalizzare l'applicazione in modo che necessiti solo di una parte dei dati. Ad esempio, un utente desidera sincronizzare i piatti solo da 2 città su 10. Ciò non può essere ottenuto utilizzando le sincronizzazioni descritte sopra.

L'idea alla base dell'approccio è la seguente. Il server memorizza (in una tabella separata "stored_item_list") informazioni su quali piatti sono presenti sul dispositivo. Potrebbe essere solo un elenco di coppie "id - aggiornato". Questa tabella contiene tutti gli elenchi di coppie di parabole "id - aggiornato" per tutti i dispositivi.

Il dispositivo invia al server le informazioni sui piatti disponibili sul dispositivo (l'elenco delle coppie "id - aggiornato") insieme a una richiesta di sincronizzazione. Quando richiesto, il server controlla quali piatti dovrebbero essere sul dispositivo e quali sono adesso. La differenza viene quindi inviata al dispositivo.

In che modo il server determina quali piatti dovrebbero essere sul dispositivo? Nel caso più semplice, il server effettua una richiesta che restituirà un elenco di coppie "id - aggiornato" di tutti i piatti (ad esempio, SELECT id, aggiornato FROM piatti). Nel diagramma, ciò viene eseguito dal metodo "WhatShouldBeOnDeviceMethod ()". Questo è lo svantaggio dell'approccio: il server deve calcolare (a volte effettuando pesanti query sql) cosa dovrebbe essere sul dispositivo.

In che modo il server determina quali piatti sono presenti sul dispositivo? Esegue una query sulla tabella "stored_item_list" per questo dispositivo e ottiene un elenco di coppie "id - updated".

Analizzando questi due elenchi, il server decide cosa inviare al dispositivo e cosa eliminare. Nel diagramma, questo è "delta_item_list". La richiesta quindi non contiene “lastUpdated” e “lastId”, il loro compito è svolto dalle coppie “id - updated”.

Come fa il server a conoscere i piatti disponibili sul dispositivo? Nella richiesta al server viene aggiunto un nuovo parametro “items”, che contiene una lista degli id \u200b\u200bdei piatti che sono stati inviati al dispositivo nell'ultima sincronizzazione (“device_last_stored_item_list”). Certo, puoi inviare un elenco degli id \u200b\u200bdi tutti i piatti che si trovano sul dispositivo e non complicare l'algoritmo. Ma se ci sono 3000 antenne sul dispositivo e vengono inviate tutte ogni volta, i costi del traffico saranno molto alti. Nella stragrande maggioranza delle sincronizzazioni, il parametro "elementi" sarà vuoto.

Il server deve aggiornare costantemente la “stored_item_list” con i dati che provengono dal dispositivo nel parametro “items”.

Implementa un meccanismo per cancellare i dati del server in stored_item_list. Ad esempio, dopo aver reinstallato un'applicazione su un dispositivo, il server presumerà che il dispositivo sia ancora aggiornato. Pertanto, durante l'installazione dell'applicazione, il dispositivo deve in qualche modo informare il server in modo che cancelli l'elenco stored_item_list per questo dispositivo. Nella nostra applicazione, in questo caso inviamo un parametro aggiuntivo "clearCache" \u003d 1.

Conclusione

Tabella riassuntiva delle caratteristiche di questi approcci:

Un approccio Volume di traffico(5 - grande) Intensità del lavoro di sviluppo(5 - alto) Utilizzo della memoria del dispositivo(5 - alto) Correttezza dei dati sul dispositivo(5 - alto) Puoi selezionare un dispositivo specifico
1 Tutto è sempre sincronizzato 5 1 5 5 non
2 Solo l'aggiornamento 1 2 5 3 non
3 Sincronizzazione in batch 1 3 1 3 non
4 Correggere la sincronizzazione in batch 1 3 1 3 non
5 Sincronizzazione con conoscenza di ciò che è già presente sul dispositivo 2 5 2 5

"Correttezza dei dati sul dispositivo" è la probabilità che il dispositivo contenga tutti i dati inviati dal server. Nel caso degli approcci # 1 e # 5, c'è la certezza del 100% che il dispositivo abbia tutti i dati di cui ha bisogno. In altri casi, non esiste tale garanzia. Ciò non significa che gli altri approcci non possano essere utilizzati. È solo che se una parte dei dati viene persa sul dispositivo, non sarà possibile ripararla dal server (e ancora di più scoprirlo sul lato server).

Forse, in presenza di tariffe Internet illimitate e wifi gratuito, il problema di limitare il traffico generato da un'applicazione mobile diventerà meno rilevante. Ma anche se devi affrontare ogni sorta di trucco, trova approcci più intelligenti in grado di ridurre i costi di rete e aumentare le prestazioni delle applicazioni. Non sempre funziona. A volte è "il più semplice, il migliore", a seconda della situazione. Si spera che da questo articolo tu possa scegliere un approccio che ti sarà utile.

Ci sono sorprendentemente poche descrizioni della sincronizzazione del server su Internet e dispositivi mobili ... Inoltre, ci sono molte applicazioni che funzionano secondo questo schema. Per chi fosse interessato, un paio di link.

La nostra azienda offre servizi per la creazione lato server di applicazioni aziendali mobili e servizi web client operanti in ambienti ad alto carico. Nello sviluppo di ogni progetto, cerchiamo di applicare un approccio individuale in modo che il prodotto risultante diventi la soluzione più ottimale per gli obiettivi specifici del cliente.

Se si utilizza un'applicazione complessa che memorizza e / o elabora i dati sul server, dietro di essa è presente un back-end: un pacchetto software situato su un server Web e che funziona con un'applicazione, che in questo caso è chiamata Front-end. Un'applicazione situata sul server può funzionare contemporaneamente con un gran numero di client, il che impone requisiti di alta velocità e sicurezza del suo funzionamento.

Spesso il lato server dell'applicazione è scritto in PHP, che è il linguaggio più popolare per tali soluzioni. Per implementare semplici attività del server, è possibile utilizzare sistemi standard, ma per quelli più specifici è già necessario sviluppare la propria soluzione o componenti aggiuntivi sui sistemi standard.

Principi di sviluppo del server per un'applicazione mobile

I nostri programmatori lavorano con tecnologie che ci consentono di implementare una vasta gamma di soluzioni per qualsiasi carico di lavoro, anche molto elevato, e aree diverse. Creiamo anche soluzioni server separate per singole attività.

Controllo organizzativo

Ogni progetto viene creato da un gruppo separato di specialisti responsabili di tutte le fasi di sviluppo e consegna del progetto in tempo.

Programmazione

La progettazione dell'architettura del server è la fase più importante nel processo di creazione dei database e di formazione degli algoritmi necessari.

Test

La parte software dovrebbe funzionare senza errori e guasti. Questo è ciò di cui sono responsabili i tester di sistema.

Supporto tecnico

I nostri dipendenti forniscono supporto tecnico completo per i programmi, il che ci consente di eliminare rapidamente le carenze e apportare aggiornamenti.

Funzionalità di sviluppo

Per sviluppare in modo competente il lato server di un'applicazione, sono necessarie determinate abilità e conoscenza del linguaggio di programmazione utilizzato sul server. Come mostra la pratica, le applicazioni client-server vengono create in PHP. È il leader indiscusso in questo campo. Più della metà dei siti web del mondo sono scritti in PHP, è conveniente per lo sviluppo e il supporto.

Struttura

Questa piattaforma software ti consente di rendere il tuo progetto più scalabile e flessibile. Tuttavia, il framework deve essere scelto nel modo più corretto possibile, pertanto è necessaria un'analisi approfondita della documentazione di lavoro del progetto, che successivamente aiuterà a sviluppare un prodotto di alta qualità.

Ci sono altri linguaggi usati per lo sviluppo back-end. Ad esempio, le applicazioni server create nell'ambiente Delphi sono popolari. A causa di ciò, il programma ha migliorato il debug. Inoltre, è più facile sviluppare programmi unici al suo interno, prevede la creazione visiva. Tutto ciò ti consente di creare un'interfaccia chiara e conveniente.

Le applicazioni server Java non sono meno popolari. Possono essere integrati senza problemi, facilmente eseguibili su diverse piattaforme e hanno un alto livello di sicurezza.

Un altro linguaggio comunemente usato. Aiuta a creare applicazioni server in modo semplice, rapido ed economico.

Quasi tutte le aziende moderne hanno i propri uffici virtuali. Il sito web può essere un biglietto da visita o un portale o un catalogo online con la possibilità di effettuare ordini.

I processi aziendali in questo caso dipendono dai server web, ovvero dalla loro capacità di resistere ad attacchi, tentativi di hacking e influenze negative esterne, nonché prestazioni sufficienti per molte richieste simultanee.

Fasi di sviluppo del servizio web

Quando creiamo applicazioni per diversi segmenti di mercato, organizziamo il nostro lavoro secondo un unico principio: dividiamo l'intero processo in fasi separate, i cui progressi e risultati vengono comunicati ai clienti. Pertanto, un server per un'applicazione mobile viene sviluppato in modo simile.

1. Sviluppo di un'idea

Fino a 2 settimane

In questa fase, vengono create le fondamenta, dando un'idea di cosa verrà posto e in quale direzione si svilupperà.

2. Valutazione del progetto

2-3 settimane

I nostri specialisti valutano tempi e costi dei lavori, quindi viene redatta una proposta preliminare per quanto riguarda lo sviluppo.

3. Termini di riferimento e contratto

Fino a 2 settimane

Dopo aver discusso con il cliente tutte le sfumature del processo e redatto una specifica tecnica dettagliata, viene preparato e firmato un accordo.

4. Sviluppo dell'interfaccia

2-3 settimane

I progettisti sono responsabili della creazione delle interfacce necessarie per la scrittura dei moduli software.

6. Test

2-3 settimane

Un controllo completo della soluzione software risultante viene eseguito dai tester utilizzando una serie di strumenti appropriati.

7. Completamento del progetto

Fino a 2 settimane

Entro il periodo di tempo concordato, viene consegnato al cliente un servizio web già pronto e accuratamente testato.

la nostra squadra

Attraverso l'analisi delle attività commerciali e delle esigenze dei nostri clienti, creiamo prodotti concreti che aiutano a risolvere una varietà di problemi aziendali. L'utilizzo di moderne tecnologie offre un'ampia gamma di possibilità per l'implementazione del software server, che garantisce elevate prestazioni delle corrispondenti applicazioni mobili. Il nostro team è rappresentato da:

Capi progetto

Questi dipendenti interagiscono sia con i clienti che con gli sviluppatori, garantendo la comunicazione tra loro. Controllano l'attuazione delle azioni pianificate e dei miglioramenti necessari.

Designer

Nel loro lavoro, i nostri specialisti tengono conto dei requisiti per la creazione di interfacce per sistemi operativi iOS e Android, in modo che le applicazioni rilasciate funzionino correttamente su dispositivi diversi.

Sviluppatori

Al fine di ottimizzare le prestazioni delle applicazioni mobili, i programmatori analizzano i requisiti di sistema e creano software server specializzato.

Tester

Test approfonditi sono una garanzia della qualità del prodotto finito e una garanzia della sicurezza dei dati memorizzati ed elaborati. Questi professionisti utilizzano una varietà di strumenti e una metodologia efficace.

Quali servizi creiamo

Che sia incorporato in un sito software o in un programma autonomo, un servizio Web serve per eseguire attività relative a pubblicità, analisi, pianificazione e promozione aziendale. A questo proposito, è necessario decidere quale tipo di risorsa sarà la soluzione ottimale.

Progetti di informazione

Progettato per accogliere contenuti diversificati.

Siti tematici

Quasi tutte le loro pagine sono dedicate a un argomento. La domanda per loro è ancora piuttosto alta.

Siti di notizie

Informa su varie notizie all'interno di uno o più argomenti, riflettendo le principali aree della vita.

Blog

La popolarità di queste risorse è in costante crescita. Come i siti di notizie, trasmettono questa o quella informazione alla comunità di Internet, ma in questo caso gli autori esprimono la loro opinione personale.

Progetti sociali

Questi includono servizi sociali specializzati. reti, comunità, forum, ecc.

Forum

Creato per discutere varie notizie, beni / servizi, ecc. Possono essere sia strettamente focalizzati che diversi.

Social networks

Queste risorse hanno un pubblico multimilionario. Il loro compito principale è fornire agli utenti di Internet la possibilità di comunicare in linea tramite messaggi di testo / vocali e comunicazioni video.

Vari servizi web

Diffusi oggi, si dividono in diversi tipi.

Cataloghi

Servizi Postali

Fornire agli utenti tutte le funzionalità e i vantaggi dell'e-mail, inclusa la visualizzazione, l'invio, la modifica di lettere e documenti, ecc.

Motori di ricerca

Sono utilizzati per cercare siti e informazioni varie su determinate richieste.

Bacheche

Si tratta di risorse web in cui i netizen pubblicano i loro annunci per la vendita e l'acquisto e servizi su vari argomenti.

Siti di hosting

Progettato per l'archiviazione temporanea di file. Alcuni di essi offrono la possibilità di rivedere i dati prima del download.

Domande frequenti

Di seguito offriamo le risposte alle domande che vengono spesso poste dai nostri specialisti. Se non trovi le informazioni di interesse qui, ti preghiamo di porre la tua domanda in questo modulo e risponderemo sicuramente.

Quanto tempo è necessario per creare l'applicazione e il server Web?

In media, questo lavoro dura dalle 9 alle 20 settimane. Tutto dipende dalla complessità del compito da svolgere.

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam