Dans ce didacticiel, je vais continuer à partir de mon didacticiel précédent sur Realm Mobile Database pour iOS, où nous avons découvert Realm Mobile Database, une alternative de base de données sur appareil à Core Data. Realm a également développé une solution côté serveur tout aussi élégante et transparente qui synchronise nos données entre notre appareil et le cloud en temps réel. Cela fait partie de la solution phare de Realm, Realm Mobile Platform.
Dans cet article, nous installerons un serveur d’objets Realm et améliorerons l’application RealmDo que nous avons lancée dans l’article précédent.
Qu’est-ce que la plate-forme mobile Realm?
Annoncé début 2017, Realm Mobile Platform 1.0 représente les efforts de l’entreprise pour étendre sa base de données sur le cloud et fournir un support pour des fonctionnalités plus collaboratives telles que la messagerie en direct, les expériences hors ligne d’abord et, plus impressionnant, multiplateforme. Grâce au nouveau Realm Object Server, Realm Mobile Platform prend le relais et gère les complexités du marshaling et de la synchronisation des données entre la base de données Realm et le serveur.
Realm Mobile Platform sert d’intermédiaire entre le Realm Object Server et votre Realm Mobile Database. Lorsque vous conservez les données localement sur votre appareil, elles sont transmises en temps réel, mais avec la possibilité de mettre en file d’attente et de différer la synchronisation hors ligne.

Outre la synchronisation des données (ou Realms) entre les périphériques, Realm Object Server fournit également des services d’authentification et de contrôle d’accès (gestion des autorisations), ainsi que traitement des événements sans serveur via les fonctions de royaume. Apprenons-en plus sur ce Plateforme mobile de royaume
fournit. Notez que certaines de ces fonctionnalités ne sont disponibles que pour les entreprises clientes.
Fonctions de royaume
Fonction de royaumes
agir comme le couche logique d’application, optimisé par JavaScript, vous permettant d’exécuter une logique personnalisée sans serveur dédié et de répondre aux changements sur un ou tous les domaines (bases de données).
Grâce au tableau de bord des royaumes, vous pouvez créer, démarrer, arrêter et supprimer des fonctions qui répondent aux changements sur un ou plusieurs royaumes, avec sans serveur Événement Handling. Vous créez des fonctions à l’aide de JavaScript et Node.js, et les fonctions sont appelées par le Realm Object Server API d’écoute globale.

Actuellement, l’édition développeur de Realm Mobile Platform est limitée à trois fonctions actives à un moment donné, bien que vous puissiez avoir plus de fonctions inactives.
Les fonctions de domaine sortent du cadre de ce didacticiel, mais valent certainement la peine d’être lues.
Tableau de bord du royaume
le Royaume Dashboarré
est livré avec l’installation de Realm Object Server, comme nous l’illustrerons bientôt, fournissant un outil pratique pour gérer vos Realms, gérer les utilisateurs et les fonctions, et avoir une idée du fonctionnement de votre serveur d’applications.
Le tableau de bord basé sur le navigateur comprend les sections suivantes:
- Tableau de bord fournit une impulsion en temps réel des débits de données entrants et sortants, des connexions ouvertes et des royaumes ouverts.
-
Royaumes
fournit des chemins, des autorisations et des propriétaires de chacun des royaumes, et vous pouvez parcourir chaque royaume pour afficher les modèles et le contenu de chaque royaume. -
Utilisateurs
fournit des informations et des services de gestion à tous les utilisateurs, y compris l’octroi et la suppression d’autorisations administratives. -
Les fonctions
est l’endroit où vous créez et gérez vos fonctions de domaine. -
Journaux
est l’endroit où vous pouvez afficher les journaux système du serveur d’objets.
Le tableau de bord est normalement accessible via le http: // localhost: 9080 chemin localement, ou là où se trouve votre machine hébergée.
Connexion au royaume
Il s’agit d’une fonctionnalité réservée aux entreprises, bien que très utile pour certaines entreprises. Connexion au royaume est un conduit qui expose les systèmes hérités de l’entreprise à la plate-forme via une passerelle API moderne, ce qui permet aux développeurs de se connecter plus facilement à des sources de données auparavant obscurcies.
L’édition Entreprise de Realm Object Server propose une API d’adaptateur basée sur Node.js qui vous permet d’accéder à toutes les opérations et données de bas niveau Object Server. Cela peut être utilisé pour permettre à un royaume synchronisé d’interagir avec une base de données héritée existante telle que PostgreSQL: le royaume sera également synchronisé avec la base de données externe en temps réel. Les applications clientes peuvent utiliser l’API Realm Mobile Database et bénéficier des avantages de l’utilisation d’objets natifs en temps réel.
Niveaux de service
L’entreprise propose actuellement trois niveaux de service. le Édition développeur est l’offre gratuite pour les petites équipes, où les utilisateurs bénéficieraient de fonctionnalités telles que la synchronisation automatique des données en temps réel à l’aide d’objets en direct. le Edition Professionnelle ajoute des fonctionnalités avancées telles que la gestion des événements et l’accès côté serveur.

