在PaaS上开发Web、移动应用(2)

PaaS学习笔记目录

PaaS基础学习(1)

在PaaS上开发Web、移动应用(2)

PaaS优点与限制(3)

6. 巨型代码,是指持续不断地向一个应用程序添加功能,不停地增加新的特性如搜索功能、账户管理、博客发布等。

在开发速度以及在适应扩展需求的总体架构之间进行权衡。

  • 新技术的面向服务架构(SOA)在Web应用的复兴
  • 标准技术(例如REST)也让服务更统一和易维护。

7. JSON

JSON(JavaScript Object Notation)是作为在API服务内部传输数据的标准出现的,它可作为替换XML的备选方案之一。

如:

{

“id”:1,

“name”:”Programming for PaaS”,

“price”:123,

“tags”:[“PaaS”,”Programming”]

}

8. REST(表述性状态转移)

REST(Representational State Transfer)是诸如Web应用之类的分布式系统的一种架构模式。

- 通过复用HTTP的基础操作,如GET、POST、PUT以及DELETE,REST已经成为了一种主流服务设计模型。

- REST背后的原则的基本原则就是通过提供一个共享的网络词汇,以一种标准的、可预测的格式来传输资源。

如:一个基于REST的用于管理用户数据的JSON服务:

GET

列出资源(可以被缓存)
- http://example.com/users
Header:
none
Response:
[
{'id':123,
'name':'a'},
{'id':124,
'name':'b'}
]
- http://example.com/users/123
Header:
none
Response:
{'id':123,
'name':'a'}
- http://example.com/users?name=b
Header:
none
Response:
[
{'id':124,
'name':'b'}
]

PUT

更新资源(不可缓存)

- http://example.com/users
Header:
[
{'id':123,
'name':'x'},
{'id':124,
'name':'y'}
]
Response:
200 OK
- http://example.com/users/123
Header:
{'id':123,
'name':'x'}
Response:
200 OK
- http://example.com/users?name=b
Header:
[
{'id':124,
'name':'y'}
]
Response:
200 OK

POST

创建新资源(不可缓存)

- http://example.com/users
Header:
{'id':125,
'name':'c'}
Response:
200 OK
-http://example.com/users/123
Not used
-http://example.com/users?name=b
创建新资源的时候不需要查询字符串 DELETE
删除资源(不可缓存)
- http://example.com/users
Header:
None
Response:
200 OK
Note:
Deleted all users
-http://example.com/users/123
Header:
None
Response:
200 OK
Note:
Deleted only user 123
- http://example.com/users?nmae=b
Header:
None
Response:
200 OK
Note:
Deleted all users named b

9. 元服务

元服务是一种基于REST的应用程序,用于为数据的集合提供服务。

10. 瘦Web客户端

元服务可以直接在浏览器中调用。

11. 胖Web客户端

