在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();
时间: 2024-11-05 12:17:17

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

domino8.5.2上开发web service 报错

问题描述 新建webservice提供者和使用者后写Java代理使用webservice运行代理报错大侠们帮忙解决一下WebServiceEngineFaultfaultCode:{http://schemas.xmlsoap.org/soap/envelope/}Server.generalExceptionfaultSubcode:faultString:org.xml.sax.SAXParseException:在publicId和systemId之间需要空格.faultActor:fau

在PaaS上构建SaaS应用程序需要注意什么

遗留系统含有成千上万个执行一大批业务功能的服务组件.比如说,假设贵企业运行的一个内部遗留系统中的一套组件向企业高管提供一份统计报告.为了赶在截至日之前获得这份每周提交的报告,该高管应该考虑将必要的组件迁移到新的软件即服务(SaaS)应用程序. 如果经济可行性研究表明这种迁移是明智的决策,他应该与其他高管以及由开发人员.系统工程师和业务分析人员组成的一个团队合作,将遗留系统细分成多个组件,然后着手开发那个应用程序. 1.识别遗留系统资产 开发团队.高管和遗留系统负责人需要识别遗留系统的资产.这些资

在Rational Application Developer平台上基于JAX-WS开发Web services

引言 Web Services 是一种面向服务的技术,通过标准的 Web 协议提供服务,目的是保证不同平台 的应用服务可以互操作.依据 web services 规范实施的应用之间,无论它们所使用的语言. 平台或内部协 议是什么,都可以相互交换数据,这就是 web services 的好处.本文选择 IBM WebSphere Application Server 作为 web services 的运行环境,并选择 IBM Rational Application Developer(以下简称

在 Apache Tuscany 上开发基于 SCA 的 Web 2.0 应用

引言 如今在企业级应用中,Ajax.Widget.RSS/Atom 等 Web 2.0 技术正在得到越来越广泛的使用,这些技术不但产生了良好的用户体验,同时也来越来越多地影响着许多前端系统的编程模式和系统架构.许多传统的 Java EE 产品和框架也在越来越多地引入这些 Web 2.0 技术,如 Struts2 和 JSF 都有了越来越完善的 Ajax 扩展,Portal 产品中也基于 Dojo 等 javascript 框架引入部分刷新等机制,大幅提升了性能和用户体验.可以看出,Web 2.0

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

引言 为什么我会写这一篇博客,因为最近很多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用访问很慢,有极少数应用甚至经常出现504超时现象,当然大家首先想到的是jae性能太差,这也是人之常情,往往出现什么错误的时候首先想到是别人的不好,工作中很多同事也是这样,如果软件系统出现一个bug首先怀疑的肯定不是自己写的代码.今天花时间写这一篇博客主要就是告诉大家怎样确定我们部署在PAAS平台(不仅仅是JAE哦)web应用为什么慢?慢在哪儿了?有什么方法可以解决? 原因分析 出现访问自己we

如何使用Ajax技术开发Web应用程序(3)

ajax|web|程序 在这个关于AJAX系列的第三部分中(相关文章:第一部分.第二部分),我们将学习如何使用AJAX与服务端进行写作以及这些技术如何产生强大的web应用程序.如果你对学习如何构建类似GMail或者Google Maps的web程序感兴趣的话,这是一篇基础的入门(虽然那两个东东会比我们在这篇文章中提及的内容复杂的多).在这篇文章中,我使用PHP作为服务端语言,但AJAX能够和任何服务端语言进行很好的兼容,所以你尽可以选择你所钟爱的任何语言! 我们还是从我们上一篇文章的代码(喏,就

如何使用Ajax技术开发Web应用程序(2)

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用Ajax技术开发Web应用程序

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用Ajax开发Web应用程序(1)

ajax|web|程序 作者: Jonathan Fenocchi 时间:2005.10.25 译者:Sheneyan 英文原文:http://webreference.com/programming/javascript/jf/column12/index.html 在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