哈Ha! 我想分享我使用
Foresight移动平台的经验。
如果您面临着无需编写自己的服务器即可远程存储数据的任务,那么想到的第一件事就是
Firebase Realtime Database工具。 大多数读者都知道有什么问题,但其余的我会解释。 使用Firebase数据库,您可以NoSql形式远程存储数据。
图片来自firebase从使用优势:- 谷歌支持
- 无需在基础端编写任何代码
- 快速工作
- 释放最多5GB
- 通过大量授权提供程序与Firebase身份验证服务集成
- 支持android,ios,Unity等
- 实时同步:更新数据库中的数据时,它们将在客户端中更新
缺点:- 当超出空间和服务器负载的既定限制时,您必须支付
- 无法自定义存储结构
FMP + PostgreSQL
现在,我想告诉您一个我必须使用的替代工具。
我会从远方去。 我在某个地方有一台带有数据库的PostreSQL服务器。 在数据库中,我有一个包含水果的表:

什么是PostreSQL,如何使用它可以在
此处阅读。
我的任务是以最少的代码编写尽快在电话上获取此表,并确保每个阶段的安全性。
这是
pgAdmin4中的my_table_fruits表:

接下来,我在pgAdmin4树中找到过程。 我正在编写自己的获取表的过程:

该过程将被称为fruits_get_by_color,并将从my_table_fruits表中为我提供某种颜色的水果。
之后,我切换到移动平台的Foresight服务器(以下称为FMF)。 如何部署平台以及您需要什么可以在
文档中找到。 FMF是具有连接到数据库服务器的连接器的服务器。 它也可以连接到我们需要的PostgreSQL。 无需为此编写代码。 我需要使用的是通过浏览器管理面板。 输入服务器,数据库的必要地址。 管理面板具有设置和环境树:

您还可以在文档中阅读有关设置的更多信息。
不幸的是,FMF没有任何试用版或免费期限。 而且,FMF部署在客户的安全基础架构中。 因此,我无法提供服务器链接以进行尝试。 但是,要了解工作的实质,以下信息就足够了。
我在环境树中创建一个新环境,例如,我将其称为Leonid_environment。 在环境内部,我创建一个项目,例如Leonid_project。 我进入该项目并在其中创建数据源,在本例中为PostgreSQL。 我输入存储表的服务器和数据库参数:

我进入数据源,然后单击“导入”。 我在源名称中输入我在PostgreSQL中引入的过程的名称,在本例中为Fruits_get_by_color。 对于移动客户端,您可以使用其他名称,尽管不一定。 我将其命名为fruits_get_by_color_for_android:

单击“导入”按钮后,FMF平台将“查看”我们的过程以及必须在此处转移的参数。

特别是,她将看到我们必须传递fruit_color参数:

之后,转到“ API用户”选项卡并创建一个用户。 创建了一个具有Leonid用户名和密码123123的用户:

从这一刻起,您可以转到Android Studio在手机上获取此数据。
FMP + Android
我正在创建一个新项目。 与该平台一起,分发了使用该平台的
框架 。 将框架拉入项目文件→导入模块→* .aar

在项目中,我声明了一些常量,可以在其中插入服务器地址,以及发明的环境名称,项目名称,登录名,密码和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";
请注意,我们专门指的是FMP,而不是直接指PostgreSQL。 接下来,创建一个HyperHive对象并填充声明的变量:
hyperHive = new HyperHiveState(getApplicationContext()) .setHostWithSchema(MY_URL) .setApiVersion(MY_VERSION_API) .setEnvironmentSlug(MY_ENVIRONMENT) .setProjectSlug(MY_PROJECT) .setVersionProject(MY_VERSION) .buildHyperHive();
然后,您需要执行授权。 为此,请将用户名和密码传递给auth()方法:
boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
如果为true,则可以查询表的内容,我们将这样做。 在tableStreamCallParams对象中,我们以json的形式传递fruit_color参数,并为其输入黄色值。 让我提醒您,我们创建了一个水果表并在PostreSQL中创建了一个将颜色参数作为输入的过程。 这是在设备上输入此参数所必需的:
TableStreamCallParams tableStreamCallParams = new TableStreamCallParams(); String data = "{\"fruit_color\": \"yellow\"}"; tableStreamCallParams.setData(data); String status = hyperHive.requestAPI.tableStream(MY_RESOURCE, tableStreamCallParams).execute();
请求后,我们转到FMP服务器。 FMP服务器访问PostgreSQL服务器。 结果,我们应该获得黄色水果的列表:

字符串流进SQLite数据库。 在这种情况下,黄色只是香蕉和柠檬。 在正常Internet速度下,在FMF侧上缓存数据的下载速度约为每秒10,000行。
我描述的所有步骤都可以在
文档中阅读。 此外,还有有关连接到iO和其他操作系统的信息。
我给出了
完整的激活码 。
我从主线程发出了一个请求,但没有处理错误以减少代码量。
功能性FMP
FMF功能不限于此。 您可以在数据库的服务器端创建一个过程,不仅用于接收,还可以根据传递的值来创建新行。 您可以传递值数组。 限制仅在数据库本身内部。
我将在FMP的主要功能中进行广泛的步骤:- 在平台端缓存数据并接收增量(不是整个表,而只是更改的行)
- 记录用户操作
- 用户,用户组,设备ID的访问控制
- 通过LDAP进行身份验证
- 与SMTP,Citrix XenMobile,Sentry集成
- CryptoPro证书颁发机构中的数据签名
- 文件存储不是FMF的一面
- FMP端的本地数据库(您不能连接到第三方数据库,而只能在Firebase中本地创建数据库)
- Firebase Cloud Messaging,Apple Push Notification和Windows Push Notification的连接器。 创建邮件列表和推送通知模板
有以下框架:- 安卓
- ios
- 超人
- WinCE的
- 旗鱼,极光(俄罗斯旗鱼)
有以下连接器:- 汁液
- PostgreSQL的
- 甲骨文
- 网络资源
- SOAP(包括1C)
- 前瞻分析平台
FMP的优缺点
我将给出从我的观点来看的利弊。 根据项目的具体情况和规模,我认为您不会同意所有事情。
优点:- 无需编写服务器代码,就可以连接到数据库服务器
- 大量连接到其他来源的连接器
- 大多数移动操作系统的框架的存在
- 俄语支持服务
缺点:结论
FMF平台与Firebase实时数据库的比较“牵强”,因为 我至少想与熟悉的android和iOs开发人员进行比较。 实际上,PMF的功能和用途略有不同。 竞争对手包括SAP移动平台,IBM第一个移动平台Optimum CDC。
最后,我想说的是,如果您具备以下条件,则值得关注FMF:
- 相当大的客户愿意为系统付费
- 谁不想在移动设备和数据库服务器之间写一个层
- 其中包含大量数据,例如货物仓库
- 为此,必须使用俄语软件
- 数据保护在其中起着重要作用