前言:
将近一年的等待,带着重要更新的 FileMaker Pro 16 预览版终于送到了部分 FBA 手中。我们将通过本系列上中下三篇简介评测,方便大家了解此次升级带来的变化,为更好的利用 FileMaker Pro 16 强大灵活的特性进行各类业务开发做准备。
在评测上篇中,我们将对此次升级进行概述,了解 FileMaker Pro 16 如何以超过50多处的改进变得更加安全、易用、开放和高效。上篇介绍中,我们着重展示对最终用户带来直接影响的特性,对那些需要通过进开发工具使用的特性会大概提及,留到后面的篇幅中详细介绍。
评测中篇里,我们将着重为 FileMaker 开发者进行介绍,看看 FileMaker Pro 16 如何丰富开发者工具箱,为界面布局、权限控制、数据交换提供更好的支持的那些新增特性。对于拥有 PHP 或其他开发开发经验的朋友,将在这部分看到一些熟悉的身影,诸如遵循 RFC 标准的 Base64Enode 编码函数,以及魔力附身支持 cURL 选项的 URL 访问函数。这些新引入的成员,将使得基于 FileMaker Pro 16 的开发变得更加强大和高效。
在评测下篇,我们将继续延伸开发者视角,了解 FileMaker Pro 16 在开放性及整合方面带来一些重大变化。首先是 JSON 系列函数的引入,支持解析、字符编解码、加密等操作。现在,FileMaker 终于有了对接 REST API 等 Web 服务的原生方法支持。其次,FileMaker Server 16 引入的 Data API 接口是另一大重要特性,在 ODBC、XML 模式之外,我们可以透过这套遵循 REST 标准的接口实现更加复杂多样的异构整合。最后,FileMaker Server 16 还支持通过 OAuth 协议与第三方账户整合,开发者可以基于 Amazon、Google 以及 Microsoft 这些 OAuth 识别提供商进行用户的账户认证,这对于已经基于 AWS、Azure 或 Google 部署业务的系统整合来说尤其具有价值。
我们希望通过这三篇评测的介绍,让最终用户和开发者能了解 FileMaker Pro 16 所有新增特性带来的变化,意识到 FileMaker 这一快速开发平台再次带来的价值,我们也希望通过对一些特性的着重介绍,能为读者去灵活的创造性地使用新特性带来启发。如此。
评测上篇
我们将对此次升级进行概述,了解 FileMaker Pro 16 如何以超过50多处的改进变得更加安全、易用、开放和高效。上篇介绍中,我们着重展示对最终用户带来直接影响的特性,对那些需要通过进开发工具使用的特性会大概提及,留到后面的篇幅中详细介绍。
更安全
安全性在应用系统中的重要性不言而喻。在这一版升级中,FileMaker Pro 一如既往的进行了诸多改进。交互锁图标(Interactive lock icons)、第三方 OAuth 认证账户(OAuth identity provider accounts)、扩展权限(extended privilege)细化以及一系列加密解密相关的新函数被引入。我们将在中篇和下篇中对扩展权限(extended privilege)及OAuth 身份提供者账户(OAuth identity provider accounts)进行详细介绍。
交互锁图标
一个未加密服务器的提示信息
在 FileMaker Pro 16 下,当您打开共享解决方案时,窗口的右上角将会显示一个锁状图标,点击这个图标就可以查看对应服务器的加密状态或信息,这对于我们判断连接的安全性非常有用。
扩展权限
现在,我们能够以更细的粒度来控制访问 FileMaker 解决方案的途径和方式。fmrest 可控制是否允许通过 FileMaker Data API 来访问,fmurlscript 控制是否允许通过 URL 来执行 FileMaker 脚本,fmextscriptaccess 则对能否通过 Apple 的事件或 ActiveX 来执行 FileMaker 操作。
实际上,这部分特性都和 FileMaker 的开放性有关。我们认为,正是因为随后会提到的开放性的增强,这里的扩展权限细分给予了对应的安全保障!
OAuth 身份提供者账户
OAuth 协议提供了一个安全的、开放而又简易的标准。对于大部分开发者来说,都不会感到陌生,即使是作为普通用户,我们在使用 QQ、微信 或 微博 账户登陆某些论坛或服务时,享受着 OAuth 协议带来的安全和便利。
通过 FileMaker Pro 16 新引入的 OAuth 身份提供者账户(OAuth identity provider accounts)特性,开发者可以基于 Amazon、Google 以及 Microsoft 这些 OAuth 识别提供商进行用户的账户认证,这对于已经基于 AWS、Azure 或 Google 部署业务的系统整合来说尤其具有价值。
加密/解密及编码系列函数
此次升级新增 11 个加解密/编码相关的函数,先来看看它们的名字和简介:
- CryptAuthCode,使用指定的加密哈希算法,返回为二进制的 HMAC(加密哈希消息验证码);
- CryptDecrypt,解密带特定密钥的容器数据,然后返回为文本或容器数据;
- CryptDecryptBase64,解密带特定密钥的 Base64 编码文本,然后返回为文本或容器数据;
- CryptDigest,根据指定的加密哈希算法,返回生成的二进制哈希值;
- CryptEncrypt,加密带特定密钥的数据,然后返回容器数据;
- CryptEncryptBase64,加密带特定密钥的数据,然后返回 Base64 编码文本;
- HexEncode,编码并返回十六进制格式的文本数据;
- HexDecode,解码十六进制格式的文本,然后返回为文本或容器内容;
- TextEncode,根据指定的规格对文本进行编码,并返回为文本或容器数据;
- TextDecode,根据指定的规格从容器数据中解码,并返回为文本内容;
- Base64EncodeRFC,以指定的 RFC 标准 Base64 格式文本返回数据;
这些函数结合使用,使得 FileMaker 解决方案安全性得以上升到新的高度。
因为除了 FileMaker 平台在 Server 等环节内置的安全特性外,开发者和用户可以按照自己的需求,对解决方案的数据安全进行更深更细的掌控,开发者有机会选择 MD5、MDC2、SHA、SHA1、SHA224、SHA256、SHA384、SHA512 等各种标准的加密算法来保障系统的安全。编码相关的函数还变得更加易用,开发者可以自行掌控数据的编码、解码方式,在和第三方系统整合时有了更多的可控性和生产力。
RFC编号 | 编码文本的方式 |
---|---|
1421 | 每行最大字符数为 64,CRLF 格式(Windows 平台默认方式)换行 |
2045 | 每行最大字符数为 76,CRLF 格式换行 |
3548 | 不增加换行符 |
4648 | 不增加换行符 |
4880 | M每行最大字符数为 76,CRLF 格式换行, 附带 24位 CRC 校验值 |
以 Base64EncodeRFC 函数为例,它在已有函数 Base64Encode 的基础上支持了 RFC 标准,我们可以针对不同的场景选择以上几种文本编码方式。
部分开发者看到 3548、4648 RFC 是否觉得相见恨晚?如果您使用过以前的 Base64Encode 函数,一定忘不了还需要借助其他的函数去移除多余换行符的痛苦经历吧…
更易用
一直以来,FileMaker 不断引入 iOS 和 macOS 先进的交互方式,给终端用户和开发人员带来了优秀的体验,此次当然也不会例外,新增的卡片模式窗口(Card Modal Window)、布局跳转动画(Layout Animation)就在此次升级清单中。同时,此次升级还针对缩放控制区(Zoom Control Area)以及 Windows 平台下启动中心(Launch Center)进行了改进,我们一起来看看吧:)
专业美观的卡片模式窗口
通过 FileMaker Pro 16 创建的卡片模式窗口
我们经常看到上图所示的信息提示窗口,这就是卡片模式窗口(Card Modal Window)。深色的背景很有用,帮助我们把注意力集中到提示内容上,不会被窗口背后的内容干扰。
在没有这项特性之前,提示信息的弹出窗口与主程序窗口几乎没有差别,而且因为多个窗口点击时也可能误操作,更别说视觉效果了,点击 交互视频 看看运行效果吧。
*** 需要说明的是,目前 FileMaker Go 16 版本还没有发布,无法验证这项特性在 iPad 或 iPhone 上的表现,后续我们会对此进行更新。
风格多样的布局跳转动画
转到布局可以选择的动画类型
在 14 版中,FileMaker 引入滑动控件(Slider Control),用于模拟 iOS 下手势滑动翻页等交互效果。此次更新则引入了转场动画,在使用“转到布局”以及“转到关联记录”步骤时,您可以制定跳转动画增强视觉效果。
遗憾的是,这项特性目前仅在 FileMaker Go 16 上得到支持,在 FileMaker Pro 桌面环境下并不支持,希望后续能够更新,让 Windows 和 Mac 用户也能享受更好的交互体验。在 FileMaker Go 16 没有上架 App Store 前,先看看这些动画名称,望文生义吧:
- 从左侧滑入
- 从右侧滑入
- 从底部滑入
- 从左侧滑出
- 从右侧滑出
- 从底部滑出
- 从左侧浏览
- 从右侧浏览
- 放大
- 缩小
- 交叉叠化
消失的缩放控制区
左下侧是 FileMaker Pro 15,右上侧是 FileMaker Pro 16
为了更接近独立程序的体验,大多 FileMaker 解决方案会隐藏状态栏、菜单等部件,通过布局来全面定制交互界面。但是,相信一定会有人被窗口底部的左下角的缩放控制区(Zoom Control Area)搞郁闷吧,因为,这个东东无论如何也隐藏不了——至少在 FileMaker Pro 16 之前是如此。现在好了,这个东东正式消失了。
可能对某些用户来说,没有了可以点击的按钮不方便,怎么办呢?很简单,通过菜单、快捷键或者脚本来控制!
Windows 下更新的窗口及启动中心
左下侧是 FileMaker Pro 15,右上侧是 FileMaker Pro 16
在这次升级中,Windows 版本的 FileMaker Pro 窗口更改为单文档界面模式(有关单文档界面 SDI 的介绍可以看这篇文档),在打开、关闭 FileMaker 解决方案时窗口行为会有一些微妙的变化:
- 所有解决方案窗口各自独立,都拥有自己的菜单,还能分别位于不同的屏幕中;
- 启动 FileMaker Pro 后启动中心是唯一的窗口,而且附带菜单;
- 如果没有打开任何解决方案,关闭启动中心则会退出 FileMaker Pro 程序;
这样的改变带来的好处是什么呢?相对于以前版本解决方案像是一份文档,现在在 Windows 下运行的解决方案,看起来“更像是独立应用程序”了。
其他易用性相关的变化
从设备插入媒体的增强
可以对签名设置进行非常细致的设定
从设备插入功能得到显著的增强,现在可以针对音乐库、照片图库、相机、摄像机、麦克风、条形码以及签名不同类型的媒体进行详细设置。用户在插入签名信息时,我们可以设置对应的标题和提示,并指定是显示方式是全屏、覆盖或者嵌入;通过相机或摄像机插入媒体时,可以指定相应的镜头以及分辨率;如果是扫描条码,除了指定镜头和分辨率外,还可以在 17 种条码/二维码里分别进行启用或停用,从而可以提升系统的响应速度和安全性。
AVPlayer 设置选项的增强
AVPlayer 媒体播放器有了更丰富的设置选项
借助 AVPlayer 丰富的设置选项,可以在解决方案的表现形式上更加丰富多样。
原来 FileMaker 平台就对 PDF 支持的不错了,这次更新让 PDF 变得更好用。我们可以在 FileMaker WebDirect 或 FileMaker Server 下以 PDF 格式导出记录,以 PDF 格式进行打印,打印设置里 PDF 的选项也更丰富。
此外,启动中心现在也可以通过脚本调用,开发者无需定制专门的布局,就可以让用户获得一个统一美观的入口。
更开放
我们认为,FileMaker Pro 16 最大的改进就是更加的开放。首先是 JSON 系列函数 及的引入,现在 FileMaker 终于有了对接 REST API 等 Web 服务的原生方法支持。其次,FileMaker Server 16 引入的 Data API 接口是另一大重要特性,在 ODBC、XML 模式之外,我们可以透过这套遵循 REST 标准的接口实现更加复杂多样的异构整合。最后,FileMaker Server 16 还支持通过 OAuth 协议与第三方账户整合。当然,还有一些改进,比如 从 URL 插入 以及新的插件特性。
JSON 系列函数
JSON(JavaScript Object Notation,JS 对象标记)是一种与开发语言无关的文本格式来,用来存储和表示数据。打个不恰当的比方来说,JSON 就像是程序世界里面的黄金,是绝大部份开发语言都认可的通行货币。
FileMaker Pro 16 一口气新增了如下六条 JOSN 直接相关的函数:
- JSONSetElement,在 JSON 数据中添加或修改由对象名、数组索引或路径指定的元素;
- JSONGetElement,在 JSON 数据中查询由对象名、数组索引或路径指定的元素;
- JSONListKeys,列出 JSON 数据中由对象名、数组索引或路径指定的元素的对象名(键)或数组索引;
- JSONListValues,列出 JSON 数据中由对象名、数组索引或路径指定的元素的值;
- JSONFormatElements,设置 JSON 数据中元素的格式,使其更容易辨认;
- JSONDeleteElement,删除由对象名、数组索引或路径指定的 JSON 数据元素;
假设我们有如下的 JSON 数据,想象一下在 FileMaker 15 或之前的版本中要如何才能获取到 ID 为 FB1 的产品类别呢?
{
"bakery": {
"product": [
{
"id" : "FB1",
"name" : "Donuts",
"price" : 1.99,
"stock" : 43,
"category" : "Breads",
"special" : true
}, {
"id" : "FB2",
"price" : 22.5,
"name" : "Chocolate Cake",
"stock" : 23,
"category" : "Cakes",
"special" : true
}
]
}
}
看看使用 JSONGetElement 函数如何轻松搞定!
JSONGetElement ( $json ; ".bakery.product.[0].category" )
通过简洁的选择器愈发来指定元素的键、索引或路径
另有一条新增函数 UniqueValues 虽不是以 JSON 命名,也让开发者对 JSON 等数据操作变得更加容易。JSON 系列函数的更多用法及特性,我们将在中篇里详细阐述。
FileMaker Data API
FileMaker Data API 是在 FileMaker Server 中提供的另一重磅功能!透过这套遵循 REST 架构风格的接口,FileMaker 解决方案有了除 XML、ODBC 之外另一标准的途径与第三方系统整合交互。
FileMaker Data API 非常简洁,概念也很清晰,通过形如:
/fmi/rest/api/:service/:solution/:layout/:recordId
的 URL 就可以与 FileMaker Server 进行交互认证、查找、记录操作以及全局字段设置,其中:
:service
是预定义的关键字,比如 auth(认证)、record(记录)或 find(查找);
:solution
是托管的 FileMaker 解决方案名称;
:layout
是用于请求数据的关联布局名称;
:recordId
是唯一的记录 ID 号码;
我们将在本系列下篇对 FileMaker Data API 进行更佳详细的介绍。
更高效
新增的布局对象窗口
借助布局对象窗口,我们对复杂布局的掌控能力更进一步
尽管 FileMaker 崇尚简洁的设计,但无法避免的随着解决方案的功能加入,布局元素会越来越多,相互嵌套的关系也越来越复杂,如何让开发者快速有效的选择元素并进行编辑就成为一个问题。
布局对象窗口,是在此次升级中给出的答案。通过布局对象窗口,开发者可以按树状结构查看当前布局下的所有元素并进行操作,比如选择、隐藏、命名或者指定层级顺序。
布局窗口中还提供了分类过滤菜单、搜索框以及右键菜单。对于那些复杂的场景,开发者可以在过滤和搜索快速找到目标元素,隐藏其他的元素后,在布局窗口中更轻松的进行定位、缩放等操作。其他一些细节特性也让开发过程更轻松。比如,可以直接操作组合元素中的子元素,对于有了按钮设置的群组,省去了解散群组编辑后重新进行按钮设置的麻烦。
增强的数据查看器
留意到前文 JSON 函数示例的附图细节吗?结果栏右侧有一个自动解析选项
这是在数据查看器里编辑表达式时的窗口。相对之前版本的数据查看器,这个简直太棒了!除了可以实时自动解析/计算表达式内容外,表达式编辑栏有了代码提示功能,不用再担心某个函数记不住需要去查文档了。
其他的改进
有发现表达式编辑窗口的另一个小秘密吗?那个小小的,位于右下角的描述栏!它会显示您选取函数的简短说明,提示您这个函数的对应功能。如果点击❓图标,就会打开联机文档。还有,现在可以使用标准快捷键在不同的解决方案之间复制粘贴值列表了,这些都是细小却又贴心的改进,不是吗?
在这次升级中,布局主题也得到简化。FileMaker Pro 16 保留了 15 个主题,其他那些有点“奇奇怪怪”的主题都被剔除了。一定程度上,这避免了主题管理带来的负担,也从侧面反映出作为一款专业开发平台,FileMaker 变得更加专注,而灵活性,则更多的留给了开发者。
实际上,我们前面分享的很多改变,对最终用户或开发者都带来了效率的提升,不管是 JSON 系列函数还是加解密、编码函数,都避免了绕道或借助其他技术产生的额外投入。
本篇结语
我们从安全、易用、开放和高效四个方面了解了 FileMaker Pro 16 带来的主要变化,其中,安全、开放两个部分的特性让我们影响深刻,我们也将在中篇和下篇里对 JSON、FileMaker Data API 以及加解密部分特性进行详细介绍。
当然,我们在本篇体验过程中也有些许遗憾,特别是布局对象窗口让我们觉得意犹未尽。比如,是否能在元素状态中显示出关联脚本、脚本参数?目前在布局开发过程中这部分一直得凭着记忆来处理呢。