比較Adobe和M$的RIA解決方案

要比較Adobe和M$的RIA解決方案,本身頗難回答,因為從開發者角度出發,除非兩者皆有涉獵,否則從技術、開發流程、團隊合作等去說,受開發者本身認知多少所局限,還有官方所發表含宣傳水份的公告誤導。而且,現在已經出現一些Adobe陣營既得利益開發者,為了搶專案,力保自己技能等,聲嘶力竭去讚好Adobe技術,否定其他一切,外人很容易被誤導。 所以我傾向以抽離角度去看,究竟RIA是什麼?用戶究竟又需要什麼?經常聽到有人說RIA就是將Web Application變得像Desktop Application。這是指界面上一樣?保留類似Win Form東西?還是有Desktop Application的操作方式? 先說界面,從Macromedia起初拋出的RIA例子,我們可以看到,所謂RIA,著重以較圖像,視覺化的操作方式去處理數據,用Mouse控制比用鍵盤輸入Data的機會較多。操作過程還要加一點動畫,讓用戶感到非常炫目。為了達到這目標,所用的是Flash IDE,開發的人是一群既懂設計,又懂編程的Interactive Developer,以Flash MX開始,這群人已經有5年經驗,因此究竟RIA變成甚麼樣,過去一直是由這群人去定義。 到了現在,我們見到Adobe將昨天Macromedia打倒,RIA定義變了質,由Flex 2產品去看,RIA就是要將Win Form東西在Browser/AIR裡重建。從它將AS3徹底改寫,以取悅傳統Programmer的編寫方法去發展,我從來不相信AVM改善效率等於要把過去的語法等東西否定。Flex 2提供組件,徹力讓Programmer可以做一個像樣點Win Form,可惜,Flex 2提供組件,質量、效能和可用性都很一般,根本做出來的Win Form,操作上跟Desktop Application仍然相差很遠。RIA定義被一群既無美感,又不懂互動性和可用性Programmer操縱,可見不久將來會看到大量灰色、黑沉沉的Flex Application出現來折騰用戶。 至於Flash CS3, Adobe的策略根本是放棄它在RIA開發上貢獻,Flash CS3是RIA開發上最沒有改善,甚至倒退的昇級版。 因此,對於興趣或專注在RIA上Interactive Developer,現在是否有他們選擇位置?我見到是沒有,除非他們轉到去Flex,還是轉投M$,否則每天繼續做一些廣告文宣式的商業Flash站,寫點Flash Games。 對於Desktop Application的操作方式,在RIA中有什麼意義?答案是從可用性角度去出發--不要跟用戶習慣作對。因此當初HTML Application的局限,很多用戶習慣了操作方式無法實現,才有了當初Macromedia以Flash乘虛而入的RIA概念。因此我們去比較RIA解決方案,可以從用戶角度考慮,更要從用例考慮。 在保留Desktop Application操作方式上再加一點炫目動畫,是從MacOSX開始,連Vista都要走方面,因此WPF很順理成章,是M$給他們開發者的Bonus。M$ Expression產品工具很齊全,缺的只是沒有美工和Interactive Developer。Adobe通過AIR努力補圓Desktop Application上缺失,Adobe產品都很濫,可是就是沒有真正有整合能力的工具給美工和Interactive Developer。一方有工具沒有人才,一方則有人才沒有工具。 這些5年經驗Interactive Developer,你會怎樣走? 從Desktop Application用例方面,Application除了鍵盤輸入、Mouse操作,更包括跨軟體的通訊,例如跨軟體Copy-n-paste、MacOSX不同軟體可以通過Growl傳訊等。因此,未來的RIA戰場,其實是回到Desktop而不是Browser。 既然Adobe愚蠢地將RIA定義由圖像,視覺化的操作方式,變回Win Form上提昇,放棄有經驗的人才而取悅外人,跟M$等回到Desktop上大戰,在Flex 2 Component質劣到跨軟體的弱整合能力。我只看到它放棄最好士兵,最好戰場,回到泥漿中背水一戰。

[MAX2006台灣] MAX2006感想

