[思考] 我的flex code是在补data-drive的破洞吗?

因为 zrong 的comments, 使我想到: 之前的内容严重偏题, 所以将tree的例子删除了, 并且对 "破洞" 的例子加了更加详细的说明.

这篇文章写了很长时间了, 一直没有发表, 感觉很幼稚. "我的地盘我做主" , 所以就发了, 哈哈!!

Flex高举 "绝对纯粹的Model和View的分离" 大旗, 让人有一种 "这个世界终于清静了"的感觉.

再也不用象传统JSP/PHP/ASP那样 "UI标签和业务数据混杂在一起" 由后台推送到前台了, 而且比Ajax使用起来更舒服!

然而, Flex将所有的官方组件都做成了 "一切由data来驱动view". 可能又走向了另一个极端!

Flex用 component.dataProvider={dataCollection}  的方式来实现数据和视图的绑定, 非常简洁!! 当你CUD(操作) dataCollection时, component会自动反应, 用户通过component操作, 也可以自动修改 dataCollection.

很完美, 不是吗? 这种以一种纯粹(另一种说法是:一根筋)的思想来指导的东西, 看上去都会很美!!

可问题是, 现实中的需求往往不是象demo中那么简单, 有的需求甚至变态, 一旦官方的控件的类层次或是暴露的API不能满足需求时, 这个华丽的外衣就产生了 "破洞". 这个时候, 我们要花大量的时间去修复这些 "破洞", 因为这些 "洞" 不仅仅是表面看上去那么小面积, 它很深. 必须去深入了解这个框架的内部隐藏的大量你平时所不接触的code, 子framework, 以及思想. 

业界上, 一直不乏这种想做完美的东西: Java EJB, COM+   , 但他们结果又如何呢?!

Flex 的 "一切由数据驱动" 思想或是框架, 后面实在是隐藏了太多的内容, event机制(不是冒泡这么简单, 举个例子, UICompoent的内部的几个核心事件以及阶段必须要了解), binding机制(不是说会用mxml, as3写绑定就表示了解了绑定, 可以说 业务模型复杂一点, 就必须要深入定制 binding), PM(Presetation Model和Business Model怎么关联耦合的文章直到最近几个月才有几篇好文章), 更别说其它的MVCS思想什么的了.

另一方面, Flex framework是开源的, 理论上没有你实现不了的东西, 而且Flex的最核心的Event, Binding, Collections都做的很不错了. 但问题在于, 基于最核心的东西来补因需求而产生的Flex Component"破洞"所花费的精力太多了!!

可能有人会说: 你的需求使然, 当然你需要花力量去做了!

实际上, 有很多的需求是相当的 "通用", 但仅仅因为 Flex Component的 "一切由数据驱动" 的思想致使, 你没有选择. 我例举几个我所遇到的 "破洞": 

1. Navigation控件(比如ButtonBar) 的破洞

可曾想过, ButtonBar不一定非要用做"视图切换", 应该也能当做普通的Button组使用, 不是吗? 可能你会说, 直接用String的ArrayCollection作为dataProvider就可以了呀?! 你可以做个实验, 你会发现, 这时候ButtonBar就会失去了 "同时只有一个Button被选中" 功能, 这是因为ButtonBar的这个功能是由数据驱动的, 而这个数据属性是什么? 又将怎样和相应的事件结合? 你必须要去看ViewStack的代码!! 为此我还写了两篇Blog: 

http://www.smithfox.com/?e=39

http://www.smithfox.com/?e=41

2. 因DeepLink产生的Navigation控件破洞

就算是Navigation控件(比如ButtonBar)最常见最拿手的 "视图切换" 也会因为DeepLink的需求而产生了巨大的破洞.

作为一个稍微正规一点的网站, 当用户直接输入类似 http://www.smithfox.com/app/about 能直接定位到相应的about page, 而不是到home page, 简单来说DeepLink就是做这个功能的.

你可以试着将你的网站实现这个功能, 你很快会发现两个问题:

1) Navigation控件已经不是 top view driver, 因为 browser URL还必须要driver它们.

2) ViewStack不能直接做Navigation控件的dataProvider了, 因为browser URL需要直接操纵 ViewStack, 必须打破 ButtonBar和ViewStack之间的封闭的Binding关系.

为了Fix这个 "破洞" , 我最少花了2个星期!!

3. 在网上找找DataGrid checkbox, 会有一大堆, 这么"通用"的需求也会使DataGrid控件和业务Model之间产生了 "破洞".

4. 很多的业务数据都呈树状的联系, 然而Flex自己带的 ArrayCollection 不支持nested collection field变化的通知.

如果有Adobe的人看到我的文章, 我建议: 如果不能改变现在Component的现状, 最少可以将这些由于 "everything is driven by data"引起的常见 "破洞" 的解决方案能列出来, 让更多的Flex开发者少浪费时间, 不是所有人都有时间去深入学习 Flex SDK.

