在PaaS上開發Web、移動應用(2)

在PaaS上開發Web、移動應用(2)

PaaS學習筆記目錄

PaaS基礎學習(1)

在PaaS上開發Web、移動應用(2)

PaaS優勢與限制(3)

6. 巨型代碼,是指持續不斷地向一個應用程序添加功能,不停地增長新的特性如搜索功能、帳戶管理、博客發佈等。

在開發速度以及在適應擴展需求的整體架構之間進行權衡。java

  • 新技術的面向服務架構(SOA)在Web應用的復興
  • 標準技術(例如REST)也讓服務更統一和易維護。

7. JSON

JSON(JavaScript Object Notation)是做爲在API服務內部傳輸數據的標準出現的,它可做爲替換XML的備選方案之一。
如:
{
「id」:1,
「name」:」Programming for PaaS」,
「price」:123,
「tags」:[「PaaS」,」Programming」]
}android

8. REST(表述性狀態轉移)

REST(Representational State Transfer)是諸如Web應用之類的分佈式系統的一種架構模式。
- 經過複用HTTP的基礎操做,如GET、POST、PUT以及DELETE,REST已經成爲了一種主流服務設計模型。
- REST背後的原則的基本原則就是經過提供一個共享的網絡詞彙,以一種標準的、可預測的格式來傳輸資源。
如:一個基於REST的用於管理用戶數據的JSON服務:ios

GETweb

列出資源(能夠被緩存)
- 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
更新資源(不可緩存)json

- 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客戶端

元服務能夠直接在瀏覽器中調用。markdown

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();
相關文章
相關標籤/搜索