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

团队在项目中尝试使用Adobe Flex构建页面原型,并决定采用Flex进行RIA开发。为了解决Flex前端与ASP.NET后端的整合问题,选择了WebService作为通信方式,并通过技术验证实现了基本的数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

上个星期五我们进入了页面原型的设计和制作阶段。一开始组员们是装了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做的短信管理系统中写短信的界面截图:
[img]http://bestimmung.iblog.com/get/222303/flex_proto_pm.jpg[/img]

看他们做得那么有动力,我也就没再继续使用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端的“页面”:
[img]http://bestimmung.iblog.com/get/222303/hwt_01.jpg[/img]
按下按钮后,获取到WebService提供的"Hello World"字串,并显示在Flex端。
[img]http://bestimmung.iblog.com/get/222303/hwt_02.jpg[/img]

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

HelloWorldFlex.mxml:
[code]<?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>[/code]

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:
[code]<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" />
<authentication mode="Windows" />
</system.web>
</configuration>[/code]

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

在此基础上,明天会放个以Flex为前端的小型原型,把上次放的SampleWebSite改造过来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值