Flex 答客問2:Flex 2 and .NET, a nice pair ?

In flex   July 29, 2006 - 10:16 pm

—-

您好,我想请教一下,flex能用在asp.net环境下吗?
我意思是说能不能在IIS6.0下面建立mxml的运行平台.
因为我主要是用c#编程,c#在我用起来更容易上手相对java而言.flex对于页面的设计是最好的了.
我的想法就是C#做后台逻辑编程,flex做前台设计页面.
不知有没有相关的方法可以学习?
thx:)

—-

Flex 2 與 .NET 是否能夠搭配運行一直是 forum 與 mailing list 上熱門的 faq,今天正好一次整理出來。

基本上 Flex與後台 (Application server)交換資料的方式有下列四種:

-HttpService

-Web Service

-Remote Object

-FDS (Data Service, Messaging)

分別介紹如下:

1、HttpService

這是最簡單也最常見的資料交換方式,就是透過 Http get/post 來傳純文字資料,大部份 web application 都是這樣運作的。

這個方式的好處是非常普及,所有的後台系統一定都可以吃的下這種資料,但缺點則是 complex data type 要經過複雜的序列化與解序列化程序才能在 client/server間交換。

以 .NET 來說,任何一個 asp.net 的頁面都可以透過 get/post 與 flex client 交換資料。

2、WebService

WebService 也是很常見的選擇,好處是規則共通方便不同技術平台交換資料,缺點則同樣是某些複雜資料結構無法輕易的交換,在編碼與解碼的過程中往往會出現意外,例如 Date 的表現方式。

以 .NET 來說,使用 web service 應該是再方便不過的選擇,只要把 asmx 檔案準備好再從 flex client 呼叫即可。

3、Remote Object

這就是傳統的 Flash Remoting, 透過 AMF 以 binary 的方式來回交換資料,主要優點是體積小且支援 flash native object,例如 Array, Value Object 等都可直接傳送,在 server 端也會自動對應到正確的 type。