因為剛從北京回來不久,不想短時間內又出門,所以沒有打算參加今年台灣的MAX,後來因為看到一些Flex題目和講者,自己感到興趣,在倉促情況下決定參加。最後,我竟然主要參加了Design (Track A)為主的題目,慶幸自己選對了題目,對於今次的MAX2006,我十分享受,感覺非常好,而且很有收穫。如果真是參加了那些Flex等開發者題目,真是活生生悶死。 過去兩屆的MAX,因為我是講者和得獎者,錯過了很多精彩的講者和題目,這次做回一個觀眾,才明白MAX的勉力,你認真投入每一場題目,選對了講者,一定很有Inspiration(啟發)。 對於別人抱怨今年MAX的題目很少和不吸引,其實我不認為,因為Track A仍然有很多吸引的講者,我選題目的策略是: 關於開發者題目,一定不選,針對這裡觀眾水平,一定是入門級,甚至流於行銷式的Demo和紙上談兵而已,況且網上的資源太多,沒有必要花錢入場上課。 不選Adobe員工主講的題目,就算他們以前是著名Flasher,一進入Adobe,就立即質變,Adobe員工主講的題目,統一Powerpoint範本,沉悶的表演,公式化、上課化的行銷式演講,再沒有抱怨,只有一味唱好。(例如Justin Everett-Church、Ted Patrick)。 Mobile題目不選,原因同1,技術方面一定流於入門,展示方面則變成該講者行銷宣傳,外國例子根本不能適用國內。 所以最好選Design題目,特別是那些著名藝術家,平時網上難得見到他們的(商業)作品,而且從他們的講解,往往可以學習到他們如何構思、蘊釀、製作每件作品。(題目:Quasimondo.com:Mashup Baby!、Crash!Media:互動式的想像空間、Oculart.com:純藝術中的After Effects、Erik Natzke:如何保持他們興味盎然) 原來打算聽題目,最後變成這樣: 平排的時段,左邊是先入場的題目,但發現講者講得太悶,決定蟬過別枝。 不過,很多人跟我一樣,對Design的題目感興趣,所以每個Track A題目,一定大排長龍,第1天,主辦單位沒有經驗,將房間平均劃分,結果Mashup Baby!那場,所多人要站在後面看,第2天改善了,主辦單位將Track A房間打通成兩間(簡直是Keynote時段大小),所有人都有位子坐了。 今年參加人數,我想在400人左右,午餐時,每張檯可坐11人,共45張檯,後面的檯,約70%/80%滿。 另外,今年新增了”Birds-of-a-Feather” Adobe MAX 同好交流會,我起初以為是講者跟觀眾分組討論,原來又是講師在台上,觀眾在台下(因為沒有可能安排很多的翻譯員吧)。這環節先安排一些本地的朋友分享他們的作品,然後就是一個問答大會,觀眾問,講師答。 去兩年的MAX,我都有同樣感覺,第1天Keynote高潮過後,所有人就像被分割到不同房間,再沒有團聚在一起,第2天黃昏,MAX就這樣沉靜地完結。今年情況比較好,會後有一個大抽獎,雖然目的是鼓勵人參觀所有贊助商的攤檔蓋印,收集齊印章才可以參加大抽獎。但我覺得是MAX兩天最好的高潮,講者完成任務,觀眾完成緊密課程,彼此在最輕鬆時候,大家聚首在會場入口大堂,講者輪流抽出得獎者,夾集著掌聲和歡呼聲,為MAX劃上圓滿的句號。 最後,整個MAX最大收穫,就是這張非常巨大的ActionScript 3 Class Diagram海報,原來打算自己將PDF版印出來,現在不用了。海報是中場休息時,突然在報到處免費派發,數量很少,有些人不知道是什麼,也不知道自己是否需要有用,怕吃虧先拿了就算,讓真正需要的人沒法拿到。 其他文章 MAX2006第1天速記 MAX2006第2天速記

大半年後,我們應該感謝Ajax

