zoukankan      html  css  js  c++  java
  • Net与Flex入门

         开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF(ActionScript Message Format)协议通信网关,我们可以通过FluorineFx很方便的完成与.NET的通信。 另外还可以轻松的实现及时文字沟通、视频语音通信等及时交互系统的开发。

         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>

  • 相关阅读:
    HTML5新特性之文件和二进制数据的操作
    HTML5本地存储之IndexedDB
    HTML5新标签之Canvas
    HTML5 Canvas实战之烟花效果
    Asp.NET core/net 5接口返回实体含有long/int64的属性序列后最后几位变为0的解决
    Aero for WTL application
    C++WTL基于MCI的音频播放器源码
    c++ 深拷贝,浅拷贝,赋值操作的调用情况
    发布一个生成按钮图片的工具 c#写的
    贴图:CImage VS Bitmap
  • 原文地址:https://www.cnblogs.com/yidianfeng/p/2233029.html
Copyright © 2011-2022 走看看