Répondant aux exigences des équipes de taille moyenne, le Edition Professionnelle est un bon compromis sans les frais généraux de la Edition pour entreprise. Les coûts sont ajustés à votre échelle, offrant un chemin de migration facile à partir du niveau gratuit.
L’édition professionnelle commence à 1 500 USD par mois et l’édition Enterprise est proposée à un prix personnalisé en fonction du cas d’utilisation.
Votre application First Realm Server
Connaissance supposée
Ce didacticiel suppose que vous avez une connaissance pratique de Swift, mais aucune base de données ou connaissance préalable de la base de données n’est nécessaire. De plus, il est supposé que vous avez suivi le didacticiel précédent sur Realm Mobile Database pour iOS et que vous avez terminé les exercices du didacticiel pour créer le RealmDo app. Nous allons continuer là où nous nous sommes arrêtés dans cet article et ajouter des fonctionnalités côté serveur à notre application, Royaumeo.
En plus de Realm, nous utiliserons les parties suivantes d’iOS:
- UIKit: pour démontrer visuellement nos données
- CocoaPods: une bibliothèque de dépendances tierce qui sera utilisée pour installer Realm Mobile Database
Objectifs de ce didacticiel
À la fin de ce didacticiel, vous aurez continué à développer vos connaissances sur Realm et à améliorer l’application simple à faire écrite en Swift, en conservant les données à distance sur le serveur via Realm Mobile Platform. Vous aurez la possibilité de créer une application à faire fonctionnant entièrement alimentée par Realm avec un back-end côté serveur, et en cours de route, vous apprendrez les concepts suivants:
- configuration locale du serveur d’objets Realm
- synchronisation du modèle ‘live-object’ avec le Realm Object Server
- surveillance des données via le tableau de bord
Vous pouvez télécharger le code source complet à partir du tutoriel référentiel GitHub.
Configurer le serveur d’objets de royaume
Avant de frapper à nouveau Xcode pour travailler notre projet, nous devrons configurer et faire fonctionner notre Realm Object Server.
Téléchargez le bundl macOSe, en supposant que vous installerez le serveur Object Server localement sur votre Mac. Si vous prévoyez de l’installer sur un serveur Linux, reportez-vous à la documentation Realm.
Une fois le téléchargement terminé, dans le terminal, accédez à votre Téléchargements / realm-mobile-platform
dossier et démarrez le serveur en tapant:
start-object-server.command
Votre terminal devrait maintenant indiquer que votre serveur démarre et votre navigateur s’ouvrira automatiquement pour lancer le tableau de bord du royaume, à http: // localhost: 9080.
Vous serez invité à vous inscrire en tant que nouvel utilisateur et à fournir un e-mail et un mot de passe la première fois que vous exécuterez le serveur. Veuillez continuer et terminer le processus d’inscription et mémoriser vos informations d’identification, car vous les utiliserez plus tard.

