Bonjour, Habr! Je souhaite partager mon expérience en utilisant la
plate-forme mobile Foresight .
Si vous êtes confronté à la tâche de stocker des données à distance sans écrire votre propre serveur, la première chose qui vous vient à l'esprit est l'outil
Firebase Realtime Database . La plupart des lecteurs savent ce qui est en jeu, mais pour le reste je vais vous expliquer. À l'aide de la base de données Firebase, vous pouvez stocker des données à distance sous forme NoSql.
Image de FirebaseDes avantages de l'utilisation:- soutenu par google
- pas besoin d'écrire de code, côté base
- travail rapide
- gratuit jusqu'Ă 5 Go
- intégration avec le service d'authentification Firebase avec un nombre assez important de fournisseurs d'autorisation
- prise en charge d'Android, d'iOs, d'unité, etc.
- synchronisé en temps réel: lors de la mise à jour des données dans la base de données, elles sont mises à jour dans le client
Des inconvénients:- lorsque vous dépassez les limites établies pour l'espace et la charge du serveur, vous devez payer
- il n'y a aucun moyen de personnaliser la structure de stockage
FMP + PostgreSQL
Maintenant, je veux vous parler d'un outil alternatif que je dois utiliser.
Je vais partir de loin. Quelque part, j'ai un serveur PostreSQL surélevé avec une base de données. Dans la base de données, j'ai une table avec des fruits:

Qu'est-ce que PostreSQL comment travailler avec lui peut ĂŞtre lu
ici .
Ma tâche consiste à obtenir cette table par téléphone le plus rapidement possible avec le moins d'écriture de code et à assurer la sécurité à chaque étape.
Voici la table
my_table_fruits dans
pgAdmin4 :

Ensuite, je trouve les procédures dans l'arborescence pgAdmin4. J'écris ma propre procédure pour obtenir la table:

La procédure s'appellera fruits_get_by_color et me donnera des fruits d'une certaine couleur de ma table my_table_fruits.
Après cela, je passe au serveur Foresight de la plateforme mobile (ci-après FMF). La façon de déployer la plateforme et ce dont vous avez besoin se trouvent dans la
documentation . FMF est un serveur doté de connecteurs aux serveurs de base de données. Il peut également se connecter au PostgreSQL dont nous avons besoin. Il n'est pas nécessaire d'écrire du code pour cela. Je dois travailler avec le panneau d'administration via le navigateur. Entrez les adresses nécessaires des serveurs, des bases de données. Le panneau d'administration a des paramètres et une arborescence d'environnement:

Vous pouvez également en savoir plus sur les paramètres dans la documentation.
Malheureusement, la FMF n'a pas de versions d'essai ni de périodes gratuites. De plus, la FMF est déployée dans une infrastructure sécurisée du client. Par conséquent, je ne peux pas fournir de liens vers le serveur pour essayer. Mais, pour comprendre l'essence du travail, les informations suivantes sont tout à fait suffisantes.
Je crée un nouvel environnement dans l'arborescence d'environnement, par exemple, je l'appellerai Leonid_environment. À l'intérieur de l'environnement, je crée un projet, par exemple, Leonid_project. J'entre dans le projet et j'y crée une source de données, dans notre cas PostgreSQL. J'entre les paramètres du serveur et de la base de données dans lesquels ma table est stockée:

J'entre dans la source de données et je clique sur «Importer». J'entre dans le nom de la source le nom de la procédure que j'ai introduite dans PostgreSQL, dans ce cas fruits_get_by_color. Pour le client mobile, vous pouvez proposer un nom différent, mais pas nécessairement. Je vais l'appeler fruits_get_by_color_for_android:

Après avoir cliqué sur le bouton «Importer», la plateforme FMF «verra» notre procédure et les paramètres que nous devons y transférer.

Elle verra notamment qu'il faut passer le paramètre fruit_color:

Après cela, allez dans l'onglet "Utilisateurs API" et créez un utilisateur. Création d'un utilisateur avec un nom d'utilisateur et un mot de passe Leonid 123123:

À partir de ce moment, vous pouvez accéder à Android Studio pour obtenir ces données sur votre téléphone mobile.
Fmp + android
Je crée un nouveau projet. Avec la plate-forme, un
cadre pour travailler avec elle est distribué. Tirez le framework dans le fichier de projet → module d'importation → * .aar

