新一代的云服务不再要求应用开发者编写服务器端代码。几乎所有的应用都依赖服务器端的业务逻辑,回调为A
对那些已经拥抱云服务的企业来说,有另一个选择。有新兴的服务提供商涌现出来,使应用开发者更容易开发。你
你可以自己编写上述大部分代码。创建一个传统的N层架构,配置数据库,负载调优。写部署脚本,调度备份,单
Infrastructure-as-a-Service 供应商如Amazon, Rackspace和Joyent 会为你省去这部分工作。Platform-as-a-Service供应商如Heroku 能更加节省你的工作。但我们要问 - 你还要写代码吗? 你的业务逻辑能有多少能被Software-as-a-Service 交付?
我们把用户id鉴别问题做一个例子。你可以比较下多种的API。 尽管社交媒体账号登陆如Facebook, Twitter 或 LinkedIn可以很快解决这个问题,也有可用的SDK,如果你要与用户建立更深的关系,这不是一个令人满意的解决方案。你需要自己的用户数据库。所以你要写自己的服务器端代码,支持自己的验证机
要使用parse.com 服务,你需要先在 parse.com 上注册,并安装他们的Android SDK。用户识别函数由 ParseUser对象提供。
ParseUser user = new ParseUser(); user.setUsername("my name"); user.setPassword("my pass"); user.setEmail("email@example.com");
( parse.com 上的样例代码)
要注册一个新用户,调用signUpInBackground 函数:
user.signUpInBackground(new SignUpCallback() { public void done(ParseException e) { … } }
用户登录,调用 logInInBackground 函数:
ParseUser.logInInBackground("Jerry", "showmethemoney", new LogInCallback() { public void done(ParseUser user, ParseException e) { … } }
如你所见,API使用匿名的内嵌类作为回调,很像node.js.的风格。你要维护自己的用户界面,这不是parse.com能做的工作。但 parse.com 可以维护邮件验证,密码提醒,登录缓存,用户授权,提供管理控制台来管理用户数据。你不需要自己实现这些功
要把保存在parse.com 的用户数据与现有 系统集成,你需要调用它的 REST API。这个API允许你通过HTTP对数据调用所有API。这个API非常关键,能避免锁住,你应当向你
云供应商是要挣钱的。你应当比较他们的定价。parse.com 对低用户量免费,当然如果你的应用很受欢迎,你最好还是要购买他们的服务。
stackmob.com 和parse.com的服务类似。 stackmob API 更接近底层的REST API。
final String username = "johndoe"; final String password = "mypassword"; Map<String, String> args = new HashMap<String, String>(); args.put("username", username); args.put("password", password); StackMobCommon.getStackMobInstance().login(args, new StackMobCallback() { @Override public void success(String responseBody) { //handle success here } @Override public void failure(StackMobException e) { //handle failure here } });
(stackmob.com 的样例代码)
同样也有匿名内嵌类回调模式。这是因为这些供应商支持Java, Objective-C, 和 JavaScript 等版本的API。为使结构类似,他们都异步工作,并使用回调来告诉你的代码调用结束。
使用parse.com你要自己维护用户界面。而stackmob 服务给你REST API 来集成,如果用户量不大,你可以免费使用。
kinvey.com 服务提供类似的用户管理功能。下面是他们的API:
KinveySettings = KinveySettings.loadFromProperties(getApplicationContext()); sharedClient = KCSClient.getInstance(getApplicationContext(), settings); KinveyUser user = service.loginWithUsername("existinguser", "pass");
( kinvey.com 的样例代码)
kinvey.com 服务也模拟 JavaScript回调函数,但提供一个更自然的Java风格的公用功能层。你也会得到一个 REST API 和免费使用的用户量。
你考虑使用哪个服务?每个服务都提供相似的功能 -- 没有多种不同方式来提供用户识别或数据存储层 -- 所以API 的结构也相似。如果这些服务都是有效的商品,也许价格是决定因素。
然而,还有一个因素要考虑。大多数的云服务倾向于赢家通吃。每个人想使用可靠安全的供应商。游戏规则是要