<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    走在架構師的大道上 Jack.Wang's home

    Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks
    Flex+J2EE 之小記
    Jack. Wang 2008-9-10(本待完善...)
    wbjeasygo@163.com
    由于本人也是初學者(剛看了兩天視頻),所以請高手指點,這里贊下 blog 名叫交口稱贊的兄弟,他在flex 方面是行家,謝謝了。

    摘要:最近晚上抽出點時間寫了這篇文章,關于 Flex 開發方面的語言和架構,介紹了大家都熟悉的分層結構,著重介紹視圖層(flex 實現),服務控制層和領域模型層,并按照嚴格分層,高解耦合性并結合 Flex 技術實驗了一個用戶管理小模塊,案例不是目的,重要的是介紹開發思想。本文第一部分介紹 Flex 相關技術以及 ActionStript3.0 語言。第二部分介紹開發實例的開發過程,代碼可以下載,亮點在接口工程。由于本人 flex 經驗不足,在以后的工作中會不斷補充。
    關鍵字:Flex, J2EE, 架構
    1. Flex 介紹 
            FLEX,是Rich Internet Applications時代的牛×產物Rich Internet Applications,翻譯成中文為富因特網應用程序。傳統網絡程序的開發是基于頁面的、服務器端數據傳遞的模式,把網絡程序的表示層建立于HTML頁面之上,而HTML是適合于文本的,傳統的基于頁面的系統已經漸漸不能滿足網絡瀏覽者的更高的、全方位的體驗要求了,這就是被Macromedia公司稱之為的“體驗問題”,而富因特網應用程序的出現也就是為了解決這個問題。
           Flex最重要的兩個技術要數AS和MXML, MXML 和 HTML 一樣是標記語言,它描述了反映內容與功能的用戶界面。與 HTML 不同的是,MXML 可對表示層邏輯與用戶界面和服務器端數據綁定提供聲明抽象。MXML 可將表示與業務邏輯的問題徹底分開,以實現最大程度地提高開發人員的生產率及應用程序的重復使用率。MXML 的開發基礎是在迭代過程上,這與其他類型的 Web 應用程序文件如 HTML、JSP、ASP是相同的。開發 MXML 應用程序就象打開一個文件編輯器一樣簡單,只要輸入一些標簽、保存文件,然后在 Web 瀏覽器上打開文件 URL 即可。
            MXML 文件同時也是普通的 XML 文件,所以可以選擇多種開發環境。可以在簡單文件編輯器、專用 XML 編輯器或是支持文件編輯的集成開發環境 (IDE) 中進行開發。由于 MXML 符合 W3C XML 方案的定義,您也可以使用結構化編輯,如代碼著色和代碼提示。 MXML和HTML間最大區別:前者定義的應用是編譯的SWF文件,執行于FlashPlayer客戶端中。后者是基于頁面技術的應用。因此前者能提供更豐富的、動態的UI。MXML不支持Flash的某些特性,例如:時間軸。但是可以利用Flash設計組件并應用在Flex中。MXML應用可以是一個MXML文件,也可以是多個MXML組成,MXML支持MXML文件形式的自定義組件、ActionScript文件形式的自定義組件以及在Flash中建立的自定義組件。 FLEX試圖通過提供一個程序員們已經熟知的工作流和編程模型,讓程序員比從前更快更簡單地開發動畫及RIA應用。在多層式開發模型中,FLEX應用屬于表現層。FLEX的語言和文件結構也試圖把應用程序的邏輯從設計中分離出來
             總之,flex 是未來界面開發的一個好方向,據我了解很多公司都要求員工要學習 flex 技術,可見 flex 受歡迎的程度。
    2 .ActionStript3.0 特性介紹
           ActionScript 是針對 Adobe Flash Player 運行時環境的編程語言,它在 Flash 內容和應用程序中實現了交互性、數據處理以及其它許多功能,ActionScript 是由 Flash Player 中的 ActionScript 虛擬機 (AVM) 來執行的。ActionScript代碼通常被編譯器編譯成“字節碼格式” ,有點類似 java 的處理和運行機制。變過 C#,Java和javascript程序的朋友,肯定能在 ActionScript 中找到這些語言的影子。
     2.1內置命名空間和自定義命名空間
           四個內置修飾符:  
    1 public :對所有代碼可見 
    2 private: 只對類內部可見 
    3 internal :只對定義所在的同一包內可見 
    4 protected :對同一包以及不同包的子類可見

          自定義命名空間:
                 使用關鍵字namespace定義命名空間,聲明屬性和方法時,應用命名空間。
                 AS 代 碼: 
      
    1
    2Namespace testSpace="org.blogjava.jm/testSpace ";   
    3testSpace myfunction2():void{} 
    4 
    5use mySpace2;  
    6myfunction2(); //調用使用 use 關鍵字打開命名空間

    2.2       Local 變量特點    
             與java不同的是,在as3中,變量沒有塊級作用域(即兩人大括號中間),如果在一個塊內聲明了一個變量,比如一個for循環內聲明了一個變量,它在該代碼所在整個函數內都是可訪問的   
    1function myFunction():void{   
    2     for(var i:int=0;i<5:i++){   
    3       var last:int = i;    
    4    }
        
    5     trace(last); //last 在 for 中定義但可以在 for 塊外面訪問到,個人覺得這樣設計欠妥,盡管很方便。   
    6}
     
    2.3       Dynamic 類 
           Object 類本身就是動態類,當然也可以用 dynamic 關鍵字來聲明一個類,所謂動態就是在運行時可以對類追加屬性和方法。  
    1dynamic class Protean{} 
    2var myProtean:Protean = new Protean();  
    3myProtean.name = "jack.wang";  
    4myProtean.password = 3;  
    5trace(myProtean. name , myProtean.password ); 

      2.4       定義函數的兩種方式:函數語句和函數表達式      
     1//函數語句聲明    
     2Function fun1():void{} 
     3       
     4//函數表達式聲明  
     5var fun2:Function = function():void{}  
     6//函數表達式聲明的函數是不能夠被垃圾回收的,必須顯示的調用 delete 命令。
     7var t:Test = new Test(); //t是動態類Test的一個實例 
     8t.funt = function(){};//把一個函數聲明為t的一個屬性 
     9delete t.funt; //刪除剛才新增的函數,我們剛才聲明的函數也被回收了
    10

    2.5       在as3中也有arguments對象,功能基本上和javascript中的一樣。       
              arguments 對象是一個數組,其中包括傳遞給函數的所有參數,arguments.length 屬性報告傳遞給函數的參數數量,(避免將 "arguments" 字符串作為參數名,因為它將遮蔽 arguments 對象) 
     
     function traceArgArray(x:int):void  
     
    {
        
    for (var i:uint = 0; i < arguments.length; i++{  
      trace(arguments[i]); 
     }
       
     }
       
     traceArgArray(
    123);   
     
    // 輸出:    
     
    // 1    
    // 2   
    // 3 
    當然也可以用類似 java 的形式  function traceArgArray(x: int,  args) 

    2.6       在as3中允許定義同名的靜態屬性和實例屬性  

    1
    class StaticTest {  
    2 static var message:String = "static variable";
    3 var message:String = "instance variable";     }
     
    4 var myST:StaticTest = new StaticTest(); 
    5trace(StaticTest.message); 
    // 輸出:靜態變量    trace(myST.message); // 輸出:實例變量 


     2.7       在as中有一個叫做set和get存取器的東西,類似JavaBean,但又有所不同。
    class GetSet 
    private var privateProperty:String;   
    public function get publicAccess():String
    return privateProperty;    
    }

    public function set publicAccess(setValue:String):void  {        privateProperty = setValue;    
    }
      
    }
      


     3 個人實驗介紹
           案例是超級簡單的,開發Web 應用的,不管你是基于 J2EE,.net 平臺還是其他的 PHP 等等都很熟悉分層架構,其中五層是最熟悉不過的了,一般分為表示層,控制層,服務層,模型層和數據層,有的公司干脆就把服務層和模型層合并起來和控制層合并在一起,基于分層的開發可以橫向也可以縱向,由于引入 flex 技術,因為并不是所有人都懂得 flex 開發方式,盡管他和傳統的 Swing, SWT,GWT開發很相近 ,不過這樣需求分析時可以構建可演進的原型系統,界面也很 RIA。
           人們常提面向接口編程于是經常看到 IUser user=new User();這樣的代碼,似乎就是在用接口,但是 new 的動作還是有依賴,于是人們用一些設計模式比如 Factory, Proxy,反射等等模式,后來又有了更好的依賴注入,似乎很完美了,可人們又陷進了過度設計,其實接口應用比直接用原類要多耗費幾個機械指令 User user=new User(),而且在一個內聚的組件中盡量用對象直接連接,該分開的時候我們去用接口分,接口的目的是為了抽象,抽象的目的是為了解耦。
           本開發為了把模型層和服務層完全分開,引入接口工程,也就是單獨開發一個工程來設計接口,這個工程有設計師開發。 用戶接口和工廠接口這兩個類在單獨的工程里開發,以便于模型和服務層同步開發。 在服務層不能對外暴露 IUser 接口,而他也要接受數據,這里用的是 UserVO 對象來封裝數據,服務層不操作模型層的任何實現類,這樣這兩層之間完全解耦,當接口工程和實現完成時候打成 jar 包到 web 工程下 Flex 開發和 HTML開發有很大的不同,客戶端和服務端交互的不是 HTML 而是 XML,所以在服務器端    的 Servlet 就應該輸出 XML 流到客戶端。 最后 Flex 也是一個單獨的工程,通過 HTTPService 和 Web 服務器端交互數據。
    下載:我的實驗代碼
    其他視頻資料:http://www.tkk7.com/Jack2007/archive/2008/09/05/227125.html

    參考文獻
    1.http://ezen.javaeye.com/blog/107397
    2.http://www.nshen.net/blog/article.asp?id=555
    3. http://blog.csdn.net/mozilla/archive/2007/08/23/1756761.aspx
    4.http://hi.baidu.com/jlhh/blog/item/225aea197716b77adab4bd7f.html
    5.http://yexin218.javaeye.com/blog/203032
    6.http://yexin218.javaeye.com/blog/203032
    7.http://www.tkk7.com/realsmy/archive/2008/01/17/176054.html
     8. http://daoger.javaeye.com/blog/204694
     9. http://www.tkk7.com/alps/archive/2008/07/23/216940.html
    10.http://xy-z487.javaeye.com/blog/238074
    11.http://www.pin5i.com/showtopic-19682.html
    12. http://goday.blogbus.com/logs/13402716.html
    13. http://www.flashas.net/html/Flex/20070525/1779.html
    14. http://www.bluejia.cn/blog/?action=show&id=18



    本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
    posted on 2008-09-11 19:03 Jack.Wang 閱讀(5988) 評論(4)  編輯  收藏 所屬分類: 開發技術架構師篇

    Feedback

    # re: Flex+J2EE 之開發與架構 2008-09-11 08:53 交口稱贊
    寫的比較亂,不知道是說代碼,給個例子,還是談架構

    正統的方案是flex+lcds+J2EE
    免費的方案是FLEX+BDS+J2EE
    異構的方案是FLEX+HESSION+XXXX

    HTTPService 和webserivce是下下之選

    而且,完全可以在一個項目里面搞定,不需要分開建項目
    也就是說可以在一個項目里面同時開發flex和J2EE
    前提是你會配置插件和整合項目


    而且沒有你寫的這么復雜,說實話,你給的例子只會讓新手誤解flex很復雜,其實flex是很簡單,開發效率超高的
    幾行代碼的事情
    flex的as3是同態語言,java對象通過bds到前臺可以直接使用
    你可以看看bds的官方例子
    一個后臺取數據的表格
    幾行代碼。直接把后臺一個java的list傳到前臺,顯示在一個表格里面  回復  更多評論
      

    # re: Flex+J2EE 之開發與架構 2008-09-11 09:05 Jack.Wang
    @交口稱贊
    謝謝啦,flex 沒做過東西,只是興趣玩下。
    謝謝指導啊!  回復  更多評論
      

    # re: Flex+J2EE 之小記[未登錄] 2008-09-11 19:10 afeigoo
    能給我mail一份代碼么?afeigoo@163.com
    正在學習中……  回復  更多評論
      

    # re: Flex+J2EE 之小記 2008-09-11 19:17 Jack.Wang
    可以下載了  回復  更多評論
      

    主站蜘蛛池模板: 亚洲激情视频网站| 色欲aⅴ亚洲情无码AV| 1000部禁片黄的免费看| 亚洲综合小说另类图片动图 | 亚洲黄色一级毛片| 在线免费视频一区二区| 久久成人18免费网站 | 99久久免费国产精精品| 亚洲欧洲国产经精品香蕉网| 日韩毛片免费在线观看| 爱丫爱丫影院在线观看免费| 亚洲kkk4444在线观看| 亚洲精品无码国产| 免费毛片在线播放| 高清一区二区三区免费视频| 亚洲AV无码一区二区三区性色 | 中文字幕不卡免费视频| 久久亚洲国产成人影院| 区久久AAA片69亚洲| 毛片大全免费观看| 美女被cao网站免费看在线看| 亚洲人成无码网站在线观看| 久久伊人久久亚洲综合| 亚洲国产精品人人做人人爽 | 亚洲AV无码乱码在线观看裸奔| 成年大片免费视频| 91制片厂制作传媒免费版樱花 | 免费网站看av片| 亚洲另类自拍丝袜第五页| 亚洲AV日韩AV鸥美在线观看| 亚洲精品成人久久久| 扒开双腿猛进入爽爽免费视频| 一区二区三区无码视频免费福利| 午夜亚洲WWW湿好爽| 亚洲一区二区三区在线网站| 亚洲国产一区二区a毛片| 亚洲日本一区二区三区在线| 国产精品四虎在线观看免费 | 亚洲精品国产精品乱码不99 | 亚洲乱码中文字幕综合234| 免费看美女被靠到爽|