不做浮躁的人
          正在行走的人...
          posts - 171,  comments - 51,  trackbacks - 0
          復習筆記,依復習進度記載:
          1、為什么選用amf,而不選用json
          首先,amf支持數據對象圖,比如A對象和B對象都有C對象屬性,那么amf時,只有一個C對象,效率比Json高。尤其是recurive時的情景,A對象有List<D>,而D又有A a屬性,這種串行化在json里面只能修改為單向關系。
          其次:amf好歹是緊促的二進制協議。
          再次:我喜歡客戶端的強類型模型。

          2、TideResponder有什么作用?
          首先,能夠傳遞一個token對象,這個對象在resultEvent和faultEvent事件中使用,當然有些人的做法是定義一個類屬性來記載這個token對象,不太優雅,建議用TideResponder。
          例:var responder:TideResponder=new TideResponder(resultHandler,faultHander,"tokenData");

          其次:可以提供一個和服務端返回結果合并的返回對象。
          tideContext.productService.findAllProducts(new TideResponder(resultHandler, null, null, products));返回值和products合并,一般要求products為非空,這種合并作用于集合或者對象類型(具有uid屬性),但是對簡單類型沒有作用。

          3、Service initializer
          Tide remoting應用可以不用service-config.xml配置文件,可以手工定義remoting channels,最簡單的就是使用內置的DefaultServiceInitializer,比如在應用創建完畢事件中增加:
          Tide.getInstance().addComponentWithFactory("serviceInitializer", DefaultServiceInitializer,
          { contextRoot: "/context-root" }//可以提供serverName和serverPort
          );

          4、客戶端消息攔截器
          這個相當有用,aop,可以在所有的遠程調用中增加通用行為,比如顯示和隱藏等待界面或者設置定制headers,接口見IMessageInterceptor,里面有before和after兩個方法需要實現。

          5、全局異常處理器
          這個比較重要,可以在客戶端各個異常碼定義通用的處理方法,在服務端可以定義異常轉換,將服務端異常轉換為通用的異常編碼。
          需要在服務端定義ExceptionConverter類。當graniteds配置scan=true時,必須確保META-INF/granite-config.properties文件存在,盡管為空。
          在flex端,需要定義異常處理類:
          public class EntityNotFoundExceptionHandler implements IExceptionHandler {
          public function accepts(emsg:ErrorMessage):Boolean {
          return emsg.faultCode == "Persistence.EntityNotFound";
          }
          public function handle(context:BaseContext, emsg:ErrorMessage):void {
          Alert.show("Entity not found: " + emsg.message);
          }
          }
          并且在靜態初始化塊中注冊,確保在任何其他操作之前完成注冊:
          Tide.getInstance().addExceptionHandler(EntityNotFoundExceptionHandler);
          6、Tide.showBusyCursor:在執行遠程調用時是否顯示busy mouse cursor。
              Tide.busy:綁定型屬性,用于判斷是否正處于遠程調用,這個很有用,應用中需要避免誤操作多次點擊調用。   
              Tide.disconnected:當網絡出現錯誤,將設置為true,每次成功調用,將設置為true,這個屬性一般只能做狀態顯示。

          7、per-destination security:可以對每個destination進行安全控制,編寫extends DestinationSecuirzer,并在配置文件中進行如下配置:
          <destination id="restrictedDestination">
          ...
          <properties>
          <securizer>path.to.MyDestinationSecurizer</securizer>
          </properties>
          </destination>



             
          posted on 2013-02-09 00:42 不做浮躁的人 閱讀(459) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2013年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          242526272812
          3456789

          常用鏈接

          留言簿(9)

          隨筆分類(31)

          隨筆檔案(75)

          文章分類(1)

          文章檔案(3)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 开原市| 若尔盖县| 东台市| 中山市| 崇礼县| 义马市| 蓝山县| 曲靖市| 潞城市| 麦盖提县| 昂仁县| 恩平市| 尤溪县| 疏附县| 江北区| 通州市| 特克斯县| 安丘市| 锡林郭勒盟| 文安县| 名山县| 吕梁市| 谷城县| 台北市| 建湖县| 武城县| 呈贡县| 芦山县| 奎屯市| 山西省| 武平县| 沅陵县| 增城市| 禄丰县| 扎囊县| 南溪县| 上思县| 万载县| 西盟| 彭山县| 石狮市|