飞's profile程序人生PhotosBlogListsMore Tools Help

Blog


    July 20

    Flex

    Flex是个好东西。

    我说的是Adobe的那个Flex,不是做词法分析的那个。

    其实我接触这个东西4年了,在学校的时候就在搞,觉得它很不错,当时还是1.0,功能也不错了,当时就觉得它的想法很有创意,浏览器里面的东西,表现能力始终是不足的,必须要有一个东西来加强它,这个东西显然必须是平台无关的一个插件,从当时来说,毫无疑问最适合的就是Flash了,它的漂亮的UI,它日趋完善的编程模型,它的跨平台,多浏览器支持,使得简直不用来做这个简直太浪费了。

    04年的时候有一个朋友在我一个帖子里面问,为什么微软不打击掉Flash,我当时回答,如果打击的话,应该是搞一个类似的浏览器插件,或者干脆改进IE,包含了Flash的全部功能,而不是依赖现在的脚本,全新增强客户端编程,那Flash日子就难过了,Applet也要挂了。到了今天,Silverlight的2.0正式版本即将问世,拥有了全面抗衡并且超越Flash的能力。

    可是Flash的使用方式还是很不适合于业务开发人员,所以很少有人用它来开发应用系统,Flex的出现,改变了这一切。Flex提供了两种应用方式,一种是直接编译成swf文件,类似用直接Flash开发的功能,另外一种是把MXML跟ActionScript文本文件直接部署在服务端,当首次请求的时候再编译成swf文件发送到客户端,类似JSP的首次编译,只是它要把编译结果直接发出去。

    Flex里面的控件比较强大,它的树、数据列表、日期、各种布局面板、图形模块等等,而且拥有很完善的数据绑定和远程调用能力(我会在后续文章里面详细叙述这两个特性)。

    其实Flash调用服务端是比较方便的,不但能够通过HTTP请求,还可以使用Socket进行连接,这个常常被用来作反向推送功能。而常常被人忽视的WebService请求其实是很强大的,比如说有一个asmx,把它的WSDL地址填起来,然后把协议的请求和响应格式都编写到这个Flash里面,就可以很简单地进行远程调用。

    使用.net的朋友应该知道WinForm调用WebService有多么简单,只要添加一个代理,然后基本上就可以像本地调用一样请求了,Flash没有这么直接,但是也比较方便了。

    呵,其实我还是很倾向微软的平台的,为什么呢,因为他的SilverLight甚至支持在浏览器里面跑C#代码,而且能调用WCF,这实在是太大的诱惑了,而且,C#还支持LINQ等等特性,还支持IronPython和IronRuby,尽管我也不知道这些语言怎么写,但是应该能吸引一堆人的,相比来说,ActionScript,哎,不知道怎么描述它好,熟悉ECMAScript的人还好一些,不熟悉这个的一般很受不了,很特别的语法,不过也有好东西的,比如著名的E4X,对XML有特效哦。

    唔,扯到哪里去了,为什么我说话总是跑题?

    后续有一些主题,敬请期待。