Halo, Habr! Saya ingin berbagi pengalaman menggunakan
platform seluler Foresight .
Jika Anda dihadapkan dengan tugas menyimpan data dari jarak jauh tanpa menulis server Anda sendiri, hal pertama yang terlintas dalam pikiran adalah alat
Firebase Realtime Database . Sebagian besar pembaca tahu apa yang dipertaruhkan, tetapi untuk sisanya saya akan jelaskan. Menggunakan Firebase Database, Anda dapat menyimpan data dari jarak jauh dalam bentuk NoSql.
Gambar dari firebaseDari keuntungan menggunakan:- didukung oleh google
- tidak perlu menulis kode apa pun, di sisi dasar
- kerja cepat
- membebaskan hingga 5GB
- integrasi dengan layanan otentikasi Firebase dengan sejumlah besar penyedia otorisasi
- dukungan untuk android, iOs, unity, dll.
- disinkronkan secara real time: ketika memperbarui data dalam database, mereka diperbarui di klien
Dari minus:- ketika melebihi batas yang ditentukan untuk ruang dan beban server, Anda harus membayar
- tidak ada cara untuk menyesuaikan struktur penyimpanan
FMP + PostgreSQL
Sekarang saya ingin memberi tahu Anda tentang alat alternatif yang harus saya gunakan.
Saya akan pergi dari jauh. Di suatu tempat saya memiliki server PostreSQL yang dimunculkan dengan database. Dalam database, saya punya tabel dengan buah-buahan:

Apa itu PostreSQL cara bekerja dengannya dapat dibaca di
sini .
Tugas saya adalah mendapatkan tabel ini di telepon secepat mungkin dengan penulisan kode paling sedikit dan memastikan keamanan di setiap tahap.
Berikut adalah tabel my_table_fruits di
pgAdmin4 :

Selanjutnya, saya menemukan prosedur di pohon pgAdmin4. Saya menulis prosedur sendiri untuk mendapatkan meja:

Prosedur ini akan disebut fruits_get_by_color dan akan memberi saya buah dengan warna tertentu dari tabel my_table_fruits saya.
Setelah itu, saya beralih ke server Foresight platform mobile (selanjutnya disebut FMF). Bagaimana cara menyebarkan platform dan apa yang Anda butuhkan dapat ditemukan di
dokumentasi . FMF adalah server yang memiliki konektor ke server basis data. Itu juga dapat terhubung ke PostgreSQL yang kita butuhkan. Tidak perlu menulis kode untuk ini. Yang harus saya kerjakan adalah panel admin melalui browser. Masukkan alamat server, basis data yang diperlukan. Panel admin memiliki pengaturan dan pohon lingkungan:

Anda juga dapat membaca lebih lanjut tentang pengaturan dalam dokumentasi.
Sayangnya, FMF tidak memiliki versi percobaan atau periode gratis. Selain itu, FMF digunakan dalam infrastruktur yang aman bagi pelanggan. Karenanya, saya tidak dapat memberikan tautan ke server untuk mencoba. Tetapi, untuk memahami esensi pekerjaan, informasi berikut ini cukup memadai.
Saya membuat lingkungan baru di pohon lingkungan, misalnya, saya akan menyebutnya Leonid_environment. Di dalam lingkungan, saya membuat proyek, misalnya, Leonid_project. Saya masuk ke proyek dan membuat sumber data di sana, dalam kasus kami PostgreSQL. Saya memasukkan parameter server dan basis data tempat tabel saya disimpan:

Saya masuk ke dalam sumber data dan klik "Impor". Saya memasukkan nama sumber nama prosedur yang saya perkenalkan di PostgreSQL, dalam hal ini fruits_get_by_color. Untuk klien seluler, Anda dapat membuat nama yang berbeda, meskipun tidak harus. Saya akan menamainya fruits_get_by_color_for_android:

Setelah mengklik tombol "Impor", platform FMF akan "melihat" prosedur kami dan parameter yang harus kami transfer ke sana.

Secara khusus, dia akan melihat bahwa kita harus melewati parameter fruit_color:

Setelah itu, buka tab "Pengguna API" dan buat pengguna. Membuat pengguna dengan nama pengguna dan kata sandi Leonid 123123:

Mulai saat ini, Anda dapat pergi ke Android Studio untuk mendapatkan data ini di ponsel Anda.
Fmp + android
Saya membuat proyek baru. Bersama dengan platform,
kerangka kerja untuk bekerja dengannya didistribusikan. Tarik kerangka kerja ke dalam file proyek → modul impor → * .aar

