2011年8月25日 星期四

Amazing-Runtime-Platform

What is Amazing-Runtime-Platform?

首先我們來介紹 Runtime-Platform:

Runtime-Platform在我們自己的認知是"執行時期的平台",也就是正在使用中的平台啦!至於Amazing呢?那意味著這是我們和楓傢飾科技獨有的平台。

那我們的Amazing-Runtime-Platform有什麼特色呢?

1. Front Controler: 我們使用自行開發的 Framework 來管理、控制我們的 UI Flow ,最後就是由我們的Amazing-Runtime-Platform來主宰。



讓我們從 Code 來看看這項特色吧!
當我們在切換不同 UI Interface 時,我們會使用:

public void layoutChange(int id) {

   switch (id) {

       case R.layout.login:
       login(w, h);
       break;
       case R.layout.amazing:
       amazing(w, h);
       break;
   }
}


而如此一來當 UI Interface 多的時候,程式碼豈不是雜亂不堪嗎? 而我們利用 Framework 的概念,將切換介面的動作抽離,而我們的程式碼就只要這樣:

public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);

   addAction(new LoginAction(this, R.layout.login));
   addAction(new AmazingMainAction(this, R.layout.amazing));

   setMainView(R.layout.amazing);
   selectView(R.layout.login);

}


這樣是不是簡潔了許多呢? 我們利用 addAction 的 Framework ,藉由 method LoginAction 給Context & layout 去實做,此方法不但讓 Code 簡單明瞭,同時能讓 method 可以重複利用。


2. Service: 我們 create 一些我們自己開發的 Service ,當某些訊息進來時,某個 Service 就會 Listen 到這個訊息而作某些事情,例如:當傳入 JSONObject 的事件進來時,我們的 JSONObject Service 就會處理這個事件。


3. Message: 這是我們 Amazing-Runtime-Platform 一大特色喔!你不管在哪裡,當你發出了一個 Request, Server 端立即就會有一個 Response ,這是一個 Synchronize 的作法,但我們的 Amazing-Runtime-Platform 收到 Requset 時,是將你的訊息先暫存於 Message Server,此時後端系統程式發現有訂單訊息進入之後取出訂單資料一筆一筆處理,再利用 Android 的 method 去接收後端回傳的訊息,最後將他 Response 給你,這是我們利用 Asynchronous 非同步的作法。

非同步有什麼好處呢?

當後端系統程式出錯時,前方的 Message Server 不會因而癱瘓,因為訂單資料全部先暫存在 Message Server上,只要等待後端系統程式恢復正常,即可繼續處理訂單,訂單也不會因為程式無法運作而流失。

另外一個優點,是在短時間內湧進大量訂單時,如果系統是採用同步的方式,直接呼叫 Service,顧客可能需要等待相當長的時間才能看到後端完成訊息,甚至因為處理過久而造成逾時(如資料庫處理時間太久以致逾時);如果採用非同步訊息傳遞機制,在客戶下訂單後可直接告知系統已在處理中,並讓後端結帳系統程式逐一處理,並於稍後再通知客戶處理情況;一來可以縮短客戶需要即時等待結帳的缺點,也可以降低因為處理逾時造成的失敗。
to be continue.......
張貼留言