中国开发网: 论坛: 程序员情感CBD: 贴子 553487
haitao
带着镣铐的舞者(从用户体验与编程模型两方面看AJAX与B/S 技术)
http://blog.csdn.net/bitfan/archive/2007/08/14/1742681.aspx

带着镣铐的舞者(从用户体验与编程模型两方面看AJAX与B/S 技术)
带着镣铐的舞者


从用户体验与编程模型两方面看AJAX与B/S 技术


****************************************************************************


本文是我在研究AJAX技术时想到的一些东西,仅代表个人观点。

金旭亮 2007/8/14

****************************************************************************



近来遇到了这样的一个应用场景,某企业多年以来一直使用PowerBuilder开发的系统,随着公司的发展,决定将老的信息系统由C/S转为流行的B/S架构,于是问题出现:原有系统有大量的数据录入、精确报表打印等功能,而且用户都已非常习惯这种操作,希望新系统能保留原有系统的这种使用方便的特性。




我一听到这个问题就头痛了,PB有一大堆功能强大的控件,要搬到浏览器里,用网页来模拟实现,太困难了。



1 B/S为何难于提供好的用户交互体验?


这里头的最大问题有几个:


(1)无状态的HTTP协议
Windows窗体间可以通过内存直接交换信息,但作为B/S架构通讯基础协议的HTTP是无状态的。




如果将浏览器看成是客人,Web Server看成是旅馆,在HTTP协议的管理之下,会出现这种情况:不管某客人来访多少次,Web Server都将其视为第一次的访客。这样一来,客人每次都得带齐身份证件供旅馆工作人员“验明正身”。




HTTP协议的无状态,导致Web Server的“六亲不认”,这固然能增加Web Server的吞吐量,却给应用系统的开发带来了麻烦。因为应用系统中往往有许多业务处理流程,天生就是信息流转的,即原始数据从一端进去,从另一端出来时应该已经过某些处理,怎可想象整个业务流程中的信息会流失?于是,在HTTP各请求间共享信息就成了件麻烦事,这就是HTTP请求的“状态保持”问题。每个B/S系统都必须解决这个问题。微软想了一些“歪招”,比如充分利用HTML网页的中隐藏域,再在Web Server上做些手脚,于是ASP.NET拥有了一套在各个HTTP请求之间维持状态的技术:Session,Cookie,ViewState,Profile,Application。




然而问题并没有完全解决。比如,C/S系统中常见的收集用户输入信息的对话框,主窗体与对话框之间有着信息的交换(又分为两种:模式的和非模式的,前者对话框不关掉,主窗体不能被激活),在B/S架构之下,由于浏览器的每个请求是独立的,要在两个独立的浏览器窗口间实现类似于模式对话框这种直接的信息交换,我还真不知道该怎样干。




AJAX使用以下这种的方法来“摸拟”出模式窗体:将主窗体与对话框“合二为一”,对话框在HTML中就是一个div元素,平时是隐藏的,需要时再显示它。微软的AJAX Control Toolkit中甚至为这一功能设计了一个控件。诸如此类的小伎俩,在B/S开发中不胜枚举。




可以看到,许多在C/S轻而易举就可实现的功能,在B/S中要实现则大费周章。


(2) 特殊的运行环境——浏览器


B/S系统的前端运行环境是浏览器,这就带来了诸多的限制,不能干许多事,比如直接访问硬件(例如打印机),也无法充分利用硬件的资源。例如,现在的新电脑都是双核的,你能直接用JavaScript加HTML写出一个多线程程序以充分利用这两颗“奔腾的芯”?




而C/S系统则直接运行在OS(操作系统)之上,可以调用OS提供的所有功能,这种限制就不存在了。



(3)尴尬的Web客户端编程语言——JavaScript
传统的C/S程序,可以使用为数众多的各种开发语言,尤其是象C++,Java,C#之类主流面向对象语言,功能强大,使用方便,各种开发工具齐备,已非常成熟。




与此相反,B/S前端所使用最多的编程语言JavaScript,不仅不让人喜欢,甚至让许多程序员“恨之入骨”,将“用JavaScript编程”看成是件苦差事。




让我们来看看JavaScript的两大硬伤。




首先,缺乏清晰而统一的编程模型。




JavaScript虽然名字中有一个Java,并采用了类似的语法,但与真正的Java并无关系。唉,她本身是一只丑小鸭,总想着攀上天鹅这门亲,却没想到别人并不买账。




