FluorineFx官方提供了安装包的下载和在线文档,可以帮助我们有效的利用FluorineFx来开发。
FluroineFx官方网站:http://www.fluorinefx.com/
FluroineFx下载地址:http://www.fluorinefx.com/download.html
FluroineFx在线文档:http://www.fluorinefx.com/docs/fluorine/index.html
一、服务端的开发
1、通过Microsoft Visual Studio 2008 创建创建解决方案,并添加FluroineFx服务器库
路径:E:\FlexDemo\FlexDemoTest1\ServiceLibrary1
2、添加FluorineFx 网站到解决方案,添加成功后网站会自动引用FluorineFx服务库的dll
路径:E:\FlexDemo\FlexDemoTest1\WebSite1
3、结构如下:
 
4、代码如下:
namespace ServiceLibrary1
{
    /// <summary>
    /// Fluorine sample service.
    /// </summary>
    [RemotingService("Fluorine sample service")]
    public class Sample
    {
        public Sample()
        {
        }
        public string Echo(string text)
        {
            return "Gateway echo: " + text;
        }
        public Contact GetContact()
        {
            Contact c = new Contact { Name = "Fred", Email = "fred@example.com", Phone = "555-1212" };
            return c;
        }
        public FluorineFx.AMF3.ArrayCollection GetContacts()
        {
            FluorineFx.AMF3.ArrayCollection result =
                new FluorineFx.AMF3.ArrayCollection{
                    new Contact { Name = "Fred", Email = "fred@example.com", Phone = "555-1212" },
                    new Contact { Name = "Jane", Email = "jane@example.com", Phone = "555-1213" },
                    new Contact { Name = "Bob", Email = "bob@example.com", Phone = "555-1214" }};
            return result;
        }
        /// <summary>
/// 获取服务端的系统时间
/// </summary>
/// <returns></returns>
        public string GetServerTime()
        {
return DateTime.Now.ToString();
}
        public ArrayCollection GetBooks()
        {
            ArrayCollection array = new ArrayCollection();
            array.Add(new Book(1, "三国演义", "罗贯中", 100.00));
            array.Add(new Book(2, "西游记", "吴承恩", 200.00));
            array.Add(new Book(3, "水浒传", "施耐庵", 300.00));
            array.Add(new Book(4, "红楼梦", "曹雪芹", 400.00));
            return array;
        }
    }
    [FluorineFx.TransferObject]
    public class Book
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Author { get; set; }
        public double Price { get; set; }
        public Book()
        { }
        public Book(int id, string name, string author, double price)
        {
            this.ID = id;
            this.Name = name;
            this.Author = author;
            this.Price = price;
        }
}
}
二、客户端开发
1、首先创建Flex项目
Project location Floder设置为:E:\FlexDemo\FlexDemoTest1\WebSite1\flex4
Application type设置为:Web application,Application
2、 Flex项目创建完毕,下面在通过一些相应的配置就可以通过FluorineFx和.NET通信了。开发项目属性设置面板,设置
Flex Complier: -locale en_US -services "..\..\WEB-INF\flex\services-config.xml" -context-root "/WebSite1"
Flex Build Path:
output folder url:http://localhost:7217/WebSite1/flex4/bin-debug(注意路径大小写)
3、代码如下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
 <mx:RemoteObject id="service" destination="fluorine"
     source="ServiceLibrary1.Sample">
         <mx:method name="Echo" result="onResult1(event)">
         </mx:method>
 </mx:RemoteObject>
      
      <mx:Script>
         <![CDATA[
            import mx.rpc.events.ResultEvent;
            import mx.collections.ArrayCollection;
            import mx.controls.List;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            private var nc:NetConnection;
            private var rs:Responder;
            private var rs1:Responder;
            private function init():void
            {
                nc = new NetConnection();
                rs = new Responder(onResult,onStatus);
                rs1=new Responder(onResult1,onStatus);
                nc.objectEncoding = ObjectEncoding.AMF3;
                nc.connect("http://localhost:7217/WebSite1/Gateway.aspx");
                nc.client = this;
            }
            private function onResult(result:String):void
            {
                this.lbServerTime.text = "服务端系统时间为:" + result;
            }
            private function onStatus(event:Object):void
            {
                trace("Error");
            }
            private function getServerTime(event:MouseEvent):void
            {
                //服务器端所提供的RemotingService的全限定名
                nc.call("ServiceLibrary1.Sample.GetServerTime",rs);
            } 
         internal function onClick():void
         {
             service.Echo(txtInput.text);
           
         }
          
          internal function onResult1(evt:ResultEvent):void
         {
             txtResult.text = evt.result.toString();
         }
         ]]>
     </mx:Script>
     
     <mx:Panel x="53" y="52" width="473" height="361" layout="absolute" title="FluorineFx" fontSize="12">
         <mx:TextInput x="35" y="21" id="txtInput"/>
         <mx:Button x="35" y="63" label="确 定" fontWeight="normal" click="onClick()"/>
         <mx:Label x="35" y="95" text="结 果:"/>
         <mx:TextInput x="35" y="123" width="160" id="txtResult"/>
         <mx:Button x="35" y="176" label="获取服务器系统时间" click="getServerTime(event)"/>
         <mx:Label x="23" y="249" width="402" id="lbServerTime"/>
         <mx:Button x="237" y="125" label="Button"/>
     </mx:Panel>
     
</mx:Application>