在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,功能强大,快发速度快, ...
随机推荐
- hdu 3507 Print Article —— 斜率优化DP
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3507 设 f[i],则 f[i] = f[j] + (s[i]-s[j])*(s[i]-s[j]) + m ...
- Code-NFine:NFine权限控制
ylbtech-Code-NFine:NFine权限控制 1.返回顶部 1. NFine框架研究 1.前台业务操作 1.1 系统菜单配置方法 1.2 菜单管理配置方法 1.2.1 按钮管理 1.2.2 ...
- dubbo 学习笔记 -- provider端
服务端的配置文件: provider.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...
- [poj2778]DNA Sequence(AC自动机+矩阵快速幂)
题意:有m种DNA序列是有疾病的,问有多少种长度为n的DNA序列不包含任何一种有疾病的DNA序列.(仅含A,T,C,G四个字符) 解题关键:AC自动机,实际上就是一个状态转移图,注意能少取模就少取模, ...
- CF-831C
C. Jury Marks time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Atom 基本使用
插件 simplified-Chinese-menu:汉化 Markdown-preview-plus:Markdown 实时预览 Atom 自带 Markdown-preview,这个插件是其增强版 ...
- 《剑指offer面试题4》替换空格——实现函数把字符串中每个空格替换成“%20”
思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思 ...
- 模型验证 IValidatableObject 无法进入 Validate 方法的原因
模型的属性的类型为 decimal 时无法进入 Validate 方法 public decimal Age { get; set; } 当把属性的类型改为可空类型时 则可以进入 Validate 方 ...
- [Xcode 实际操作]一、博主领进门-(4)设置项目的属性
目录:[Swift]Xcode实际操作 本文将演示如何设置项目的属性. 点击项目名称[DemoApp],打开项目信息面板. [Identity识别]设置区域 [Display Name]:DemoAp ...
- bzoj3427:[POI2013]BAJ-Bytecomputer
传送门 很显然有一个结论:最大不过1,最小不过-1 然后dp,设\(f[i][j]\)为满足前\(i\)个不下降,当前放的是\(j-2\),转移就比较好想了 具体方程看代码吧,终于有一个自己会写的题了 ...