Gardez cette fenêtre de navigateur ouverte car nous y reviendrons plus tard lorsque nous exécuterons notre application complète, pour observer comment les données sont stockées sur le serveur.
Rendre notre projet synchronisable
Nous sommes maintenant prêts à commencer le codage, alors lancez le projet Xcode sur lequel nous travaillions dans le didacticiel précédent, car nous allons continuer à construire à partir de là, dans le contrôleur de vue.
La première chose que nous ferons est de modifier notre remindersList variable globale pour être mutable, nous devrons donc la changer à partir d’un RLMResults objecter à un List type. Nous ajouterons également un nouveau type d’objet, NotificationToken, que nous utiliserons pour nous avertir en cas de modification de l’objet de données de domaine.
NotificationToken
n’est pas un objet spécifique au serveur, et nous aurions pu l’utiliser dans notre tutoriel précédent, mais il est certainement utile lorsque nous voulons détecter des changements en temps réel à distance ou localement et réagir en conséquence.
var notificationToken: Notification? var remindersList = List<Reminder>()
Dans le viewDidLoad()
méthode, nous intégrerons un SyncUser.logIn()
méthode, qui est le mécanisme d’authentification de Realm, acceptant un nom d’utilisateur, un mot de passe et l’emplacement du serveur. C’est un sujet intéressant en soi, qui dépasse le cadre de ce didacticiel, mais pour l’instant, nous allons simplement coder en dur dans les informations d’identification que nous avons définies lorsque nous avons enregistré notre Realm Object Server précédemment.
Nous transmettons également l’emplacement du serveur, ainsi que le nom du domaine (base de données) que nous voulons utiliser, qui est http://127.0.0.1:9080. Dans la ligne de configuration du domaine, en plus de l’emplacement du serveur, vous devez également définir le nom du domaine, qui est realmDoApp aux fins de cette démonstration. Allez-y et remplacez votre viewDidLoad() avec ce qui suit:
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
// You should make the username and password user-input supported
SyncUser.logIn(with: .usernamePassword(username: "[email protected]", password: "test123", register: false), server: URL(string: "http://127.0.0.1:9080")!) { user, error in
guard let user = user else {
fatalError(String(describing: error))
}
DispatchQueue.main.async(execute: {
// Open Realm
let configuration = Realm.Configuration(
syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/realmDoApp")!)
)
self.realm = try! Realm(configuration: configuration)
// Set realm notification block
self.notificationToken = self.realm.addNotificationBlock{ _ in
self.updateRemindersList()
}
self.updateRemindersList()
})
}
}
Dans une application réelle, nous obtiendrions les informations d’identification de l’utilisateur avec un formulaire. Dans le code ci-dessus, cependant, nous codons en dur nos informations d’identification et définissons un objet utilisateur une fois la connexion réussie. Sinon, l’application échouera avec une erreur fatale.
Enfin, le code ci-dessus utilise un bloc synchrone pour associer l’instance de domaine au serveur d’objets de domaine (au lieu de la base de données sur l’appareil). C’est la ligne distinctive qui rend cette application basée sur le cloud.
A la fin, j’initialise le notificationToken
pour appeler une méthode, updateRemindersList(), chaque fois qu’il y a un changement dans les données du domaine (localement ou à distance).
func updateRemindersList(){
if self.remindersList.realm == nil{
self.remindersList = self.realm.objects(Reminder.self).reduce(List<Reminder>()) { (list, element) -> List<Reminder> in
list.append(element)
return list
}
}
self.tableView.reloadData()
}
Le bloc de code ci-dessus convertit également le self.realm.objects() il reçoit du serveur, afin que nous puissions associer les résultats à notre nouveau
List-typé RemindersList ensemble d’objets.
Remarquez à quel point il est ambigu que nous obtenions les données de notre base de données de domaine ou à distance. C’est ce qui rend Realm formidable: vous n’avez pas à vous soucier de la synchronisation localement ou à distance!
Et c’est tout: tout le code nécessaire pour que l’application fonctionne avec Realm Object Server. Une dernière chose est nécessaire avant de créer et d’exécuter l’application. Ouvrez le projet info.plist comme Code source en cliquant avec le bouton droit sur le fichier. Ajoutez ce qui suit pour permettre aux demandes non TLS de fonctionner.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Maintenant, allez-y et créez, puis exécutez l’application, et ajoutez quelques nouveaux rappels. Nous allons maintenant passer au navigateur, où nous pouvons voir le serveur en cours d’exécution et accéder à son tableau de bord pour observer le remplissage des données dans un nouveau domaine.
Surveillance des données via le tableau de bord
Nous allons maintenant surveiller et superviser les données via le tableau de bord que nous avons lancé lorsque nous avons démarré Realm Object Server. En exécutant l’application et le tableau de bord côte à côte, vous pouvez voir que lorsque vous ajoutez un élément, il apparaît immédiatement sur le tableau de bord. La même chose se produit lorsque vous supprimez un élément, ce qui montre qu’il est bien en temps réel.

Surveillance des données via le navigateur de domaine
Vous pouvez également utiliser Realm Browser pour surveiller les données de votre application. Dans le didacticiel précédent, nous avons utilisé Realm Browser pour afficher nos données sur l’appareil. Nous pouvons également l’utiliser pour afficher les données de Realm Object Server.
Lancez l’application, sélectionnez Ouvrir l’URL de synchronisation, et saisissez l’emplacement de votre domaine de serveur d’objets distant (par exemple domaine: //127.0.0.1: 9080 / 8e090f0fa57366808be106e004800a0f / realmDoApp)
avec votre nom d’utilisateur et votre e-mail. Vous devriez obtenir la vue familière que nous avons vue dans le dernier tutoriel, mais cette fois, nous nous connectons à un back-end en temps réel!
Allez-y et modifiez vos propriétés là-bas, et vous devriez voir cela reflété dans le tableau de bord ainsi que dans votre application.

Conclusion et prochaines étapes
Dans ce didacticiel, vous avez appris à étendre une application basée sur Realm Mobile Database, qui est déjà très puissante, avec une solution de serveur principal. Le tout avec seulement quelques lignes de code.
En plus du téléchargement et de l’installation de Realm Object Server, nous avons amélioré notre application de rappels simple avec les fonctionnalités suivantes:
- un mécanisme d’authentification simple
- synchronisation back-end en temps réel
Enfin, nous avons vu comment surveiller les données en direct via le tableau de bord, ainsi que via le navigateur d’objets Realm familier.
Le principe des plates-formes telles que Realm Object Server est de permettre aux développeurs de se concentrer sur leur code côté client et de ne pas se soucier de la complexité de la maintenance d’un serveur principal.
Nous venons de gratter la surface dans cet article. Il existe de nombreuses documentations et concepts avec Realm Object Server, notamment l’utilisation de fonctions permettant le déclenchement de logique sans serveur.
Revenez ici pour plus de publications sur les services back-end pour le développement d’applications mobiles.
Soutenez notre effort ❤️
Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.





















