Connectez un appareil mobile à la base de données sans écrire le code du serveur

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 Firebase


Des 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

Source: https://habr.com/ru/post/fr463437/


All Articles