从 6 月份 WWDC 苹果发布 CloudKit 开始,BaaS (Backend as a Service,也叫做 mBaaS,m 代表 mobile ) 的概念一下子又走入了人们的视野。CloudKit 提供了基本的数据存储和用户账号管理功能,以后要写一个数据交互不是太复杂的应用/游戏,就不再需要自己来开发后端架构,直接连 CloudKit 就搞定了,这就是 BaaS 的价值。这里之所以说「又」,是因为在 13 年初 Facebook 收购 Parse 的时候,很多人也都被震惊到了,只是当时会有人觉得,真的有很多人会使用这种后端服务么?现在好了,连号令江湖的水果公司也加入到了服务商的行列,大家不得不重新审视 BaaS 的价值。
我们还是先来看看 CloudKit 可以为我们做什么吧。从目前公开的资料和 API 来看,CloudKit 有如下几个基本概念:
CKContainer —— 每个应用有一个 Container,应用之间的数据是隔离的,如果愿意数据可以跨应用共享。
CKDatabase —— 每一个 Container 都会包含两个 Database:公开的和私有的。公开的 Database 存放应用内共享的数据,需要开发者自己的 Apple ID 才能修改;私有的 Database 则存放单个用户相关的数据,需要终端用户自己的 Apple ID 才能访问。
CKRecord —— 代表 Database 里面一条结构化记录,是键值对的封装,所以可以存储任何数据。与 Parse 等提供的子类化数据模型不一样,CloudKit 中所有存储的数据只能是 CKRecord 类型,开发者需要使用一个名叫 Record Type 的字符串来区分不同类型的数据。
CKRecordZone —— CloudKit 还引入了 RecordZone 的概念,来给不同的数据进行分区,与 Mongodb 中的 collection 比较相似。
CKReference —— 类似于数据库中的「外键」概念,主要用来进行数据关联。CKRecord 中某一个属性的值,可以是另一个 CKRecord(譬如 Instagram 中的每张图片,都有一个作者字段),这时候属性值就可以是 CKReference 类型。按照 CloudKit API 的说明文档,这种引用的关联是可以做到反向查询和级联删除的,不过笔者好奇的是,对于一对多的关联模型,级联删除该怎么才能做到呢?
CKAsset —— 用来处理文件这种非结构化数据的存储,按照 API 的说明文档,可以高效支持上传和下载,看来苹果应该也是提供 CDN 支持的,但是国内用户应该就享受不到了。
CKQuery —— 主要用来获取数据,通过组合 Record Type、NSPredicate 和 NSSortDescriptor 来查询数据,不过从 API 说明文档看不出它能否支持 Parse 的级联获取。
CKSubscription —— 与 CKQuery 只是每次去拉 Server 端的数据不同,CKSubscription 提供了一种 Server 端主动 Push 的机制,通过组合 Record Type、NSPredicate 和 APNs Push,可以让 Client 端主动去监听 Server 端的数据变化,从而实时得到通知。
其实,对于苹果为什么要做 CloudKit,江湖上还流传着这样一则轶闻:当年苹果也是 Parse 的竟购方之一,只是 Facebook 为了打造开发者生态圈而志在必得,苹果只能铩羽而归,但是数据平台的价值又一直让苹果念念不忘,最后苹果的工程师和 PM 只能心一横,自己做一个 CloudKit 了。不过与其他 BaaS 平台相比,笔者认为 CloudKit 存在如下不足:
数据模型过于简单。数据之间的关联只能通过 CKReference 建立,这样的话对于多对多的映射模型就比较吃力,不管是读取还是存储,都会比 Parse 的方案繁琐很多。
不能自定义业务逻辑,没有类似于 Parse 的云代码功能,很多时候需要在客户端完成全部业务逻辑,这都会给开发带来一些不便,并且也会影响到移动设备的耗电和网络流量。
访问速度过慢,从我实际的测试来看,在 Wifi 下 API 的延迟都已经非常明显,要是再扩大到国内五花八门的网络环境,特别是弱网环境,数据访问的延迟会变成一个很大的障碍。而且,对于国内用户来讲 Apple ID 的利用率也不高。
不支持跨平台。所有的数据都是存放在 iCloud 里面,需要通过开发者或者最终用户的 Apple ID 才能访问,这样的服务方式让 Android 生态圈和 Web Application 等完全成为了另外的平行世界,对于第三方应用开发者来说,或许没有人能把自己的用户群全部押宝到 iOS 上。
在中国市场面临政策风险。从 WordPress、网盘、AWS 等的前车之鉴来看,所有的数据黑洞都会让监管部门感到无能为力,从而心生恐惧,他们只能使用最简单粗暴的办法来进行处理,那就是让你变的「不存在」。
在苹果的发布会之后,谷歌在今年的 IO 大会上也发布了 Google Driver for Work / Google Fit Platform,加上最早的 Facebook,三大巨头相继推出类似产品,让人们对 BaaS 服务的前景充满期待。CloudKit 存在的问题,可能就是其他第三方 BaaS 服务商们的机遇。在国外 Parse 和 Kinvey 都做得不错,StackMob 本来也算是领头羊之列的 player,但是被 Paypal 收购之后就立刻被关停,只能让人唏嘘。国内的 BaaS 服务提供商,多只在某一个领域出现,譬如推送领域的个推、统计领域的友盟,能够像 Parse 一样提供完整的平台能力,特别是后台数据存储能力的,目前来看只有 AVOS Cloud 一家。并且 AVOS Cloud 的 API 设计是完全兼容 Parse 的,对于用惯了 Parse 服务的开发者来讲,可能会像碰到了孪生兄弟一样熟悉。
在所有人都在强调「移动!移动!」的今天,BaaS 或许能开创出一个新的云计算方向,让我们拭目以待吧。
http://segmentfault.com/blog/jwfing/1190000000623718
分享到:
相关推荐
WeX5.Baas服务详解 WeX5是一款强大的HTML5开发框架,它提供了一整套工具和服务,帮助开发者快速构建跨平台的企业级移动应用。其中,WeX5.Baas(Backend as a Service,后端即服务)是其核心功能之一,为开发者提供...
sgtcloud 是为 html5 游戏开发者量身打造的baas服务,提供了10余种开箱即用的游戏模块,不用写一行代码,立刻享用专业简便的 sdk 接入和后台面板。如果您开发复杂的重度游戏,sgtcloud 也提供了高级的应用托管功能,...
区块链即服务平台BaaS白皮书.pdf
该项目为基于SpringBoot框架的wex5后端替换BAAS服务的设计源码,总计61个文件,涵盖53个Java源文件、2个XML配置文件、1个Git忽略规则文件、1个Markdown文档以及其他类型文件。此项目旨在利用SpringBoot的轻量级和...
白皮书中详细阐述了区块链技术带来的产业变革,着重分析了区块链即服务(Blockchain as a Service, BaaS)的重要意义。云的开放性和云资源的易获得性,决定了公有云平台是当前区块链创新的最佳载体,区块链与云计算...
在这个场景中,AVOS作为后端服务,帮助开发者快速构建具有完整功能的APP,而无需从零开始搭建后端环境。 【压缩包子文件的文件名称列表】: 1. AVosTest.apk:这是基于AVOS开发的示例应用的APK文件,用户可以通过...
版权声明本白皮书版权属于可信区块链推进计划区块链即服务平台BaaS项目组,并受法律保护,转载、摘编或利用其它方式使用本白皮书文字或者观点的,应注明“来源:可信区
《区块链即服务平台BaaS白皮书(1.0版)》是一部详尽阐述区块链技术在企业级服务中应用的专业文献,由多个知名企业和机构共同编写。白皮书强调了区块链技术从诞生至今,经历的快速发展和公众认知的变化,将其与互联网...
区块链即服务baas白皮书
阿里云区块链baas介绍
baas平台构思,如何设计自己的Baas?来来来块下载,看看是否有帮助。只是页面设计。纯html设计
本周汽车行业报告聚焦于两大核心议题:一是乘用车销量的持续增长,二是蔚来汽车推出的创新电池租用服务BaaS(Battery as a Service)。这两项发展都揭示了汽车市场在技术和商业模式上的新趋势。 首先,乘用车销量的...
为了适应这一趋势,使用BaaS(Backend as a Service,后端即服务)技术来开发微信支付小程序,已成为移动应用服务端技术的首选。 BaaS技术的核心优势在于其能够为开发者提供一站式后端云服务,包括数据存储、文件...
蔚来汽车和宁德时代携手推出的电池即服务(BaaS)业务就是其中一例。这一业务模式将对整个新能源汽车行业带来重大影响,下面是对这一知识点的详细解读。 1. 蔚来汽车的换电布局与技术创新 蔚来汽车在换电领域具备...
区块链BaaS云平台介绍.ppt
作者:赵静,多年互联网领域从业经验,现服务于Maxleap基础服务及架构组,主要负责云数据(CloudData)架构设计及研发,关注分布式计算、云存储。
区块链即服务平台(Blockchain as a Service,简称BaaS)是一种创新性的解决方案,旨在为企业和个人开发者提供一个便捷、高效且安全的区块链基础设施。随着2008年比特币白皮书的发布,区块链技术逐渐从边缘概念发展...
(Mobile) Backend as a Service -- (M)BaaS 国外 Smart TV, IPTV出身,搞了一个BaaS ... 苹果的CloudKit, iCloud ios应用托管,转向移动游戏管理 专门做H5的,已被Intel收购 支持移动和JS,收购了Cocoafish ba