但由於 Flex 2 (或者應該說是 Flash Player 9 / AS3)使用的是新式的 AMF3 格式,而目前 Adobe 官方販售的 flash remoting for .net (與 open source 的 fluorine只支援舊版的 AMF0,因此沒辦法直接裝了就用。

edit: Fluorine 現在已支援 AMF3。

變通方法則是直接操作 flash.net.NetConnection 並指定使用 AMF0 與 server連線即可;Renaun 寫了一個小工具方便大家操作,可以下載直接使用。

附帶一提,這個小工具也同時適用於 AMFPHP/OpenAMF等各種 AMF0-only 的remoting gateway,所以如果你寫 Flex 2 又想透過 remoting 連接既有的各種 server remoting gateway, 抓這個就沒錯了。

4、FDS (Data Service, Messaging)

Flex Data Service 是 Flex 2 裏新出現的技術,主要目地是希望提供更自動的方法來讓 client 與 server 交換資料,它的核心實際上仍然是 AMF 與 RTMP (對,就是 Flash Media Server 用的那種),部份功能也與 FMS 重疊,但它著重在 Data Sharing 與 Exchange 這部份。

目前 FDS 只有 Java 的版本,也就是 server 端要用 java 寫,但 Adobe 宣稱將來會有 FDS for .NET 版。

不過好消息是,有一家叫 theMidnightCoders 的公司搶先推出了 FDS 相容版本,不但同時支援 AMF0 與 AMF3,更支援部份 FDS 的功能(主要是資料同步的部份,與server端的衝突處理與資料儲存)。

以 .NET 來說,付費的選擇中 weborb 算是目前最優的選擇,價錢只有官方版的一半,但功能更完整;而免錢的選擇則當非 Fluorine 莫屬。

*結論

所以簡單的結論是,.NET 當然可以愉快的與 Flex 2合作,通常最熱門的選擇是 web service, 因為大部份使用 .NET 的人都對這個方式比較熟悉,但我個人比較偏好 flash remoting,主要著眼於它 binary 傳輸的特性跟支援 native type,讓資料在 client / server 端傳送與處理上比較方便。

所以如果要用 .NET 做後台,只要把 Flex 裏編譯好的 swf 檔放到 wwwroot 下就可以執行了。

至於學習資料方面,Flex 手冊裏關於 WebService 物件的操作可以多看一下,至於 remoting 部份則可以找任何一本有講 Flash remoting 的書(例如 Flash Remoting: The Definitive Guide 裏面就有介紹如何使用 NetConnection 連接 remoting gateway)。

by admin

15 Comments Add your own

  • 1. CAMES&hellip  |  July 31st, 2006 at 11:51 am

    FLEX有沒有類似FCKEditer這類的Rich Text Editer,
    如果沒有,那我要如何與網頁的FCKEditer整合啊!

  • 2. saicn&hellip  |  July 31st, 2006 at 12:31 pm

    对的,所以我现在就是 用的 flex2 +.net wsdl上

  • 3. jeremy&hellip  |  July 31st, 2006 at 2:27 pm

    Flex 2 有內建一個 Rich Text Editor 啊,在 Control 那一類裏面找一下就有。

  • 4. henry&hellip  |  August 11th, 2006 at 11:04 am

    想请教个问题。
    通过Flex调用.NET WebService方法,由于方法参数类型是ArrayList(不定类型数组)
    那如何映射Flex在建Array里的成员类型对应相关.NET类型。

  • 5. jeremy&hellip  |  August 11th, 2006 at 12:03 pm

    Jesse Warden 有個 Flex 2 + web serice 的範例:
    http://tinyurl.com/evxou

    看裏面的 com.jxl.amazon.business.SearchDelegate.as 就有示範如何將取回的 raw XML(ArrayList) 轉換為 Flex 內的 value object (BookVO)。

    基本上一切都是手工藝,用 E4X 去 parse xml 後再重組回 VO。

  • 6. henry&hellip  |  August 11th, 2006 at 1:27 pm

    我要的效果刚好是相反。
    不过发现一个奇怪的问题在Flex的Array存储的是Object
    时,把它作为参调用WebService 时会产生相关的XML描述。
    当Array存储自定义类调用WebService确没有产生相关XML描述。
    请问是不是在自定义类时需要加上可序列化的标记?

  • 7. jeremy&hellip  |  August 13th, 2006 at 11:52 pm

    這個問題很有趣,我正在研究中,有結果時會回信給你。

  • 8. jeremy&hellip  |  August 16th, 2006 at 11:57 am

    啊 有結果了,答案是:adobe 官方也知道有這個問題,而且從 v1.5時代就有,到現在一直沒修好,確實是跟 WDSL 有關,目前官方的工程師已經在調查了,有結果時我會再貼上來。

    btw, 用 flash remoting 就不會有這種問題啊~

  • 9. dannyr&hellip  |  August 18th, 2006 at 9:43 am

    答非所问!

  • 10. jeremy&hellip  |  August 18th, 2006 at 10:19 am

    which part are you referring to ?

  • 11. usherlight&hellip  |  August 29th, 2006 at 12:06 pm

    —————
    open source 的 fluorine只支援舊版的 AMF0
    —————

    Fluorine现在已经支持AMF3

  • 12. jeremy&hellip  |  August 29th, 2006 at 1:27 pm

    感謝,已更新。

  • 13. Troy&hellip  |  September 4th, 2007 at 6:49 pm

    Hello我是一個剛開始學習Flex的新手,過去是C#/VB.NET的程式設計師,目前對於與資料庫溝通方式也從網路上略為知道幾種方式,目前在Remoting和Web service當中想要選擇一種,目前看來就是效率與使用便利性上的選擇了,不過小弟對於趨勢就不是很了解了,所以想要請教目前趨勢上,使用哪一種在將來會是比較受發展者所青睞的技術呢?

  • 14. jeremy&hellip  |  September 4th, 2007 at 7:32 pm

    呃,這個問題很像在問 windows or mac 比較好,不論怎麼回答都會有人抗議啊~:D

    以我的觀點,remoting (或正確一點說是 AMF 這個格式)有著絕對的優勢,體積小,又支援 native object,目前市場上配套的 solution 也挺多,是很好的選擇。

  • 15.  |  August 12th, 2009 at 9:37 am

    flex一定要連接後台資料庫嗎?

留言回應

hidden

您的留言會先經過站長認証後才刊登在網站上。
your comments will be approved by Administrator before appearing on the page.

Trackback this post  |  Subscribe to the comments via RSS Feed

mobile phone