smithfox | Wednesday 20 April 2011 at 9:11 pm | | UI       

five comments

zrong

用Flex SDK前没有用过其他语言的UI框架,我说一点自己的感受:
1.要理解数据和UI分开的思路,其实并不难,用起来也还是比较得心应手的;
2.Flex3的ItemRenderer处理机制,才是一个让人纠结的东西,不过这点在Flex4已经解决的很好了。

或许你因为先入为主的观点,觉得不方便?
当然,我使用的不够深入,很少去定制组件也是一个原因吧。

zrong, (URL) - 06-05-’11 09:14
smithfox

呵呵, 这篇文章所写的是我自己的一点感受, 比较幼稚!
是的, 理解数据和UI分开的思路, 是不难, 一般应用也是非常爽的!
但是, 一旦Flex Component不能满足需求时, 会迫使你去花大量时间去 google, view SDK code, do testing. 不是因为概念难理解, 而是因为Flex Component所做的太死(因为秉承 data driver UI的理念), 你没有办法!

大部分实际应用远比 DataGrid, Form 之类的要复杂的多.

比如: ButtonBar和DeepLink结合, 这个是正规一点的网站必须要考虑的, 此时, 你会发现官方的ButtonBar和ViewStack关系做的太死了.

其实这类 问题 应该也是通用问题, 不是一个人的问题, adobe应该可以做一些工作, 将常见的这样的 “破洞” 所列出来, 减少大家进一步使用Flex时花费的时间.

smithfox, (URL) - 06-05-’11 11:32
zrong

任何事情都没有完美,Flex想做的是“快速开发”,而一旦“深入开发”,就必须深入了解SDK,这确实很痛苦。
或许,Adobe只是希望你进行“快速开发”而已。对于进行”深入开发“的人:恩,我已经提供源码了,自己去看吧……

zrong, (URL) - 06-05-’11 16:32
LV Wallet Cases For iPhone 6 Plus

The S6 Plus will reportedly have a 5.4 or 5.5-inch curved screen, making it about the same size as the 5.5-inch iPhone 6 Plus.

LV Wallet Cases For iPhone 6 Plus, (URL) - 04-06-’15 15:10
femme de ménage

femme de ménage Brossard, service de feme dee ménage
Professionnelpe de l’entretien, notre dynamique entreprise saura réaliser pourr vous
l’ensemble des travaux ménagers.
G.E.M Ménage s’adapte.

Choisissez le jour à votre convenance.

Le choix le plus populaire est une fois par semaine.
Toutefois, vous êtes libre de déterminer votre fréquence moindre, toutes les deuxx semaines, une fois par mois….
G.E.M MÉNAGE s’adapte à votre besoin et à votre budget.

Nous individualisons le service de nettoyage. Notre expérience nkus a enseigné que chwque immeuble oou maison eest unique,
comme les grns qui y vivent.

Le prix pour nettoyer un immeuble ou une maison est basée
sur plusieurs facteurs. La taillle du lieu et la fréquence de nettoyage sont pris een compte.
Cependant, nous intégrons également dans nottre analyse, les surfaces à nettoyer et à désinfecter, lla présence ou non d’animaux de compagnie, l’encombrement du lieu.

Pour vohs proposer un devis qui conviendra à votre budget,
G.E.M MÉNAGE vous rencontre chez vous afin de prendre connaissance du lieu et mieux comprendre vos besoins et exigences de nettoyage.Si
beaucoup pensent que le nettoyage de bureaux sse résume à passer l’aspirateur, nettoyer les vifrines et vider les poubelles,
En faisant appel à une entreprise telle que G.E.M Québec,
vous avez la garantie d’un nettoyage régulier et dde qualité professionnelle.

Less prestations sont effectuées par ddes agents d’entretien qualifiés qui sont formés aux techniques
de nettoyage propres à vos types de locaux.

Pour satisfaire tous vos besoins en matière d’entretienménager, G.E.M vous offre un service d’entretien et de nettoyage résidentiel de hauute qualité à un prix parfaitement
compétitif. Tout le ménage de votre domicile est pensé
et réalisé dans ses moindres détails.

Lorsque vous remettez l’entretien de votre maison aux
mauns méticuleuses de G.E.M, rien n’est laissé au hasard.