關於Flash前途,我過去提過兩次,分別針對微軟WPF的《Macromedia怎樣面對來勢洶洶的M$ Avalon?》和針對Ajax的《展望2006年,Flash未來未有來!》,Ajax那篇引起很大迴響,被四處轉載。大半年過了,先看看我的「預言」變成怎樣… 基本上再沒有意義去爭論什麼Flash vs Ajax,因為Ajax已經落地生根了,慢慢溶入各種網頁中,簡單到如圖片,都可以用XMLHttpRequest暗中載入圖片作預載。連Adobe都有Spry framework for Ajax,宣傳Flex2的字眼都是Go Beyond Ajax with Flex(以Flex來超越Ajax),正如我在台灣MMUG演講指出,未來的應用,應該是Ajax(HTML)為主,Flash為輔,所以Adobe想了Flex-Ajax Bridge,希望Flex幫助Ajax。 一如我所料,前Macromedia CEO Stephen A. Elop已經宣佈離開Adobe。 Flex2和Flash Player 9終於出來了,而且如M$以本傷人般,Flex2免費的德政,使各開發者,ISV十分興奮。 文本開發方式,效率提高了的組件,Compiler等我舊文批評過的東西都實現了。 Apollo概念已經浮出水面,現在只等它實際產品出來。 Adobe的電子報Edge終於改回HTML+CSS,Adobe越來越明白到Flash適當的定位,期待Exchange和Store都轉回Ajax(HTML)+CSS。 很多人原以為Flash/Flex的對手是M$的WPF,結果WPF繼續遙遙無期,實際上Adobe對Ajax這突然殺出來的對手怕得要死。首先說一件小事,前天(19-7-2006)我參加了Adobe(HK)對Partners舉行的Flex2發佈會,美國派了一位Flex Product Marketing Manager來香港介紹Flex2,發佈會主要目的是希望本地Partners,即各開發者在開發專案時,選擇用Flex2,並向客戶推介Flex2。其中一張簡報,吸引了我的注意力。Marketing Manager解釋為什麼昂貴的Flex 1.5,到了Flex2時會突然大減價和免費,原因很簡單,因為Ajax!Adobe啞子吃黃蓮,自己耕耘,別人收割。努力推廣所謂RIA概念多年,水仍然沸不到,Ajax不客氣借來用,結果平地一聲雷,使大眾明白什麼是RIA,廣為熱衷於RIA這概念。倒頭來Adobe要感謝Ajax帶起RIA熱,更努力地拉著Ajax的袖子,借Ajax來宣傳Flex,什麼所謂Flex2 is for creating Ajax-style applications。Adobe很想告訴人家Flex是好過Ajax,但又怕變成對抗局面,卻要自己阿Q地Go Beyond Ajax with Flex。但怕到了二擇一的情況,變成選擇Ajax而不用Flex,所以又要叫人Embracing(包容)Ajax了。(我想Adobe繼續阿Q地自大了,應該是相反,希望Ajax embraces Flash) 當然,我一直都同意Ajax應該和Flash結合,才能做到最好的產品。Adobe要醒悟Flash在什麼位置定位,Flex有什麼效能上優點,開發上優點,例如效能,Ajax載入5000筆數據要35秒,Flex只是1/5秒(配合FDS,即AMF格式載入)。 Adobe應以Flex技術作宣傳,不要盲目跟風,在Ajax炒作點上去宣傳Flex。 最後,Adobe要感謝Ajax,因為RIA熱終於來了。我們開發者也要感謝Ajax,因為Flex可以免費用。順帶一提,Flex Data Service Express是免費,只限在單一CPU上運行(Physical One CPU,即Duo Core也是當一個),不可Clustering Server,但容許無限Application在它上運作(以前網上流傳只限一個Application是錯誤的),Flex Product Marketing Manager更說Connection和Bandwidth數量是不限(我有點懷疑,待求證)。對於普遍開發者來說,整個Flex開發解決方案,已經是完全免費了。感謝Ajax!偉大的Ajax!它繼承了RIA的光榮傳統,Ajax在這一刻靈魂附體!RIA從今天起,不會只有一個Flash在戰鬥,不會只有Flex!

Socket應用夢成空

ActionScript 3的Socket Class使很多人雀躍,認為可以製作Flash Client版的Email, FTP(不能讀取本地檔案路徑已經第一個被否決了), IRC, Newsgruop Reader, VNC, AIM, MSN…等。不過,別忘記一個Flash Player天生的咀咒,那媲美GFW的SandBox,Flash Player不容許Socket連接Cross Domain或者低於1024的Port,所以以上熱門的例子,只可以下載在本地測試玩玩,要網上部署通用版(連接任何Domain),還是乖乖自己寫一個Socket Proxy Server吧!ActionScript 3對Ajax的最大武器Socket原來只是個笑話。

展望2006年,Flash未來未有來!

