在PaaS上开发Web、移动应用(2)
在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)的更多相关文章
- PAAS平台的web应用性能测试与分析
引言 为什么我会写这一篇博客,因为最近很多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用访问很慢,有极少数应用甚至经常出现504超时现象,当然大家首先想到的是jae性能太差,这也是人之 ...
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库
上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...
- 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure
[题外话] 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在 ...
- 在Visual Studio上开发Node.js程序
[题外话] 最近准备用Node.js做些东西,于是找找看能否有Visual Studio上的插件以方便开发.结果还真找到了一个,来自微软的Node.js Tools for Visual Studio ...
- 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP
参考博文: [Phonegap+Sencha Touch] 移动开发1.准备工作 [Phonegap+Sencha Touch] 移动开发2.PhoneGap/Cordova初步使用 经过差不多1 ...
- ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...
- 用“MEAN”技术栈开发web应用(一)AngularJs前端架构
前言 不知何时突然冒出“MEAN技术栈”这个新词,听起来很牛逼的样子,其实就是我们已经熟悉了的近两年在前端比较流行的技术,mongodb.express.angularjs.nodejs,由于这几项技 ...
- DELPHI XE5开发WEB服务器及安卓手机客户端
Xe5开发web服务端和手机客户端 ------------------------------------- Delphi xe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快, ...
随机推荐
- HDU1171(01背包均分问题)
Big Event in HDU Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
- spark运行模式之一:Spark的local模式安装部署
Spark运行模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Stan ...
- hdu 最短路模板题 java
最短路 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在 ...
- ceph学习之PG
PG的计算公式: 整个集群PG的计算公式 Total PGs = ((Total_number_of_OSD * ) / max_replication_count) 每个POOL中PG的计算公式: ...
- dubbo框架介绍
1.背景 (#) 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小 ...
- system(“pause”)和getchar()
大家都知道system(“PAUSE”)可以让C程序在运行结束之前暂停运行.用system(“PAUSE”)可以解决运行程序一闪而过,看不到输出结果的问题.有程序员会用system(“PAUSE”)只 ...
- php防盗链技术
在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 如果是直接在浏览器上输入地址,回来进来,则没有Referer头. 这也是: 为什么服务 ...
- UVa 10723 Cyborg Genes (LCS, DP)
题意:给定两行字符串,让你找出一个最短的序列,使得这两个字符串是它的子串,并且求出有多少种. 析:这个题和LCS很像,我们就可以利用这个思想,首先是求最短的长度,不就是两个字符串长度之和再减去公共的么 ...
- win7 win8 快捷键直接调出任务管理器
问:windos7如何设置按ctrl+alt +delete三个键就直接出现任务管理器. 答:你应该这样按Ctrl+shift+esc,这样就可以直接调出任务管理器,而且一只手就可以完成,大拇指按Ct ...
- HDU - 1715 - 大菲波数 - JAVA
http://acm.hdu.edu.cn/showproblem.php?pid=1715 import java.io.*; import java.util.*; import java.mat ...