Dans le projet, je déclare un certain nombre de constantes dans lesquelles je colle l'adresse du serveur, ainsi que le nom de l'environnement que j'ai inventé, le nom du projet, login, mot de passe, nom de ressource du FMP:
private static final String MY_URL = "http://mobilefmp.dev.fs.world"; private static final VersionAPI MY_VERSION_API = VersionAPI.V_1; private static final String MY_ENVIRONMENT = "Leonid_environment"; private static final String MY_PROJECT = "Leonid_project"; private static final String MY_VERSION = "v1"; private static final String MY_LOGIN = "Leonid"; private static final String MY_PASSWORD = "123123"; private static final String MY_RESOURCE = "fruits_get_by_color_for_android";
Veuillez noter que nous nous référons spécifiquement au FMP, et non directement à PostgreSQL. Ensuite, créez un objet HyperHive et remplissez les variables déclarées:
hyperHive = new HyperHiveState(getApplicationContext()) .setHostWithSchema(MY_URL) .setApiVersion(MY_VERSION_API) .setEnvironmentSlug(MY_ENVIRONMENT) .setProjectSlug(MY_PROJECT) .setVersionProject(MY_VERSION) .buildHyperHive();
Ensuite, vous devez effectuer une autorisation. Pour ce faire, transmettez le nom d'utilisateur et le mot de passe à la méthode auth ():
boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
Lorsque true, vous pouvez interroger le contenu de la table, ce que nous ferons. Dans l'objet tableStreamCallParams, nous transmettons le paramètre fruit_color sous la forme de json et saisissons la valeur jaune pour celui-ci. Permettez-moi de vous rappeler que nous avons créé une table de fruits et créé une procédure dans PostreSQL qui prend un paramètre de couleur en entrée. Cela était nécessaire pour entrer ce paramètre sur l'appareil:
TableStreamCallParams tableStreamCallParams = new TableStreamCallParams(); String data = "{\"fruit_color\": \"yellow\"}"; tableStreamCallParams.setData(data); String status = hyperHive.requestAPI.tableStream(MY_RESOURCE, tableStreamCallParams).execute();
Après la demande, nous nous tournons vers le serveur FMP. Le serveur FMP accède au serveur PostgreSQL. En conséquence, nous devrions obtenir une liste de fruits jaunes:

Les chaînes sont diffusées dans la base de données SQLite. Dans ce cas, les couleurs jaunes n'étaient que banane et citron. La vitesse de téléchargement des données mises en cache côté FMF est d'environ 10 000 lignes par seconde à une vitesse Internet normale.
Toutes les étapes que j'ai décrites peuvent être lues dans la
documentation . Il existe également des informations sur la connexion à iOs et à d'autres systèmes d'exploitation.
Je donne le
code d'activation complet .
J'ai fait une demande à partir du thread principal et je n'ai pas traité d'erreurs pour réduire la quantité de code.
FMP fonctionnel
La fonctionnalité FMF ne se limite pas à cela. Vous pouvez créer une procédure côté serveur de la base de données non seulement pour la réception, mais également pour la création de nouvelles lignes en fonction des valeurs transmises. Vous pouvez transmettre des tableaux de valeurs. Les limitations se trouvent uniquement à l'intérieur de la base de données elle-même.
Je vais passer en revue les grandes étapes des principales fonctionnalités du FMP:- mettre en cache les données côté plateforme et recevoir un delta (pas la table entière, mais seulement les lignes modifiées)
- journalisation des actions des utilisateurs
- contrôle d'accès par utilisateur, groupe d'utilisateurs, identifiant d'appareil
- authentification via LDAP
- intégration avec SMTP, Citrix XenMobile, Sentry
- signature de données dans l'autorité de certification CryptoPro
- le stockage de fichiers n'est pas du côté de la FMF
- base de données locale côté FMP (vous ne pouvez pas vous connecter à une base de données tierce, mais créer une base de données localement, comme dans Firebase)
- Connecteurs pour Firebase Cloud Messaging, Apple Push Notification et Windows Push Notification. Créer des listes de diffusion et des modèles de notification push
Il existe des cadres pour:- android
- iOS
- UWP
- WinCE
- Sailfish, Aurora (voilier russe)
Il existe des connecteurs pour:Avantages et inconvénients de FMP
Je vais donner les avantages et les inconvénients que je vois de mon point de vue. Selon les spécificités et la taille du projet, je pense que vous ne serez pas d'accord avec tout.
Avantages:- sans écrire le code du serveur, vous pouvez vous connecter au serveur de base de données
- un grand nombre de connecteurs vers d'autres sources
- la présence de frameworks pour la plupart des systèmes d'exploitation mobiles
- Service d'assistance russophone
Inconvénients:- coût
- orientation client commerciale
- aucun essai ni période gratuits
Conclusions
La comparaison de la plate-forme FMF avec la base de données en temps réel Firebase a été «farfelue», car Je voulais au moins comparer quelque chose avec les développeurs Android et iOs familiers. En fait, le PMF a une fonctionnalité et un objectif légèrement différents. Parmi les concurrents figurent SAP Mobile Platform, la première plate-forme mobile IBM, Optimum CDC.
En conclusion, je tiens Ă dire qu'il vaut la peine de prĂŞter attention Ă la FMF si vous avez:
- client assez important prêt à payer pour le système
- qui ne veut pas écrire une couche entre l'appareil mobile et le serveur de base de données
- qui contient une grande quantité de données, comme un entrepôt de marchandises
- pour lesquels l'utilisation de logiciels russes est fondamentale
- pour lequel la protection des données joue un rôle important