經過2005年的時間,做過大大小小不同的Flash應用,當我忙於為2006年第一個重頭而大型的Ajax專案做準備、文檔和可行性研究等時,我不禁不斷問自己,Flash的未來在哪裡?Flash的優勢在哪裡?Flash的重要性在哪裡? 我的角色 先從自己的角色說起,我平日工作是做Flash,這是人所共知的,但不只是Flash這麼簡單,我可是一個諮詢、協調和開發的角色,首先因應客戶的問題和預算,提供硬體上和軟體上的建議,例如要用什麼Server?什麼OS?Linux/Windows?什麼Server-side Program和Database等。 在Client-side/Browser/Front End上,我是一個UI Designer,我非常關心怎樣給予使用者最好體驗,包括: 快速下載 簡易操作 界面流暢,慢的電腦也跑得順 不佔用過多CPU Power Cross Browser和Cross Platform 同時我也是一個Information Architect,思考怎樣將Server傳來的數據(Data)轉化為清楚、有用、條理分明的資料(Information/Content),不單只在展示(Presentation)上滿足使用者,更要協助使用者可以將資料再運用,例如:選取Copy-n-Paste、列印、另存、Bookmark、Forward Link等。同時,我更為應用系統研究合適的操作步驟,包括每個操作的Screen Flow,怎樣協助使用者操作、找出錯誤、處理Back Button,提交資料到Server前優化工作等。 到了Server-side,我變成一個中間人角色,跟Programmer溝通,告訴他們需要什麼API供給Front End使用。最簡單層次也要跟很多不懂Flash的Programmer溝通,告訴他們怎樣跟Flash作LoadVars。這個中間人角色在開發過程中,變成了一個System Analysist,因為我要思考的既是怎樣分工,也要考慮到應用系統將來維護和擴展性。分工上簡單地說是怎樣去將應用系統MVC化,讓美工只專注在設計上。維護和擴展性,要考慮到將來增加功能、Localization多語言版本等問題、開放API等Web 2.0的東西。因此,Front End我要周旋於HTML, CSS, JavaScript, XML, XSLT, Flash的取捨,Back End要想2-Tier還是3-Tier,SOA等等問題。這也是我諮詢一部分,給客戶建議,告訴Programmer該做什麼。 因為這個背景,所以我對於Front End技術的選擇非常關心,過去是HTML vs Flash?現在是AJAX vs Flash?Adobe vs M$ vs Open Source?因為HTML對Flash取捨,已經影響了我關心的「使用者最好體驗」,就是剛才提到幾點,同時它也影響了Server架構,例如用Flash是否可以直接連Web Services產生一個簡單2-Tier的SOA? 我的專案 我所有專案,99%都有Flash,基本上所有Flash Spectrum東西我都有做過。我將範圍收窄在網上,即Browser裡東西。Browser裡東西,除了新聞純文字資訊性的網站絕對不需要用Flash外(看新聞影片Video除外),我看到要用Flash地方,其實分為四種:自我介紹的中小企公司網站、電影娛樂產品宣傳的行銷性網站、網上商貿資料搜索性網站、Web Based Application(即純粹解決商業問題的應用程式,由過去C/S搬上B/S)。 公司網站,考慮因素很低,使用者不會長時間留在網站裡,沒有什麼操作,內容更新規模低至少,因此運用HTML或是Flash,基本上由客戶和價錢決定。其實這類網站很依靠Search Engine帶來瀏覽者,純Flash網站怎辦?沒有我提醒,客戶其實很難察覺這大問題。 行銷性網站,一定是Flash,因為多姿多彩,影音娛樂聲色俱全是這些網站必需的,目前有的技術,唯有Flash才能勝任。行銷性網站不會長時間在線,將來維護問題需要很少。 分析運用Flash的優劣 後兩者,就是我最關心的所在。網上商貿資料搜索性網站(下簡稱「資搜網」),除了一般網上購物外,還包括資料搜索性,例如地圖上增值服務、找餐廳、訂酒店機票等服務。這類網站,對於我關心的「使用者最好體驗」最為重要,因為使用者除了要經常使用外,還要對資料再運用。一個用戶體驗為主的網站,如果這方面做得不好,直接是損失商機,例如放棄Check out等。雖然Macromedia的口號是體驗攸關(Experience Matters),不過,我看來,Flash正為這類網站提供最差體驗。 […]

Flash Media Server 2的空歡喜大騙局