JavaScript用到了许多对象,但说它是面向对象的吧,又实在难以令人信服(面向对象编程的基本单元是类),比如它没有类似于C#等主流面向对象语言的关键字class,到处是一个个的函数,这就使所有的代码难于以类的方式清晰界定;同时,它又不是结构化的(结构化编程的基本单元是函数),因为浏览器在解析HTML文档时,是采用流式解读方式,从而导致一些JavaScript代码被放在函数之外,在解析HTML文档时直接执行,而另一部分放到函数中的代码,则多采用事件驱动的方式运行,这就带来了复杂的程序执行流程,远不如纯结构化编程中统一采用函数调用的编程方式简洁。




这样看来,JavaScript兼具面向对象,结构化,非结构化三种编程方式的特点,但却弄得不伦不类,没有一个清晰而统一的编程模型,难于写出结构清晰易于维护的代码,反而带来了许多混乱。




其次,JavaScript的另一硬伤是它的浏览器运行环境。




由于历史的原因,不同的浏览器,甚至同一浏览器的不同版本,其编程模型都有或多或少的差别,因而不得不写代码检测浏览器类型,比如需要为IE写一套代码,又为FireFox写另一套。这实在是一件麻烦事。





上述这些问题,几乎是B/S架构系统“与生俱来”的“缺陷”。先天不足后天补,人们想出了许多招数来解决这些问题。AJAX是众人看好的希望之星。



2 希望之星——AJAX
这些天来,我系统地了解了一下微软的AJAX框架。发现这一框架的复杂远远超过我原先的估计,微软设计AJAX框架的工程师们,将各项Web开发技术的潜力发掘得很深,在很大程度上弥补了前面提出的问题。




