不支持Flash
|
|
|
图文:金蝶中间件公司技术总监张勇演讲http://www.sina.com.cn 2008年03月29日 11:50 新浪科技
金蝶技术总监张勇演讲 新浪科技讯 3月29日上午消息,CSDN今日在北京召开2008中国软件技术英雄会。此次英雄会邀请百名专家、技术主管和社区精英,共同探讨技术趋势、个人及企业成长、软件产业和创新等话题,主题演讲涵盖五大领域。 下为金蝶中间件公司技术总监张勇演讲全文。 张勇:站在这个讲台上,一个非常中规中矩的开场白是我是来字某某公司的某某给大家做某某内容的介绍,我今天转变一下本人身份,我今天并不代表任何公司,仅仅代表Apusic OperaMasks这样一个开源社区给大家做一个国内自己的开源技术的介绍,今天我给大家带来的主题叫做Web开发新体验Apusic OperaMasks2.0,既然是新体验,首先请让我们花几分钟时间回顾一下传统的Web开发模式和他的发展历程。在我们把时光转回十年以前,在传统CS架构开发过程中,我们的应用系统可能是用JAVA、C++某种语音开发,我们也会把应用系统分成WILL和MODEL两部分,因为是用同一种语音开发的,所以他们之间的交互是非常简单、自然的事情,但是在BS架构下情况就完全不一样了,应用系统被分成两个部分,随着BS架构的进一步普及,人们并不再仅仅要求说你Web成为一种信息的发布媒介,我们还期望能够成为一种新的应用承载方式,于是人们又发明了一些其他软件,让Web页面变得丰富活泼起来,服务端还有ASP等技术,使我们更快的生成动态网页内容,两者之间的交互又推出Apusic交互模式,让人机体验更加美好,同时我们开发成本越来越高,开发效率并没有获得本质上的提升,没有人们可以难倒人类,我们发明了各种各样框架,这些框架是否能够解决我们所面临的问题?我们发觉这些框架其实只解决了一些局部问题,我们缺乏一个完整的解决方案,并且框架的选择面多,我有时候有的选择固然是一件好事,但选择面过多也会让我们挑花了眼无所适从。 今天我给大家带来的是咱们自己的一个Apusic OperaMasks开源技术,给大家准备了几个关健词,第一是国人的,正中声明本病人不是民族主义分子,也不是所谓的愤青,刚才我们看到那么多开元主义框架确实是夺来品,Apusic OperaMasks是国人自己的开源技术,其次是OpenSoft,采用的协议是LGPS,这是对商业非常友好的协议,基本上意味着你拿着它想干吗就干吗,最后还有一个要注重强调的是获得了今天会议主办方--CSDN2007年软件中国金牛奖,我们看看有哪些特性,新在哪。首先我们说组件技术,是提升软件复用度进而提高软件开发效率一个非常重要的手段,令人遗撼的是,长久以来在BS架构下,缺乏一种统一标准,并且受到业界广泛认可的组件技术,Apusic OperaMasks发展出我们自己的组件,自从有了这个组件以后,我们是基于组件开发,组件形成了客户端的UI,客户端的UI接受用户一些输入请求最终产生HTTP请求,这个HTTP请求经过一系列生命周期以后最终产生请求,我们可以设置成STRMBASK,这时候生成的页面内容就是HTM页面,所以我们说,OperaMasks对阿贾克斯的支持是原生的,把应用系统开发人员所需要关注的阿贾克斯的开发和工作量挪到了引擎和组件开发者身上,无疑这是一个进步。UR是基于组件的,到底什么是UR,UR本质上就是一颗组件数,无论BS架构下的Web页面,本质上都是组件数,就需要有组件数的描述形式,什么才是这颗组件数更好的描述形式呢?无疑XLM,本质上就是树结构。我们提到GSSC技术,做一个文本输入框你仆役这样写W:你还可以变成INPUT,请问什么是INPUT,这就是HTLM页面,对页面设计人员变成非常友好的一件事情,甚至于你还可以这样写,在信息后面指定GSMC属性,有了GSMC我们的页面就友好起来,仅有GSMC并不够。下面给大家介绍Apusic OperaMasks2.0,叫IOVC,在座各位肯定听说过什么叫IOC,控制繁重,什么是IOVC呢?这个V是试图,试图控制反褶,回顾一下CS架构开发,我们发现有一个问题,由于是用同一种语言开发的,相互之间的影响是双向的,但是在BS架构下没有这么简单了,WILL通过HTTP请求送到服务器端,为了达到更好的框架性,我们需要MVC框架,通过这样一个MVC把用户在UR上的输入打包成JAVA B,通过JAVA B和后台的业务逻辑进行交互,请问你在后台模型中试图影响前方的WILL是很困难的,不是做不到,而是做起来非常费力。什么是IOVC,把对WILL的控制注入到你的后台模型中,你就在后太的JAVA B中拥有非常简单的对WILL进行控制的能力,这就是IOVC。 IOVC到底对我们意味着什么?传统的模型是这样的,页面中指定控件,通过其他代码将控件属性和后台的JAVA B联系起来,IOVC不需要这样,页面只需指定一个RD即可,你并拥有对UI足够的控制力,带给我们什么好处呢?页面变得简单干净,应用的可扩展性、可维护性得到增强,IOVC再加上GSSC我们发现又有一个好处,我们页面美工人员和程序员之间可以达到比较完美的结合,我们经常遇到一种问题,美工画出来的页面程序员看不懂,程序员对页面更改了美工不理解,通过IOVC+GSMC,我们看这是一个简单页面,这个页面运行效果是这样的。 现在动态语言已经成为一种气侯,纠其原因,我们经常说JAVA是一种非常简单并且幽雅的一种语音,随着时间的进一步发展,我们发现JAVA变得越来越臃肿起来,于是又出现了动态语言,脱胎于EL表达式,但已经发展成完全独立且抽象的高级语言,假如我们把语言进行分类,我是这样看的,有一类语言是神仙用的语言,神仙可能是玉皇大帝,也可能是宙斯,这类语言是什么呢?其实就是我们所谓的学术派语言,叫做函数式编程,还有一种语言是帝王用的语言,也是我们在座各位所经常打交道的语言,也就是命令式编程,你所熟悉的C也好、C++也好、JAVA也好其实都是命令式语言的一种,还有一种语言,是半人半神语言,他们披着命令式语言的外衣,因为命令式语言对我们来说是最容易理解的,他们披着命令式语言的外衣,但骨子里却是函数式编程,函数式编程有哪些特性呢,恐怕给我两个小时时间也无法一一详细描述出来,给大家看几个例子,使大家有一个感性认识,做一个快速排序,先不说JAVA需要多少算法,甚至于在函数式编程里可以对它进行定义,从而形成你自己新的语言,咱们要把德国马克转化成欧元,新的语法变成多少德国马克到欧元,这样一种语法其实是我们的业务人员能够理解的,所谓函数式也非常适合DSL。当然了函数式编程还可以和JAVA有一个非常紧密的结合,函数式编程本身就运行在VM之上。 我们说过OperaMasks是遵循GSF规范的,为什么从2004年GSF规范就诞生,但是到现在依然并没有成为主流,我认为规范上有一些问题,但确切地说不是GSF规范的问题,而是它建立在HTTP这种协议本身基础上导致的问题,那就是HTTP本身是无状态的,于是出现一种什么情况呢?为了在客户端和服务器端之间建立状态性,我们在每次交互时候不得不把WILLSTATE传过来传过去,你也可以放在服务器端,对服务器内存又是非常巨大的考研,什么是WILLSTATE,请看这个页面,我们输入一个名称,然后应出Hello你好,就是这样例子,如果用GSM做,请看每次请求和响应,其实你只传递了一个参数就是name,为什么会出现这么多字符,这些字符是什么?这些字符就是WILLSTATE,这样一种重量级的协议能适应Web2.0轻量级技术趋势吗。OperaMasks消除了GSF规范中的WILLSTATE,让GSF从理论走向实验,从实验室走向真正的应用场景。 有了引擎、有了种种特性以外,开发人员还需要什么?还需要开发工具的支持,开发工具放再多截图也没用,我给大家做一个事例,我突然发现我有多么愚蠢,如果像联想周先生一样,我也准备一个Flash,我得多轻松啊。这个事例非常简单,2008年奥运马上到了,在十分钟时间怎么把奥运奖牌榜做出来,我经常泡CSDN论坛,昨天晚上跟CSDN几个网友交流,他们说你去年已经讲过这个了,你今年再做这个,虽然说是2008年,你颇有些炒冷饭之嫌,他说你做一个咱们开发人员最经常碰到的一些场景,昨天晚上临时决定给大家做一个非常简单的事例,对数据库一张表格的维护界面,数据库表格已经准备好了,里面两组数据,我们把这个表格的界面做一下,这样的表格的映射关系是这样的,先不要被其他的影响,我们只关注USER,针对USER这个对象,这是JAPA印证模型,3.0完成了对USER增删改查的所有工作,我们今天教的重点是Web开发,我们新建一个页面,一切都采用默认值,首先放一个Form,在Form里放一个图片,把大小稍微调整一下,上面放一个列表,把数据取出来,我们这个表格有三个字段,所以我们放三列,把格的大小稍微调整一下,当然也可以直接设,宽度是100%,我们对每一列设置一下,页面做完以后我们运行一下,看看效果,表格已经出来了,只不过现在并没有做出数据的取数,我们双击表格,出现IOVC一个项目,输入ID,输出的对象就是USER这个对象,点完成,系统自然帮我们生成了已经后台的一些基础代码。怎么获取数据呢?我们刚才说过给大家准备了一个对象,所以我们有一个I USER SERVICE,怎么用这个对象呢?只要注入一下就可以就可以直接用了,把用户就可以取出来,保存页面,然后把应用重新启动,因为我们更改了后台的业务逻辑,然后刷新页面,数据已经出来了,我们希望点一个按纽弹出一个对话框,把用户输入的数据保存到页面里,这个按纽叫ADD,双击,起一个ID名称,自动生成一个目录,保存页面,然后重新启动应用,刷新页面。这时候按纽已经出来了,点击按纽发现对话框也有了,我们再花一分钟时间做出对话框,我们不希望把代码全部耦合在一起,我们再做一个页面,叫做USER对单个用户的维护界面,要做的事无非是先放一个Form,再放一个布局组件,放一个Lable,然后再放一个输入框,布局是两列,再放两个按纽,页面就做好了,这个页面现在还没有达到我们的要求,我们需要进行简单的设计,我们进行双击,第一是姓名,E-mail也完成了,这两个按纽一个是OK,还有一个是Concle,第一个按纽是给姓名用的,第二个按钮是给E-mail服务的。我们要设定一些运算方法,把要用到的几个对象带出来,怎么样在USER B里用到我们刚才看到的USER LIST B,要打一个标注,并且它的名称是USER LIST B,点一下OK非常简单,首先有一个USER,无非是把name、E-mail,创建完USER,通过LIST B获得对象,让它插到数据库里面。页面做完之后进行刷新,点击ABB,整个系统全部是阿贾克斯自然而然的支持,现在好象还有点问题,我们希望输入数据的时候对他进行简单的校验,在这里放一个表格,并且指定两列,在表格里放一个Massage,如果有错误信息就在这里显示。 OperaMasks还有很多其它特性,由于时间关系,我今天的演示到此结束,最后给大家谈一下我个人认为OperaMasks存在的缺点,目前背后只有一家公司在做,我们希望在座各位朋友能够共同参与进来,我们一起把这项技术做好,并且使它流行起来,让整个世界开源技术有中国自己的力量,我的演示到此为止,谢谢大家!
【发表评论 】
不支持Flash
|