zoukankan      html  css  js  c++  java
  • 在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();
  • 相关阅读:
    php实现简单的流程管理
    【百度地图API】如何制作多途经点的线路导航——驾车篇
    利用MFC实现浏览器的定制与扩展(JavaScript与C++交互)
    c++与js脚本交互,C++调用JS函数/JS调用C++函数
    VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)
    Android中半透明Activity效果另法
    mac java环境
    在Mac osx使用ADT Bundle踩过的坑
    Android自动检测版本及自动升级
    C++编译遇到参数错误(cannot convert parameter * from 'const char [**]' to 'LPCWSTR')
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467736.html
Copyright © 2011-2022 走看看