(1)对JavaScript语言的扩充:
微软通过提供封装好的AJAX Library,增强了JavaScript的面向对象特性,可以方便实现继承,定义接口,序列化对象,引发事件,反射类型等功能,虽然比真正的面向对象语言(比如Java/C#)还有差距,但能将“丑陋”的JavaScript打扮得可以见人,也算是功力不凡。




(2)大幅度提升浏览器端代码的功能
在AJAX Library支持之下,配合增强功能的JavaScript,在浏览器本身的支持之下,可以在浏览器中写JavaScript脚本,方便地向服务器发出异步请求,实现页面局部刷新,并可以直接调用Web Service。




(3)引入基于组件的开发(CBD)方式
基于组件的开发(CBD)早已是面向对象系统的主流开发方式,虽然现在SOA(基于服务的架构)炒作得热闹非凡,但要达到CBD那样的成熟程度,还需要时间。




对于JavaScript而言,别说SOA,能实现CBD都很困难。




为了实现CBD,微软给JavaScript“大补特补”,增强了许多特性,基于Microsoft AJAX Library,程序员可以开发三种类型的可复用组件:None_Visual Component(不可视的组件,相当于面向对象系统中的一些提供公用功能的类)、Behavior(行为,扩充现有Web控件的功能)、Control(拥有可视化界面元素的Web控件)。




尤其是AJAX Control ToolKit中提供的几十个控件,基本上实现了B/S对C/S用户界面大部分特性的摸拟,是这一新编程模型应用的典范。




微软对JavaScript编程模型的增强,使软件工程师终于可以用CBD的开发方式开发Web客户端代码。我认为,这是一个进步。




(4)增强的服务器端能力
为了增强浏览器端代码的能力,必须通过服务器端予以配合。AJAX本身就基于Browser与Web Server相互支持的编程模型(Web Server提供数据服务,Browser提供XMLHttpRequest对象可向Web Server发出异步请求,当数据回来时,程序员可以用JavaScript编写代码实现对网页的动态局部更新)。




通过AJAX Extension,微软增强了服务器端ASP.NET框架的功能。并将常用的功能外化为简单的Web控件,比如AJAX的核心控件ScriptManager,用于定义页面可更新区域的UpdatePanel,还有用于增强现有ASP.NET控件的位于AJAX Control Toolkit中的几十个Extender控件(即附加到现有控件上的控件,其目的是给现有控件扩充新的功能)。




拥有了这些控件,开发Web前端程序就类似于在VB中设计窗体了。现在不仅仅是可以绘出类似于Windows窗体的界面,而且通过利用AJAX的异步请求与页面的局部刷新技术,在Web服务器的配合之下,可以在用户体验上逼进Windows窗体。




不管多少人如何看不起VB,但VB所带来的可视化编程普及浪潮,的确影响深远,微软推动JavaScript编程走向这一步,也是大势所趋。为了提高Web 开发的效率,必须走这一步。




然而,需要指出的是,不管后天如何“进补”,毕竟“先天不足”,B/S架构要在用户体验这点上超过C/S,还是非常困难。





3 未来:B/S与C/S,谁主沉浮
由于管理与部署的简便性,B/S架构成为当今许多信息系统的首选,然而,用户是追求好的使用体验的,大体总结起来,有以下要求:




(1)漂亮的界面。这点B/S有优势。




(2)方便的输入。比如许多用户都希望能不用鼠标就可以录入数据,或者是通过简单的点击实现数据的自动填充,在B/S架构下实现起来比较麻烦,AJAX可以在一定程度上解决这个问题。




(3)闪电般的速度。对于C/S而言,要实现响应速度快,有许多的法子可想,可B/S就不容易了。由于受到浏览器的限制,客户端强大的硬件资源几乎是被闲置的。另外,网络速度是B/S架构的瓶颈,除非带宽能有快速的增长,否则,WWW就是World Wide Wait。




C/S虽然拥有好的用户体验,但它的问题在于开发跨越整个互联网的分布式系统困难,而且由于需要安装客户端,系统更新与组件版本管理就成了一个大问题,此外,不象B/S架构中只需考虑服务器端的问题,在C/S架构由于多用户同时访问服务器,各组件间的调用和依赖关系复杂,在处理多线程访问共享资源,事务处理等方面必须同时考虑客户端与服务器端,吞吐量受到大的限制。因此,C/S多建构于局域网内,供企业内部使用。




目前基本上是B/S与C/S共存,随着诸如AJAX之类B/S技术的广泛应用,B/S不断攻城掠地,占有上风,但不可能将C/S彻底地“打垮”。




比较有意思的是:象微软这样的大公司,是如何看待B/S与C/S发展前途的?




我等普通开发者,没有机会直接与微软高层对话,但可以从其公司的产品发展路线看出一些端倪:




微软似乎并未认为B/S代表着未来的技术发展方向,相反,它的许多行动,都向着抛弃浏览器的方向在走。




首先,微软简化了C/S的开发与部署问题,推出了Smart Client技术,让C/S客户端程序的更新可以无需人工干预,自动进行。




其次,微软努力弥补B/S与C/S两者间的鸿沟,在设计ASP.NET时,毅然抛弃已取得不错业绩的ASP,直接采用类似于VB的“可视化控件+事件驱动” 编程方式,甚至将Web 页面也称为“Form”——Web Form。




第三,微软可能认为AJAX是一种过渡性质的技术。




微软在AJAX上迟迟不见动作,直到看到由于Google等公司成功应用AJAX技术提升Web用户体验而导致AJAX的迅速窜红时,才行动起来,给ASP.NET加上AJAX扩展,整个过程中显然行动并不积极,投入的资源也并不多,这与当年微软与网景公司展开浏览器大战时完全不一样。但从其在VS2008中将AJAX Extension内置为标准配置,并直接集成JavaScript的调试功能到IDE中,说明微软还是面对现实的,它承认AJAX拥有重要的地位与较大的发展潜力。




其实,我分析微软的野心是“一统天下”,抛弃浏览器,彻底统一B/S与C/S。




这点在.NET 3.0/3.5中看得很清楚。




首先,微软用WCF统一了DCOM,.NET Remoting等主要用于C/S的技术,集成了原先位于COM+中的许多企业化开发特性,连同主要用于B/S架构的Web Service技术,统一地抽象并封装为可复用的WCF Service。很明显,微软要将信息系统开发模式由CBD转为SOA(即未来的系统是组装Service,而非组装Component)。




其次,微软抛弃了非常成熟的Window桌面程序编程模型(Win32 API+消息/事件驱动)引入了一个全新的WPF编程框架,其中的一个重大的革新是符合XML规范的XAML(应用程序标记语言)的出现。XAML用XML格式纯文本文件来描述应用程序界面。




我们可以很容易地将XAML与XHTML进行类比。浏览器解析XHTML代码,生成可视化的网页界面,而XAML则由.NET Framework 虚拟机负责解析,在Vista中,由于Vista直接集成.NET Framework 3.0,就可以将Vista看成是一个超级浏览器,由它负责读入XAML生成用户界面,并实现其所有应用程序功能。




这样一来,一种新的编程模型浮出水面,不管是B/S还是C/S的系统,其方式都是统一的:读入XAML代码à解析à呈现à接收用户输入à处理数据à显示结果。




在这个编程模型中,浏览器成了一个旁观者,不再是客户端应用的核心。




新编程模型的运行平台是全功能的OS,而非功能受限的浏览器。这个区别是巨大的,一个运行于OS之上的浏览器,其功能怎能和OS自身相比!




现在可以通过按面向对象方式组织起来的操作系统API(应用程序编程接口)方便地调用操作系统的各种功能,充分利用客户端的硬件资源(比如可以很容易地在.NET Framework之上开发多线程程序,“压榨”双核CPU的工作能力)。用户界面都用XAML来描述,这就统一了B/S与C/S的界面层技术。




WPF最适合的运行环境是Vista操作系统,它的一个功能子集,现在称为Silverlight,被实现为一个浏览器插件,从而让WPF程序也能跑在传统的浏览器中。由于Silverlight和Vista本身都可以解析XAML,所以,现在可以用XAML只写一套界面代码,就同时适用于B/S与C/S,并获得相同的用户体验。




由于B/S和AJAX存在着一些先天不足,如果将经过AJAX增强功能的B/S系统比喻为一个舞者,那么,这其实是一位带着镣铐跳舞的舞者,而微软公司的想法是,与其不断想法减轻这一镣铐的重量,为何不干脆直接抛弃这一镣铐呢?




微软推出WPF与WCF,就是这样的一个尝试。




应该来说,微软公司的这套发展战略是建立在对现有B/S与C/S各自的优缺点分析的基础之上而制订的,有它的科学性,也考虑到了自身的商业利益。但这一战略最终实现还有许多困难,因为即使强大如微软,也无法一统江湖。微软的对手与微软一样聪明,技术进步同样迅速。




可以断言,由于信息系统应用的延续性,在相当长的一段时间内(也许有三五年,也可能有五到十年),B/S与C/S将同时并存,由于B/S许多突出的优良特性,在与C/S的竞争中将占上风,这个局面不会有大的改变。对于AJAX,作为B/S系统的一个重量级武器,虽然很有效,但存在不少缺陷,我对于它的未来发展,抱有谨慎的乐观态度,不过,作为一名Web 开发者,应该去了解并应用这一技术。




未来的格局到底如何,某种技术到底有没有前途,都不是由个人说了算的。我想,B/S与C/S之争最终的格局,将是多方面因素共同博弈的结果。对于个人而言,必须与时俱进,及时调整自己的行动和战略,这是当代软件开发者的宿命。




























































































































Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1742681



Csdn Blog User的个人信息

作者首页

数据读取中,请稍候...
[收藏到我的网摘] bitfan(数字世界一凡人)发表于 2007年08月14日 14:47:00





特别推荐:想在这里投放广告?点击查看详情
用友软件急聘.NET开发工程师
用友软件一直秉持“人才为重”的理念 我们盛情邀您加入…… .net
UCML-领先的B/S应用快速开发工具
基于组件重用和应用框架重用,支持.NET体系 第一个面向框架的web开发工具 .net
青娱乐招聘高级运维工程师
“青娱乐”Qyule.com是国内领先的网络视频网 .net
Java/.NET企业级软件开发全攻略
Java EE企业级软件工程师必备手册 .net
2007年SOA发展趋势的分析和建议
越来越多使用Java 和.NET技术平台的数据中心 SOA内及其相关行业将出现如下趋势,并向您提供这样 .net

| 下一篇: “微软技术魔鬼训练”二十天杂谈


����
# internetafei 发表于2007-08-15 13:23:36 IP: 123.52.52.*
分析透彻




# zzw_happy 发表于2007-08-15 13:54:58 IP: 221.219.99.*
不多说了。
sb一个,献丑献到家了




# shop34480016 发表于2007-08-15 14:30:08 IP: 121.13.16.*
楼上的,骂人只能显示你的无知无教养。
有本事你写几篇文章让大家瞧瞧,
楼主哪里错了你指出就是了!



# shop34480016 发表于2007-08-15 14:30:48 IP: 121.13.16.*
支持楼主的原创文章 ^_^



# GinaGao 发表于2007-08-15 14:46:54 IP: 218.65.95.*
zzw_happy,真没素质.



# kongfanyu521 发表于2007-08-15 14:48:40 IP: 222.168.157.*
强烈支持!



# szkangdun_cn 发表于2007-08-15 14:57:03 IP: 222.125.99.*
写得不错



# wanshi345 发表于2007-08-15 15:05:29 IP: 121.22.25.*
好文章,强烈支持.



# yzsind 发表于2007-08-15 15:16:57 IP: 202.107.201.*
写得不错,比较暂同作者对B/S及C/S分析的优缺点分析,也很暂同作者对MS的技术路线分析,唯一有点异议的地方是作者对B/S模式对话框的分析,浏览器中可以用showModalDialog方法打开模式对话框,用showModelessDialog 打开非模式对话框。

看好MS的Silverlight技术,只是近2年内它还不能实用,还达不到统一B/S与C/S的效果。




# hax 发表于2007-08-15 15:33:59 IP: 207.179.28.*
作者的一些分析还是蛮有道理的,但是对于浏览器,对于Javascript的了解还是太少,带有一些偏见。



# basicbest 发表于2007-08-15 16:46:54 IP: 121.34.171.*
最大的问题:
第一,现有的系统已经能够很好的保持用户状态信息,而且,BS明显增强了用户体验,而不是不能提供,如果你稍多些了解PB以外的世界就明白,看看现在多姿多彩的互联网。
第二,AJAX不是微软的,你的文章有误导。
第三,CS与BS本身是统一的技术,你可以把BS看作连续的CS,他们之间的差别只在于时间维处理上的差别。其实就像是我们看物体就看物体的外形,颜色,材质等,而化学家或者材料工程师就会关心内部的分子。
最重要的,你的文字前后矛盾,前面说JS不行,后面又说AJAX好,AJAX并不是新技术,也不是JS的扩充,而是JS的应用,所以如果JS不行,AJAX如何行?你又说CS的速度快,说BS是WWWait,又说CS吞吐量受到限制,请问速度这么快,吞吐量限制又是如何出现的?



# basicbest 发表于2007-08-15 16:48:17 IP: 121.34.171.*
题目很大,内容。。。



# viaivi 发表于2007-08-15 16:50:57 IP: 221.10.7.*
长的像丑小鸭,回去好好研究下javascript了着



# philoo 发表于2007-08-15 17:25:35 IP: 222.33.65.*
金旭亮大大贬低一番HTTP、JavaScript、Browser,再高高捧起MS的AJAX框架,难道MS的AJAX就不是基于上述种种来实现嘀?????



# xnake 发表于2007-08-15 17:54:04 IP: 125.89.9.*
作者对AJAX的理解有问题。AJAX是一种基于DOM,Javascript的应用,他本身并没有超出以上两者的技术范畴,并不存在扩展什么之类的。而且看不出AJAX和微软有什么关系,也不是微软提出的。



# berlou 发表于2007-08-15 19:42:20 IP: 202.108.130.*
作者看起来似乎根本不了解Javascript, 而对于Ajax的了解也仅仅是停留在概念的认识层面上。
不了解不是错,但是不了解就妄图贬低就是丢人了。。
Ajax, 包括Ajaj, 目前还都没有脱离HTTP的支持。
不清楚你到底想表达什么意思?



# ytar 发表于2007-08-15 20:18:04 IP: 210.21.235.*
ajax代替winform程序至少现在是不可能的,一定要用的话还不如一个ActiveX控件来得实在。



# bitfan 发表于2007-08-15 21:34:43 IP: 116.1.34.*
回应一下 basicbest 网友的看法:
-----------------------
第一,现有的系统已经能够很好的保持用户状态信息,而且,BS明显增强了用户体验,而不是不能提供,如果你稍多些了解PB以外的世界就明白,看看现在多姿多彩的互联网。
-----------------------
回应:我没说B/S不能保存用户信息,只是说所有B/S都必须解决这个问题。另外,说B/S明显增强了用户体验,看是和谁比,如果说与过去的B/S甚至是某些C/S程序比,也许是对的,但要和现在的应用优秀C/S程序(或者是桌面程序)比,那就太难了。比如:你给我做个基于浏览器的三维的虚拟现实程序,然后和现在的基于OpenGL和DirectX的类似桌面或网络程序(比如各种游戏)比比,大家说:哪个用户体验更棒?
---------------------
第二,AJAX不是微软的,你的文章有误导。
----------------------

回应:我说了AJAX是微软的吗?我只是说了微软在AJAX方面所做的一些工作不错。
------------------
第三,CS与BS本身是统一的技术,你可以把BS看作连续的CS,他们之间的差别只在于时间维处理上的差别。其实就像是我们看物体就看物体的外形,颜色,材质等,而化学家或者材料工程师就会关心内部的分子。
-------------------
回应:先请教一下:“连续的CS?”何意?“时间维”何意?
其实,B/S是最极端的C/S,只不过它的客户端是浏览器,没有选择余地罢了。应在是在这个意义上说B/S和C/S是统一的。
--------------------
最重要的,你的文字前后矛盾,前面说JS不行,后面又说AJAX好,AJAX并不是新技术,也不是JS的扩充,而是JS的应用,所以如果JS不行,AJAX如何行?你又说CS的速度快,说BS是WWWait,又说CS吞吐量受到限制,请问速度这么快,吞吐量限制又是如何出现的?
--------------------
回应:没有Browser的支持,特别是没有Web Server的支持,AJAX就什么也不是。JavaScript是一种编程语言,AJAX选用它只不过是因为当前所有主流浏览器都支持它。即使不用它,换一种另一种语言,比如已被遗忘的VBScript,同样可以实现另一版本的AJAX(可能会叫另一个名字)。所以,AJAX好不好好关键在于Browser与Web Server的支持与配合如何,而不在于JavaScript的能力如何。
C/S有许多代码可以在本地执行,良好的架构设计可以使客户端只需从网络获取部分数据,而且可以缓存到本地,并采用多线程等技术提升性能,另外C/S大多运行在内网,走的是直接的网线,可以使用的带宽(10M、100M)与数据传输率普遍比访问Web的ADSL大吧? 另外,C/S架构下数据处理任务可以同时分布在客户端与服务器端,而B/S所有数据处理都严重地依赖服务器完成。除非C/S的设计实在太糟糕,否则,在需要处理相同数据量的情况下,在客户端数目不超过某个上限的情况下,C/S不快难道B/S更快?

另外,为何说C/S较B/S有更大的吞吐量限制?看看数据库服务器允许同时有多少个数据库连接?再看看Web Server允许同时有多少个HTTP请求?这两者在数量



# lenel 发表于2007-08-15 21:54:08 IP: 60.176.247.*
作者看起来似乎根本不了解Javascript, 而对于Ajax的了解也仅仅是停留在概念的认识层面上。
不了解不是错,但是不了解就妄图贬低就是丢人了。。
Ajax, 包括Ajaj, 目前还都没有脱离HTTP的支持。
不清楚你到底想表达什么意思?

同意下!
现在能上网的谁去下载呢?
你愿意拿到一堆exe装载你的机器上么?
你知道那个exe哪天不会编程熊猫,呵呵。
下一步不知道,今年以来我新装的exe只有网银和sogou拼音。
呵呵 Eclipse是绿色版



# lenel 发表于2007-08-15 21:55:01 IP: 60.176.247.*
这就是你研究AJAX的结果。。



# bitfan 发表于2007-08-15 22:03:20 IP: 116.1.34.*
to xnake
-----------------------------------------------------
作者对AJAX的理解有问题。AJAX是一种基于DOM,Javascript的应用,他本身并没有超出以上两者的技术范畴,并不存在扩展什么之类的。而且看不出AJAX和微软有什么关系,也不是微软提出的。
-----------------------------------------------------
回应:
1.
你漏掉了最关键的因素:Web Browser和Web Server。
DOM是由Browser实现的,JavaScript只不过是Web Browser支持一种编程语言罢了。在理论上,只要Web Browser支持,完全可以换一种语言(或换一个模型比如XXX-OM)来实现当前AJAX的功能,不过没有人愿意去做罢了。
2.我想我们对“扩展”一词的理解不同。你可能认为这个扩展是提语言本身的改变。
说说我的理解。
微软将它的服务器端AJAX技术称为Microsoft AJAX Extension,是指它向现有的ASP.NET框架增加了AJAX功能,所以是“扩展”。扩展的另一个含义是微软以JavaScript作为编程语言,创建了一个AJAX Library(可以看成是JavaScript的类库),强化了JavaScript一些原有数据类型的功能,并增加了一些新的对象和类型,从而使程序员可以使用这些新的特性,为什么不能称为“扩展”?
3.
AJAX其实早已有之,的确不是微软提出的,我也没这么说过。
但现在微软在AJAX方面都有了具体的产品了,还能说微软与AJAX没有关系?




# lenel 发表于2007-08-15 22:09:35 IP: 60.176.247.*
http://www.pushlets.com/
无状态的HTTP协议能否即时数据交互、建议了解下。



# bitfan 发表于2007-08-15 22:11:33 IP: 116.1.34.*
有点时间,不妨再回应一下网友的问题:

--------
Ajax, 包括Ajaj, 目前还都没有脱离HTTP的支持。
不清楚你到底想表达什么意思?
---------
回应:最后一句才是我想问您的。

---------------
现在能上网的谁去下载呢?
你愿意拿到一堆exe装载你的机器上么?
你知道那个exe哪天不会编程熊猫,呵呵。
下一步不知道,今年以来我新装的exe只有网银和sogou拼音。
呵呵 Eclipse是绿色版
---------------

回应:呵呵,不知道你用不用BT下载,QQ和MSN啊?它们可都是EXE的。







# lenel 发表于2007-08-15 22:15:31 IP: 60.176.247.*
对不起,那些都是去年装的 哈哈
http://wwwl.meebo.com/
还有web im 也可以搜下了解下



# lenel 发表于2007-08-15 22:18:28 IP: 60.176.247.*
呵呵 谁让你在首页呢
我觉得open才是正道
ajax是微软根别人风
微软出了新东西开源社区也可以跟微软风啊
有什么是只有微软能实现的呢
越来越多人用firefox
微软能把它一拳打死么



# bitfan 发表于2007-08-15 22:21:12 IP: 116.1.34.*
估计C/S与B/S吞吐量比较的问题可能会引发一些不同看法。
在此我想声明一下:
要比较两种事物在某个特性在数量上的差别,必须严格设定为某一特定的场景。
B/S有吞吐量很大的,比如Google,C/S也有吞吐量很大的,比如MSN,QQ,还有各种24小时不停的邮件服务器,但它们之间没有可比性。
抽象地谈论C/S和B/S吞吐量比较无意义。
前面的回应我没有说明这点,为避免无必要的口水,特此补充一下。




# lenel 发表于2007-08-15 22:45:15 IP: 60.176.247.*
javascript缺乏清晰而统一的编程模型
不过没有class关键字就不是面向对象的语言这个就太。。
搞javaScript的都看过犀牛书,可以看看那里对于js面向对象的介绍有多少,只不过简单的应用无需写类而已,看看主流的ajax框架dojo,prototype,yui哪个不是面向对象的。微软的HTC也是面向对象的一种框架吧。
至于想要有清晰的编程模型,可以按照http://www.nczonline.net的要求来,还有早些年netScape开发的xbObject。



# linxiaofeng0816 发表于2007-08-16 03:45:25 IP: 222.210.228.*
你的评论只给我的感觉是,你现在只是站在表面上分析问题,也许是因为你一直做C/S系统,所有对B/S中的某些东西还没有完全了解,如果达到了你做C/S系统的水平的时候 ,你就会看到,你C/S上能够的东西在B/S到也能实现,大多数时间是需要综合应用的,编程与深入本来就是一乐趣嘛。



# xuesong123 发表于2007-08-16 08:35:14 IP: 124.42.18.*
"要在两个独立的浏览器窗口间实现类似于模式对话框这种直接的信息交换,我还真不知道该怎样干"

作者对B/S的开发太少了



# cuizhanjun1981 发表于2007-08-16 08:44:39 IP: 218.12.62.*
不懂,旁听。 大家都很极端,其实有很多东西不必那么较真,因为硬要较真,所有人说的只是站角度不同。



# hotgood 发表于2007-08-16 09:09:13 IP: 218.94.100.*
  首先感谢楼主,写的不错,无论对但否言之有物。
  C/S之所以被B/S打的有点抬不头来,其实主要的原因不在技术好坏。安全,布署,升级,集成,IT厂商的利益,某些客户的好大喜功才是c/s架构不断被冷落。
  B/S开发周期长,开发成本高,UI成本高。

  从使用效率上而言,B/S是无法与C/S而比的。B/S一些正在发展的东西,C/S早就小菜了。

  集成难啊,这是C/S的致命之处。
 



# lzpggg 发表于2007-08-16 09:32:56 IP: 220.172.90.*
用户的使用习惯也是B/S超过C/S的原因,试想还有什么软件的使用频率有浏览器高呢?
跟着microsoft走你永远在它屁股后面跑,一不留神你就落下一大段了,哪怕你拼命的跑你永远也是第二名.microsoft会牵着你的鼻子让你哭笑不得.
不过还好.我们还有第二条路:那就是开源.这是目前唯一可以打败microsoft的一条路,由于microsoft的垄断压制了多少新技术的发展(技术不能打败microsoft,因为用户抛弃了新技术,哪怕思想再好).目前开源已经取得了巨大的成功,开源同样使用的是microsoft的招法打败microsoft---那就是用户,用户的免费体验,用户的参与,对于用户的透明,还有越来越关注的安全.只有开源才把用户当成真正的上帝,microsoft只把用户当成赚钱的机器...............



# kwer 发表于2007-08-16 11:17:59 IP: 59.33.50.*
讲出我心里的话了,世人都说javac#好,却不知这个B/S的麻烦,简直就是带着镣铐跳舞带着套子ML. hotgood 讲得有道理,等Google开发新的网络操作系统出来情况会好一点,是该到了抛弃浏览器的时候了!



# chenfazong 发表于2007-08-16 12:00:42 IP: 60.21.127.*
基本上还是不错的,就是对javascript和b/s下开发看来作者还是接触和了解的太少了一些。



# aurual 发表于2007-08-16 13:05:00 IP: 222.66.41.*
javascript烦死个人了 写法太多了 有时经常想不起来要怎么写



# catiga 发表于2007-08-16 13:30:17 IP: 125.33.174.*
没有任何意义和技术含量的文章,说实话,你根本不了解web的本质和web开发,实在的建议你有一些web和分布式开发经验再说吧



# poscard 发表于2007-08-16 14:01:45 IP: 221.218.18.*
作者可能想制造一种峰回路转的感觉,因此在前面部分写的时候提出了一些疑问。倒不是作者真就不知道。
不过作者明显对B/S开发了解不多,不过本人对C/S开发更是没怎么接触,因此对C/S和B/S之间的对比,体会不是那么深。
 B/S开发中跨浏览器UI开发真是太费时了。自己深有体会。



# man1911 发表于2007-08-16 15:16:02 IP: 58.62.113.*
其实,大家也不用忙着批判作者什么观点.自问一句,你自己在针对不同的browser开发那些JS,CSS,做那些修修补补的工作的时候就没想过这个世界应该更美好吗? 为了批评而批评有什么意思呢. silverlight是个很不错的东西.确如果因为自己钻研掌握了一些别人不熟悉的奇技淫巧就固步自封,有意思么? 多少很烂的系统存在在这个世界上,错误百出的代码,没有一个符合W3C标准的Browser,大家都不介意?

看看某人的评论:[引用]
第三,CS与BS本身是统一的技术,你可以把BS看作连续的CS,他们之间的差别只在于时间维处理上的差别。其实就像是我们看物体就看物体的外形,颜色,材质等,而化学家或者材料工程师就会关心内部的分子。

说真的,装什么啊.哲学家? 这就是你觉得他们本身是统一的技术? 我们在对比一样东西的时候,总是有个尺度的.如果去到微观的尺度我们做分析选择还有意义么? 那你吃饭和吃土有什么本质区别?反正都是些基本粒子组成的.
这种叫强辩,为辩论而辩论. 白废唇舌,无益.




# man1911 发表于2007-08-16 15:20:45 IP: 58.62.113.*
还有,烂东西就是烂东西. 比如JScript, 无论从哪个角度看它都不是一个好的语言, 只是因为这个领域发展太快, 当初一些并不完善的作品出来以后,因为需求在那里,大量地被广泛应用,反过来让大家不得不去遵循一个事实的烂标准. 这不是由哪个人的故意决定造成这种景况. 就象MFC并不是一个好的技术,即使在那个年代也有更优秀的OWL. 但应用反过来让这项技术占了主导,那么以后大家就要承受这种快餐的代价.
JavaScript很烂,真的.



# hbgth 发表于2007-08-16 16:28:07 IP: 221.232.130.*
恩 很有见地!!



# w_z 发表于2007-08-16 17:25:32 IP: 202.103.233.*
远离web应用系统开发,回归c/c++王道。



# autocephaly 发表于2007-08-16 18:02:53 IP: 222.175.129.*
"远离web应用系统开发,回归c/c++王道。"
c/c++也不是能把所有的活都揽了的^_^



# sunkangta 发表于2007-08-16 19:31:45 IP: 222.185.106.*
只能说LZ对B/S的了解不透彻



# seulty 发表于2007-08-16 20:47:14 IP: 58.213.113.*
标题写的真的很不错!
分析的也是很有特色啊 呵呵



# Xzoth 发表于2007-08-16 21:00:58 IP: 61.178.78.*
楼主分析得很透彻,跟我两年之前的想法一样。
楼上那些SB思想根本没到那个深度。
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录