诸如SproutCore(http://SproutCore.com)和Cappucino(http://www.Cappucinoproject.org)可以作为数据绑定的构建模块。

SproutCore和Cappucino为我们提供了构建模块,通过一种非常标准的方法将这些基础元素组合在一起,就可以构建现代应用程序。

这些应用无论在Web还是移动客户端都让人感觉到类似桌面应用的效果。

12. 移动客户端的PaaS

iOS

REST的框架:RestKit

Android

采用Java语言的Android本地应用也可以简单快速地访问元服务以及获取数据。

- 自己动手构建,采用Android的异步网络操作

1. 将AsyncTask类扩展为异步任务类

2. 创建一个URLConnection并且将数据转换为字符串

3. 将结果处理为Java对象

Java实例代码:

//通过新的GetRESTData().excute()在一个服务中执行;
private class GetRESTData extends AsyncTask <Void,Void,String>{ @Override
protected String doInBackground(Void... params){
URL url = new URL("http://example.com/users"); URLConnection urlConnection = url.openConnection();
InputStream in = new
BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new
BufferedReader(new InputStreamReader(in));
String result,line = reader.readLine();
result = line;
while((line = reader.readLine())!=null){
result += line;
}
in.close(); return result;
} protected void onPostExecute(String restResult){
//process the JSON string into Java object
//and persist it into a SQLite database
}
}
  • 使用开源或者专有的框架

Android上的REST框架:Restlet

Restlet可以从基于REST的源获取数据时,极大地节省开发者的时间和精力。

RestLet的简单实例:

public interface UserResource{
@Get
public User retrieve(); @Put
public void store(User user) @Delete
public void remove();
} ClientResource cr = new ClientResource("http://example.com/users/123");
//获取用户对象
UserResource resource = cr.wrap(UserResource.class);
User user = resource.retrieve();

在PaaS上开发Web、移动应用(2)的更多相关文章

  1. PAAS平台的web应用性能测试与分析

    引言 为什么我会写这一篇博客,因为最近很多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用访问很慢,有极少数应用甚至经常出现504超时现象,当然大家首先想到的是jae性能太差,这也是人之 ...

  2. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  3. 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库

    上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...

  4. 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure

    [题外话] 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在 ...

  5. 在Visual Studio上开发Node.js程序

    [题外话] 最近准备用Node.js做些东西,于是找找看能否有Visual Studio上的插件以方便开发.结果还真找到了一个,来自微软的Node.js Tools for Visual Studio ...

  6. 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP

    参考博文: [Phonegap+Sencha Touch] 移动开发1.准备工作 [Phonegap+Sencha Touch] 移动开发2.PhoneGap/Cordova初步使用   经过差不多1 ...

  7. ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

    基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...

  8. 用“MEAN”技术栈开发web应用(一)AngularJs前端架构

    前言 不知何时突然冒出“MEAN技术栈”这个新词,听起来很牛逼的样子,其实就是我们已经熟悉了的近两年在前端比较流行的技术,mongodb.express.angularjs.nodejs,由于这几项技 ...

  9. DELPHI XE5开发WEB服务器及安卓手机客户端

    Xe5开发web服务端和手机客户端 ------------------------------------- Delphi xe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快, ...

随机推荐

  1. 测试build出来的dist文件夹是否编译成功

    一.先用webpack执行 npm run build 成功后会生成dist文件夹. 二.把dist文件夹推到SVN项目指定位置.注意:因为build后会生成很多的js css font文件并没用加入 ...

  2. io_service work 的作用

    当有任务的时候,run函数会一直阻塞:但当没有任务了,run函数会返回,所有异步操作终止. 客户端程序中,如果我想连接断开后重连,由于连接断开了,run会返回,当再次重连的时候,由于run返回了,即使 ...

  3. mfc为对话框添加启动画面

    新建CwzdSplash类 CwzdSplash.h #pragma once class CWzdSplash : public CWnd { DECLARE_DYNAMIC(CWzdSplash) ...

  4. insert插入错误

    16:24:30,803 Fetching JDBC Connection from DataSource 16:24:30,826 Returning JDBC Connection to Data ...

  5. Laravel框架之Response操作

    public function response(){ //响应json /*$data = [ 'errCode'=>0, 'errMsg' =>'success', 'data' =& ...

  6. Jmeter调用JAVA jar包传参

    http://blog.csdn.net/xiazdong/article/details/7873767#

  7. Fitnesse-The Slim Tables

    Fitnesse 中Slim支持的表格类型 下表内容路径 Decision Table Supplies the inputs and outputs for decisions. This is s ...

  8. html扩展调用qq邮箱

    总体流程:qq邮箱->设置->账户->邮我(使用邮我) over!over!over!

  9. android摄像头获取图像——第二弹

    使用android内的Camera对象 (1)Camera是控制着摄像头的api,拥有一系列控制摄像头的上层方法:camera类能够调用底层的摄像头接口,完成启动摄像头.预 览摄像头图像.拍照等功能: ...

  10. math(2018.10.27)

    20%的数据直接暴搜就行,接下来我们考虑哪些数不能够出现在同一个集合中,就连一 条边,我们会发现前