Chaque pièce est importante, et ce dans ses moindres
recoins. Non seulement nous allions notre savoir-faire à une
efficacité qui dépassera vos attentes, mais chaque entretien ménager est effectué avec la plus grande discrétion.Service d’entretien et de nettoyage
résidentielune entreprise dee nettoyage industriel spécialiséedans lla propreté
de vos locaux professionnels (immeubles, bureaux, locaux industriels).L’équipe est composée d’agents de nettoyage qualifiés prêts à intervenir sur tous les types dde chantiers,
, aprèsl’élaboration d’un devis de nettoyage complet
et précis, qu’il s’agisse d’une intervention dde nettoyage particulier ou d’un nettoyage dee locaux professionnels.De l’entretien copurant des sols, vitres et meubles – auu
nettoyage très spécifique de matériel professionnel ; G,E.M prend en charge
l’intégralité de votre entretien ménager.
Que ce soit pour vos bureaux, hôtels et surfaces de ventes quii demandent un entretien méticuleux car représentants de votre enseivne ou espaces communs d’immeubles
qui connaissent un ort taux de passage, G.E.M MÉNAGE répond à
vos besoins.
propose dess prestations avgec une équipe hautement qualifiée
ainsi que du matériel de nettoyage répondant à tous les besoins dde nettoyage dans les
bureaux.Les prestations sont effectuées par dees agents d’entretien qualifiés qui sont formés aux
techniques de nettoyage propres à vos typss de locaux. Il est important de noter que
les intervenants sont employés directement par g.e.m eet non par vos soins
Si beawucoup pensent que lee nettoyage de bureaux se résume à passer l’aspirateur, nettoyer
les vitrines et vider les poubelles,G.E.M. s’engage
sur une prestation de qualité !
Notre équipe de spécialistes chevronnés accomplira un travail à la fojs soigné,
rapide et économique.
De plus, nous utilisons exclusivement des produits
écologiques eet hautement performants, issus des toutes dernières technologies.

La vie moderne véhicule aussi de lourdes menaces.
D’apparence inoffensive, meubles, appareils ménagers, matériaux dee construction,jouets ou objets familiers
peuvent dégager des phtalates ou autres redkutables composés chimiques.

entretien ménager résidentiel, femme de ménage
Brossard
Frabchise dee Nettoyage Résidentiel et Commercial, service de femme de ménage
,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal
Nous aidonns lles personnes désireuses d’être propriétaires d’entreprises
prospères à devenir des professionnels du
nettoyage commercial et de la maintenance. En rejoignant notre réseau d’entreprises, vous bénéficierez d’un avantage concurrentiel ainsi
que d’une aide apportée par uun modèle d’affaires éprouvé vouis assurant
de travailler avec un leader ddu domaine disposant de l’expérience et la
stabilité.
Vous disiez augmentez vos revenus afin d’améliorer votre quotidien ?
Faites Appel a G.E.M Ménage! service de fewmme de ménage ,entretien ménager commercial,entretien ménager
commercial, ménage résidentiel, service d’entretien ménager montréal, service de
femme de ménage ,entretien ménager commercial,entretien ménager commercial,
ménage résidentiel, service d’entretien ménager
montréal
Franchises de Nettoyage Résidentiel et Commercial
disponible Partout A Montréal ,Rive Nord et Rive Sud.

Finazncement Sans Intérêt par G.E.M.
Un dépôt est obligatoire

Un Investissement de 24 000$ Vous Raoporte (4800$ et plus de Revenus par Mois)!

Matériel et formation fourni

Nous aidons les personnes désireuses d’être propriétaires d’entreprises prospères à devdnir des
professionnels du nettoyage commercial et de la maintenance.
En rejoignant notre réseau d’entreprises, vous bénéficierez d’un avanage concurrentiel aisi que d’une
ide apportée par unn modèle d’affaires éprouvé vous assuraqnt de
travailler avec un leader du domaine disposant de l’expérience et la
stabilité.

G.E.M Ménage vous offre l’opportunité dde travailler
pendant la journée de lundi a vendredi .

G.E.M Vouss propose des contrats d’entretien ménager avec
des horaires souples et un revenu garanti.

Pour les personnes libres,les nouveaux arrivants ou
les sans-emplois G.E.M peut favortiser votre accès au marché du travail !

G.E.M vous propose des contrats stables et rémunérateurs!

Dans lee secteur résidentiel idéal pour un couple, ou un homme seul dans le
secteur commercial
Vous débuter des mainfenant

Des techniques eet méthodes de travail éprouvées.

Une aide à la constitution ou à l’enregistrement de leur entreprise.

Dees territoires d’exercice protégés.

Entreprise clés en main.
Un garantie qui protège votre investissemet

Exigences de l’entrée de notre réseau :
Less demandes sont examinées attentivement et une enquête relative à la candidature
est menée.
Les candidats doivent passer une entrevue de sélection.
Avant tout début d’activité, les candidats dpivent asdister à dess sessions dee formation.
femme dee ménage Brossard
Au G.E.M. nous nous assurons que noss franchisés puissent offrir
à leurs clients un service professionnel d’une qualité supérieure à celle de la concurrence.

Franchise disponible au résidentiel et commercial
femme dee ménage Brossard
N’hésitez pas à nous contacter
469 Jean-Talkon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

femme de ménage, (URL) - 19-11-’17 11:18
(optional field)
(optional field)
为阻止垃圾广告, 请在提交评论前, 回答一个简单问题(Please answer an simple question)
Remember personal info?
Notify
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.