Dalam proyek ini, saya mendeklarasikan sejumlah konstanta di mana saya menempelkan alamat server, serta nama lingkungan yang saya temukan, nama proyek, login, kata sandi, nama sumber daya dari 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";
Harap dicatat bahwa kami merujuk secara khusus ke FMP, dan tidak langsung ke PostgreSQL. Selanjutnya, buat objek HyperHive dan isi variabel yang dideklarasikan:
hyperHive = new HyperHiveState(getApplicationContext()) .setHostWithSchema(MY_URL) .setApiVersion(MY_VERSION_API) .setEnvironmentSlug(MY_ENVIRONMENT) .setProjectSlug(MY_PROJECT) .setVersionProject(MY_VERSION) .buildHyperHive();
Maka Anda perlu melakukan otorisasi. Untuk melakukan ini, berikan nama pengguna dan kata sandi ke metode auth ():
boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
Jika benar, Anda dapat menanyakan isi tabel, yang akan kami lakukan. Dalam objek tableStreamCallParams, kita melewatkan parameter fruit_color dalam bentuk json dan masukkan nilai kuning untuknya. Biarkan saya mengingatkan Anda bahwa kami telah membuat tabel buah dan menciptakan prosedur dalam PostreSQL yang menggunakan parameter warna sebagai input. Ini diperlukan untuk memasukkan parameter ini di perangkat:
TableStreamCallParams tableStreamCallParams = new TableStreamCallParams(); String data = "{\"fruit_color\": \"yellow\"}"; tableStreamCallParams.setData(data); String status = hyperHive.requestAPI.tableStream(MY_RESOURCE, tableStreamCallParams).execute();
Setelah permintaan, kami beralih ke server FMP. Server FMP mengakses server PostgreSQL. Sebagai hasilnya, kita harus mendapatkan daftar buah kuning:

String mengalir ke database SQLite. Dalam hal ini, warna kuning hanya pisang dan lemon. Kecepatan unduhan data yang di-cache di sisi FMF adalah sekitar 10.000 baris per detik pada kecepatan Internet normal.
Semua langkah yang saya jelaskan dapat dibaca dalam
dokumentasi . Juga ada informasi tentang menghubungkan ke iOs dan sistem operasi lain.
Saya memberikan
kode aktivasi lengkap .
Saya membuat permintaan dari utas utama dan tidak memproses kesalahan untuk mengurangi jumlah kode.
FMP fungsional
Fungsionalitas FMF tidak terbatas pada ini. Anda dapat membuat prosedur di sisi server database tidak hanya untuk menerima, tetapi juga untuk membuat baris baru tergantung pada nilai yang diteruskan. Anda bisa melewatkan array nilai. Keterbatasan hanya di dalam database itu sendiri.
Saya akan melalui langkah-langkah luas dalam fungsi utama FMP:- caching data di sisi platform dan menerima delta (bukan seluruh tabel, tetapi hanya mengubah baris)
- mencatat tindakan pengguna
- kontrol akses oleh pengguna, grup pengguna, id perangkat
- otentikasi melalui LDAP
- integrasi dengan SMTP, Citrix XenMobile, Sentry
- tanda tangan data dalam otoritas sertifikasi CryptoPro
- penyimpanan file bukan sisi FMF
- basis data lokal di sisi FMP (Anda tidak bisa terhubung ke basis data pihak ketiga, tetapi membuat basis data secara lokal, seperti pada Firebase)
- Konektor untuk Firebase Cloud Messaging, Apple Push Notification, dan Windows Push Notification. Buat milis dan dorong templat pemberitahuan
Ada kerangka kerja untuk:- android
- ios
- UWP
- Menang
- Sailfish, Aurora (Russian sailfish)
Ada konektor untuk:Pro dan Kontra FMP
Saya akan memberikan pro dan kontra yang saya lihat dari sudut pandang saya. Tergantung pada spesifikasi dan ukuran proyek, saya pikir Anda tidak akan setuju dengan semuanya.
Pro:- tanpa menulis kode server, Anda dapat terhubung ke server database
- sejumlah besar konektor ke sumber lain
- keberadaan kerangka kerja untuk sebagian besar sistem operasi seluler
- Layanan dukungan berbahasa Rusia
Cons:- biaya
- orientasi pelanggan komersial
- tidak ada uji coba atau periode gratis
Kesimpulan
Perbandingan platform FMF dengan Firebase Realtime Database "tidak masuk akal", karena Saya ingin setidaknya membandingkan sesuatu dengan pengembang Android dan iOs yang sudah dikenal. Faktanya, PMF memiliki fungsi dan tujuan yang sedikit berbeda. Di antara para pesaing adalah SAP Mobile Platform, platform mobile pertama IBM, Optimum CDC.
Sebagai kesimpulan, saya ingin mengatakan bahwa ada baiknya memperhatikan FMF jika Anda memiliki:
- pelanggan yang agak besar bersedia membayar untuk sistem
- yang tidak ingin menulis lapisan antara perangkat seluler dan server basis data
- yang memiliki sejumlah besar data, seperti gudang barang
- di mana penggunaan perangkat lunak Rusia sangat mendasar
- di mana perlindungan data memainkan peran penting