早在Flash Media Server 2正式出貨前,已經有傳聞這次Licence有大動作改變,有可能有Unlimited的Licence,現在出來的版本,真是讓人大吃一驚。首先個人版取消,這正常,以前那個版本,根本個人都不夠用。專業版則由2500人/10MBit頻寬變成100人/Unlimited頻寬。Macromedia用意很清楚,FMS2是用作Video Streaming的首要工具,因此對頻寬不作限制,鼓勵人多開發Flash Video網站或應用。 我以前曾作測試,用Flash 8 Video Encoder以On2 VP6最高質素(700kbps)去Encode,畫面640*480,一個人看約佔去100Kbit左右,因為現在專業版只有100個連線,即100*100/1000=10Mbit,結果是同樣價錢USD4,500,1.5有2500/10,2.0變成100/10,Macromedia正玩弄了數字,變相瘋狂加價。 以往可以不停Stack Licence增加人數/頻寬,新版本被限在10個內,即1000/Unlimited。1000人或以上的連線,已經被要求買Origin/Edge版,價錢是天價USD45,000!比Flex 1.5貴3倍多! 已經有客戶問我,我們是否應該轉回Window Media Server,它便宜很多… 2.0版本加了什麼Socket功能,起初遊戲開發者都期待Licence上有突破,用FlashCom+RSO做遊戲真是簡單方便嘛,他們一直想要高Connection,低頻寬的Licence,結果被大減至100人,好夢成空!所謂Socket功能,有意思嗎? 都話Macromedia冇咁好死o架啦 凸-_-凸 期待Red5早日成功! P.S. FlashComGuru的國外開發者留言,簡直怨聲載道!

重新思考XML與Web Services選擇

最近因為Flex 2.0沒有Client-side Remoting連接能力的困擾,再加上即將開始的大型專案,由於客戶對Flash缺乏信心,擔心安全問題,雖然多番解釋,Flash比HTML網站某程度上更安全,但不得要領,結果這個專案最後決定分別做HTML(滿足客戶)和Flash(滿足開發團隊我們自己)兩個版本。這兩件事讓我反思Flash Remoting是否最好的與Server連接技術?由於要配合HTML和Flash兩個版本,數據部分最好能夠共用通用,只是表現層有HTML和Flash之分別,因此能夠讓兩者都接受到的連接技術,只有XML和Web Services。 XML實作上比較簡單,數據大小相對少,配合XSLT已經可以Render出好好HTML網頁。但是在DataType轉換上,又要自己下一番苦工。 Web Services在實作上較麻煩,如果有好的開發用Library配合,工作應該可以輕鬆一點。Web Services數據大小較大,但它也是XML格式再配合Data Type,因此無論在HTML網頁Render上和數據交換上,應該比普通XML有黠優勢。 這專案將來也有向第三者公開的API,因此在數據傳遞實作上,以Web Services作首要選擇,應該是合理的。

Flex Builder 2與RemoteObject的空歡喜大騙局

細心看看Flex Enterprise Services 2的介紹,會發現RemoteObject被納入為功能之一: Flex provides three ways of sending and receiving data using remote procedure calls (RPC). These are the HTTPService, WebService, and RemoteObject tags. The first two can be used by any application built in Flex Builder 2. The RemoteObject tag requires an additional server, such as Flex Enterprise Services, to process the […]

Scale9Grid原來是沒有太大用途的東西

在某Movie Clip定義Scale9Grid,這Scale9Grid只對Movie Clip裡Break Apart的Shape有效,其他Nested Movie Clip, Text, Graphic等通通無效,Nested Movie Clip無效還可以再加Scale9Grid,但Graphic無效真是說不過去。 最可惡是用createEmptyMovieClip, attachMovie, loadMovie(載入打散了Shape的SWF例外)等在Movie Clip裡產生的東西,通通都無效,原本打算為組件做外置Skin的好夢成空了。 最後,用BitmapData來加一個attachBitmap到Movie Clip裡,結果也是失敗!看來要自己動手用BitmapData寫一個Scale9Grid2,唉! 試試9份BitmapData看…

偽善的回應:說再開放Flash Player 6 for Pocket PC免費下載

當初Macromedia停止免費下載Flash Player 6 for Pocket PC,變成USD499買,立即引起非議,Bill Perry試圖解釋說因為Pocket PC版本更新,他們不能再保證Flash Player 6在新的Pocket PC可以運作。另一邊廂,卻以天價販賣,難道買了就沒有問題?這樣雙重標準,世人根本不能信服,結果Macromedia自找麻煩,迫於無奈又要再開放Flash Player 6 for Pocket PC免費下載。不知道何時輪到Flash Lite Player呢? 這樣叫”We Listened“?這樣叫開發者應該感謝Macromedia嗎?當初收起的是你,放回來又是你?這些退兩步進一步技量,別妄想得到人們的美譽,說Macromedia是一家從善如流的公司!