`
RednaxelaFX
  • 浏览: 3016478 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

[开发日志] 尝试在NetOA中使用Flex 2,并利用Web Service与后台的ASP.NET交互

阅读更多
这次真是糟糕了……我们踏入了未知的领域。感到这次项目中新技术的采用有点不受我控制了……
我们组的人本来尝试从老师那里获得支持的次数就比其他组少,现在在页面上我们看来难以获得老师的技术支持了。

上个星期五我们进入了页面原型的设计和制作阶段。一开始组员们是装了DreamWeaver 8准备写HTML的页面原型。但是他们对HTML的熟悉度实在不够高,用DW8感到十分不顺手。我得说,在DW8那样有layout可用的WYSIWYG(所见即所得)编辑器里写HTML都觉得不顺手的话,那还是放弃的比较好。
我很着急,因为别的组的人虽然也未必对HTML有多熟悉,但还是在用DW硬啃。也有用VS2005直接写ASPX+MasterPage的方式的页面原型的组(好重……),无非就是想借助VS2005的Web表单设计器来减轻HTML带来的负担;也不愧是个歪招。那我们组怎么办呢?
我突然想起我们还有Flex 2可用。在星期六的时候把Flex Builder 2传给了组员们,让他们摸索和感受Flex,并用它来实现页面原型的快速构建。基于Eclipse的Flex Builder 2所提供的WYSIWYG设计器比DW的确实是强悍多了;没办法,背后的支持不一样嘛,FB2背后的Flex 2有内建的Layout manager,那比HTML里需要用table或者frame来解决排版问题的状况确实是好多了。组员们似乎很快就上手了,并且喜欢上了Flex 2。或许是跟DW8的使用体验相比反差太大了。

YLY做的短信管理系统中写短信的界面截图:


看他们做得那么有动力,我也就没再继续使用Dojo,而是也转到Flex上来制作我这部分的页面。到今天中午为止,我们的页面算是有了个原型。

但是有问题:我们的页面原型看上去感觉还不错(至少,相对于另外几组?),而且也已经有了许多功能,例如数据校验之类的Flex内建功能,问题是PX和YLY都提出要在后期继续使用Flex来搭建系统的表现层。
我犹豫了,心想如果组里熟悉HTML的只有我的话,到时候做页面就痛苦了;既然他们主动提出想用Flex,干脆就用吧。只不过,原本我预想的是用Dojo+ASP.NET或者直接用ASP.NET AJAX的方式来制作页面,Aspx+C#的开发至少跟JSP+Java非常像,我心里多少还能有个数;现在决定用Flex的话,很多事情都是我原本没做过的,难以估算风险。

然后咬咬牙,豁出去了。就用Flex好了。这下我们就从我相对熟悉一些的Ajax开发转换为RIA开发了。呜呜。
那么问题就转变为如何让Flex的前端与ASP.NET的后端整合起来。我知道的方法有4种(算是吧):
1、HTTPService
2、WebService
3、Remote Object
4、FDS (Flex Data Service)

其中后两种虽然是Flex的比较native的方式,我这次却不太想用,觉得它们离ASP.NET更远了。嗯不,其实是因为我完全没接触过,不会用,不想冒险。用HTTPService的话又得自己拼装/解析XML数据来序列化/反序列化需要传递的对象,嫌麻烦。所以决定采用WebService的方式来实现Flex与ASP.NET的整合。

决定好了就赶紧开工做点技术验证。这个验证能达到以下效果:
先启动WebService。我机上的VS2005在debug模式把这个Web Service project启动到了http://localhost:34270/Service1.asmx。
然后启动Flex端的“页面”:

按下按钮后,获取到WebService提供的"Hello World"字串,并显示在Flex端。


该项目包括以下三个文件:HelloWorldFlex.mxml,这是Flex端的“页面”;Service1.asmx.cs,这是ASP.NET端提供的Web Service;最后是Web.Config,架设WebService不可缺少的配置文件。文件内容如下:

HelloWorldFlex.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:WebService id="hwService" 
        wsdl="http://localhost:34270/Service1.asmx?WSDL"
        useProxy="false">
        <mx:operation name="HelloWorld">
            <mx:request>
            </mx:request>
        </mx:operation>
    </mx:WebService>
    <mx:Script>
        <![CDATA[       
            private function clicked():void {
                hwService.HelloWorld.send();
            }
        ]]>
    </mx:Script>
    <mx:Panel x="10" y="10" width="313" height="200" layout="absolute"
        fontFamily="Times New Roman" fontSize="12" title="Hello world!">
        <mx:Label x="10" y="24" text="{hwService.HelloWorld.lastResult}" />
        <mx:Button x="10" y="53" label="get" click="clicked();"/>
    </mx:Panel> 
</mx:Application>


Service1.asmx.cs:
using System.Web.Services;
using System.Web.Services.Protocols;

namespace WebService1
{
    /// <summary>
    /// A hello world web service.
    /// </summary>
    // 这里的namespace是VS2005给生成的默认命名空间,实际使用时要该到自己的URI上
    [WebService( Namespace = "http://tempuri.org/" )]
    [WebServiceBinding( ConformsTo = WsiProfiles.BasicProfile1_1 )]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld( )
        {
            return "Hello World";
        }
    }
}


Web.Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
        <compilation debug="true" />
        <authentication mode="Windows" />
    </system.web>
</configuration>


========================================================================

在此基础上,明天会放个以Flex为前端的小型原型,把上次放的SampleWebSite改造过来。
分享到:
评论
2 楼 RednaxelaFX 2007-12-20  
sorry...这两天忙了些别的东西,等有空会把那东西和Flex这边的都放出来的。最近精力跟不上需求了啊……
1 楼 lwwin 2007-12-19  
今天还没有放啊……早知道就不通宵下载FLEX2B了……
另外那个好大………………

另外要装ASP.NET就是那个WEB DEV罢?不然没有ASP呢……
WSDL是啥,说说~关心是怎么用的……

相关推荐

Global site tag (gtag.js) - Google Analytics