违背历史车轮的 VIEWSTATE前端时值乱世,烽烟四起,群雄割据,民不聊生,W3C标准一套接一套,仍无法改变当今乱
违背历史车轮的 VIEWSTATE
前端时值乱世,烽烟四起,群雄割据,民不聊生,W3C标准一套接一套,仍无法改变当今乱世,生于此代的UI人员可谓处于水深火热之中...成为WEB标准化道路上的牺牲品.
再来谈谈VIEWSTATE,这个所谓的"状态保持机制"看似很方便,但这个机制完全就是与WEB标准化背道而驰!所有控件的状态全部转化成_VIEWSTATE发回服务器,大部分数据通常并未使用,再由服务器编码发回来,耗费巨大网络带宽、服务器资源。它仅仅是为了让开发人员可以像WinForm一样实现傻瓜开发。
AJAX使局势出现了转机,若再得到WEB标准方案的出台,一统乱世,天下大同,为时不远,实乃众望所归。
[解决办法]
天下WEB大势,合久必分,分久必合!
[解决办法]
VIEWSTATE的确是Input type=hidden的旧瓶新酒,但是他不和AJAX冲突,AJAX也是XMLHTTP的旧瓶新酒而已.
[解决办法]
不好妄下断言,如你我之辈都能看出这么大的问题来,估计微软也挺不到今天了.
[解决办法]
asp.net的ViewState是从2000年开始设计,或者最晚可以说是2002正式推向市场的。那么请问,有没有一套Ajax组件产品今天“已经”取代了asp.net服务器控件?
实际上,Ajax一直只是一种非常不成熟的脚本语言。如果它是成功的,也就没有RIA了。
至于说ViewState“保存在网页上”,只是一种实现方法而已。早在asp.net1.0中(6年以前)就已经设计好了这个接口(可以看到它是Virtual的方法),通过重载 SavePageStateToPersistenceMedium 和 LoadPageStateFromPersistenceMedium 两个方法,使用不超过15条语句,就可以把整个ViewState数据缓存在服务端文件中,那么此数据读取速度不是“网络速度”而是“本地磁盘读写速度”。至于为什么要保存在内存以外,很简单,web服务器以很低的硬件配置要服务于成千上的互联网用户,自然与c/s系统服务器的设计完全不一样。
至于说asp.net2.0,更是早已经用可重载 PageStatePersister 属性来稍稍简化了上述两个方法。
你这个问题,跟对asp.net的了解深度有关。
[解决办法]
找到了以前回的一个帖子。
http://topic.csdn.net/t/20061020/21/5098172.html
当然在asp.net2.0中可以以 PageStatePersister 方式实现。
可以看看,如果你学习asp.net所使用的教材中没有对这种基本知识的讲解,那么这种教材一定不是讲解asp.net内部运行机制而是面向初学者的,或者虽然讲解但是是含糊的(例如某些不负责任的出版者包装的asp.net技术教材)。
[解决办法]
对于ViewState的了解,以及对于Cache API的了解,是我判断一个程序员是否深入了解asp.net的两个指标。前者,可以判断一个程序员是否能够正确地开发业务中间件,后者则用来判断一个程序员是否能够正确地做应用程序优化。
[解决办法]
关注~
[解决办法]
留个名,关注
[解决办法]
[解决办法]微软新推出的asp.net mvc,算是对viewstate的一个否决吧,他自己都说了,这是一种回归传统web开发的模式,不支持postback。
说明所谓的viewstate确实有性能上的问题吧
[解决办法]Mark,,今天累了,明天再看
[解决办法][解决办法][解决办法]你可以对整个asp.net是否必要进行重新讨论。但是,不要使用错误的论据。我也在上面说过将状态数据保存在内存中,于性能和稳定性方面都不符合web服务的基本要求,这大概只有开发过多用户终端的人才能实际感受到。至于开发“胖客户端”的c/s程序,并以此说“瞄准WEB发展趋势”就是那种将状态保存在客户端的做法,则是与历史事实不符的。在7、8年前asp.net1.0开始开发的时候,不可能以及将今天的silverlight都设计出来了,不可能那是就随便说说“最根本的办法,就是不将前端的任何多余资料暂存于服务器”,还是要实事求是地去看待每一种技术。
[解决办法]在7、8年前asp.net1.0开始开发的时候,不可能已经将今天的silverlight都设计出来了,不可能再那时就随便说说“最根本的办法,就是不将前端的任何多余资料暂存于服务器”,还是要实事求是地去看待每一种技术。
------解决方案--------------------
mark
[解决办法]学习
[解决办法]ViewState很好用,怎么不好了?用起爽得很...
微软新推出的asp.net mvc,不是对webforms的否决,而是多一种选择.
asp.net mvc写的GridView控件?那里看哟...没有ViewState它怎么搞的事件?
[解决办法][解决办法][解决办法]目前的水平难以评价ViewState是不是WEB的发展趋势,但是在当前的网络条件下最好是少用、不用或者
特殊条件下才使用它。
如果是建站系统专给小企业开发网站的,客户又有几个知道你的网页里有一大堆这玩意,而这时你却获得了
高效的开发效率,反而是有益的。
[解决办法]标记一下
[解决办法]sp1234,能不能推荐一本您觉得有价值的介绍底层的书籍看看?关于asp.net 或者C# 的都可以。谢谢
[解决办法]学习...
[解决办法]关注
[解决办法]1. 我认真的看了你们的讨论,我对B/S的模式不太了解,但有一种感觉:B/S目前太混乱,搞的初学者眼花头晕,可是本质的东 西基本没变,花而不实,十年如一日,昨天是这样,今天还是这样,我正在期待真的本质变化上市(像C/S的发展变化).
2.还有就是你们对一个真正的程序操作者有极大的误点,任何东西没有什么方向,更不可能定个什么方向,真是可笑,计算机机制从来没变过,程序宗旨仍然不会变,硬是说要变的话,也只能说会跟着市场和需要而变化的.
[解决办法]恩·对于WEB开发,微软的VIewState对于普通开发来说·还是不错,也不是如楼主所说·违背历史车轮.就像windows和linux一样,
两种不通的开发模式针对不同开发水平的开发者而已。
说到AJAX,无非是几个技术的结合体·前者是机制问题·后者....
MVC确实可以提高程序的速度,我试过,但是用于小型数据的网站·就一句话:浪费开发时间··
以上仅仅是个人在开发中的一些体会,对ASP.NET的了解也不是那么深入哈·
[解决办法]一般不用viewstate
[解决办法]不知道大家说的什么意思
一个开发方式还讨论的这么激烈
想用就用,不想用也可以不用
依靠这个东西招聘?是不是有点太局限了?
起码也要考几个算法题,你上来就问viewstate?说不定哪天ms把他的原理都变了,没意义
[解决办法]mark!
[解决办法]再来谈谈VIEWSTATE,这个所谓的"状态保持机制"看似很方便,但这个机制完全就是与WEB标准化背道而驰!所有控件的状态全部转化成_VIEWSTATE发回服务器,大部分数据通常并未使用,再由服务器编码发回来,耗费巨大网络带宽、服务器资源。它仅仅是为了让开发人员可以像WinForm一样实现傻瓜开发。
------------------
简直是信口开河.
"状态保持机制"看似很方便-------照你的理解,不方便了?
但这个机制完全就是与WEB标准化背道而驰--你再去看看web标准.何况标准并不一定全都适应.有些东西还是要具体问题具体分析的
WinForm一样实现傻瓜开发-------此话更是放屁.这里面有一种思想.正如把网页叫成webform一样.
[解决办法]精華!
[解决办法]学习
[解决办法]看完了,没点有用的,先mark了
[解决办法]去cnblogs上瞅瞅吧,这个问题在asp.net mvc刚出的那一会儿就吵吵上了。你可以看看老赵的博客,里面探讨这个问题很深的呢,在这里吵架无意义。我们应该分析这里面的利弊,看看在什么情况下使用比较合适,什么情况下使用不合适,而不是一棒子打死。
[解决办法]
mark
[解决办法]
把我们这些个初学者搞得乱七八糟了..哎..
[解决办法]
路过
[解决办法]
那就把该控件的 EnableViewState 设置成false不就得了,有什么大惊小怪的
[解决办法]
是啊。想用就用,不想用就不用。
[解决办法]
标记
[解决办法]
[解决办法][解决办法]在web应用程序之前,“主机-服务器”或者“客户机-服务器”结构的系统曾经出现了30年以上 -->
在web应用程序之前,“终端-主机服务器”或者“客户机-服务器”结构的系统曾经出现了30年以上
web应用只有几年、很短的流行史,而且被证明使用纯瘦客户端开发应用程序系统可能会很不成功。你的结论没有什么错误,但是你用来攻击纯web应用系统的论据是错误的,这也就意味着即使你去开发wcf客户端软件时,也没有吸取过在出现web应用之前c/s架构的主要问题。
[解决办法]不懂,说了一大堆没用的!
[解决办法][解决办法]思想很好~
服务器与客服端的资源消耗问题
[解决办法]ViewState是可以禁用的.
再说,asp.net完全可以像传统Web那样编写. 没人会指责你. ViewState只是Asp.net众多的技术手段中的一种而已.
[解决办法]学习帮顶。
[解决办法]看了前三句,就不耐烦了:
楼主就不会把viewstate保存在自定义媒体啊,非得发给浏览器?
[解决办法]不知道我有没有理解错
ViewState的最初目的是保存控件的状态吧,以便于postback时PAGE读取用吧?
那么hidden和ViewState的最大区别是不是只在于加密?
但付出的代价就是ViewState更耗费服务器资源?
而解决的方案就是用AJAX?
AJAX在回送服务端的时候一样也要保存控件状态吧? asp.net ajax(altas)一样是放在ViewState里
那么为什么ViewState违背历史车轮?
难道仅仅是为了方便开发?
我突然想起以前学XNA的时候有一群人在讨论倒地是C#+XNA还是C++开发游戏好
最大的争论点在于C++的效率高,可以自己来控制底层的东西,那么为什么不用C,或汇编来写?
开发的效率跟运行的效率我想取舍是看项目吧?
[解决办法](注:纯属瞎想)以现在硬件和网络的发展,不知道VIEWSTATE对效率的影响是否值得一提?
[解决办法]顶
[解决办法]ViewState我还搞不懂...
[解决办法]牛!向 sp1234致敬。说的很有道理啊。
[解决办法]牛!向 sp1234致敬。说的很有道理啊。
------解决方案--------------------
个人感觉。sp1234很牛。开发经验也很丰富。但没必要为了这种技术原理搞的好像和LZ气氛那么紧张。
LZ说的也不是不无道理。但无论谁到底对错。都不应该好像得理不饶人。我知道csdn 很多人都崇拜那些星星牛人。
我也是其中一个。我只是想发下牢骚的是,个别人回帖尽量公正点。呵呵,大家继续讨论
期待更好的见解。
[解决办法]顶
[解决办法][解决办法]太刺激了
[解决办法]ViewState我搞不懂,但是我比较讨厌它的,所以一般情况下是将它弃置不用。
ViewState所产生的字符,会向客户端发送好多html代码,这是我最讨厌的一点,尤其是当它的字节很长的时候更让人讨厌。
[解决办法]我不认为我们必须下一个“非此即彼”的结论,
反倒觉得“精确控制”与“傻瓜”两者同时都是发展趋势,只不过它们各自满足不同类型的需求
个人意见~~
[解决办法]历史是不会倒退的,无论ViewState还是ajax,说是“旧拼装新酒”也罢,但终归是在他们各自道路上的一种前进
[解决办法]尽管,它们的缺点和优点都一样地明显...
尽管,我们永远都会期待更加完美......
[解决办法]一派胡言。viewstate很好很强大,前提是你要合理使用
[解决办法]顶
[解决办法]mark
[解决办法]up
[解决办法][解决办法]接分先!
[解决办法]up
[解决办法]强帖留名!
[解决办法]1、我并没有针对.net,我一直在说viewstate不好。
=====================
没有不好的技术,只有没有正确使用的技术
2.二是小型项目的开发人员,因为这些项目追求开发速度,规模小,标准低,不用太计较性能上的损失,毫无框架可言,没有团队,不求协同,不讲分工,单枪匹马就可完成。
================
恰恰说明了ViewState的用途。对于局域网内的公司业务系统,性能要求不高,但需求多变,强调开发速度,正是viewstate的用武之地。如果你把viewstate用在上万人同时在线的网站上,只能说你把正确的技术用在不正确的地方。
3、有人提出禁掉 viewstate,这也是同意了我的观点。禁掉 viewstate 带来的问题就是webform事件系统无效,开发人员必须重新考虑数据通讯方案。
========
你可以禁掉Viewstate,但是你总得有地方保持网页状态,同样也要付出性能代价
4. viewstate这种应用于瘦客户端的技术,是违背历史发展趋势的。
========
照你的理论,AJAX也是违背历史发展趋势的
[解决办法]与时俱进,新陈代谢是无可厚非的
我想真正开发相当大型,考虑要非常全面的系统不是很多吧
只要适合自己,开发出来的东西又实在就可以了,那怕是用HTML做的或者是ASP做的
让复杂的问题留给相当相当专业的人去思考吧
[解决办法]mark
[解决办法]越看越伤心,本人还挣扎在“为什么点击按钮没有反应”之类的问题上,这里在讨论象天书一样的问题,唉呀,差的远啦,向前辈们致敬
[解决办法]ViewState确实开销太大不够经济,不过已经可以满足多数要求了...不过有时候Literal的超大ViewState简直是...
[解决办法]没有更好的方法出来,你不用它用谁。
------解决方案--------------------
俺不知道你们说的都是什么?
俺就像用IE上个网。用IE完成工作。最好以后不用装office。直接office在线就可以了。不用QQ。MSN。全部在线沟通。我的硬盘是用来放大型游戏的。简单说明白点儿就是。别装好系统以后再装哪么多杀毒的。解压的,办公的,娱乐的,输入法。。。。。。。。。。。。。。。。。。。。。。。。
。。
你们搞开发的明白没有??????
[解决办法]标记一下。本人初学。
[解决办法]sp1234
真是太强了。什么时候我才能达到他那样水平的60%呢?
[解决办法] 做个标记,
学习一下..........
[解决办法]讨论的好激烈哦,本人学的不久,开发的也都是些小网站,都不强求这些性能问题,这里学习到了...
[解决办法]仁者见仁,智者见智
一种机制是在为解决特定的问题的特定的环境下出现的,随着发展它不可能一直满足人们的需要,就有可能被另一种机制取代,viewstate不是不好,是因为它满足不了你们的要求了,所以它的替代品应该很快就会出来,出现S/S的模式也是有可能的
像P2P
[解决办法].....................o888888o.o88888888o.
.................8888888888888888888888888o.
...............888::::888888888888888888888888o.
.............88::::::::88888888888888888888888888o.
...........o8:::::::::888::顶88888888888888888888888.
..........8888:8::::::8:::::::::顶88888888888888888888.
.........8888::::8888::::::::::::::::顶88888888888 88
........8888:::888888888::::::::::::::::顶888888888 8
.......88.88888888888888888:::::::::::::顶88888888888
......88..888888888888888888:::::::::::顶88888888888888
......88.888888888888888888888::::::::顶88888888888888888
......8..8888888888888888888888::::::顶88888888888888888888
........8888888888888888::88888:::::顶8888888888888888888888
......88888888888888888::::8888::::顶8888888888888888 8888
.....88888888888888888::::8888::::顶:8::***::888888888 888
....88888888888888888::::888:::::顶::::****::888888888 88
..888888888888888888::::88::::::顶:::::::::::::888888888 88
.8888888888888888888::::8::::::顶:::::::::::::顶888888888 88
888...8888888888::88::::8:::::顶:::8oo8::::::88888888888888 8
88...88888888888:::8:::::::::顶:::::::::::::88888888888888888
.8..8888888888888:::::::::::顶::"8888888":::顶88888888888888888
..8888888888::888::::::::::顶:::::"8*8"::::顶88888888888888888888
.888888888:::::88:::::::::顶88::::::::::::顶88888888888888888888888
8888888888:::::8:::::::::顶88888::::::::顶888888888888888888888888888
888888888:::::8:::::::::顶8888888ooooo顶8888888888888888888888888888888
888888.顶::::::::::::::顶8888888888::::::顶8888888888888888 888888888
8888..顶:::::::::::::::顶88888888888::::::顶8888888888888888 8888888
88888顶:::::::::::::顶88888888888888888::::::顶8888888888888 88888
...88.顶:::::::::::::8888:88888888888888888:::::顶顶888888888 8888
...88.顶:::::::::::8888顶::88888::888888888888:::::顶顶88888 888
...8...顶::::::::::8888顶:::8888:::::88888888888::::::顶顶88 888
.......8顶:::::::8888顶:::::888:::::::88:::8888888:::::::顶顶 88
......88顶:::::::8888顶::::::88:::::::::8:::::888888::::::::顶顶 88
.....8888顶:::::888顶:::::::::88::::::::::顶::::8888::::::::::::顶 8
....88888:顶::::888顶::::::::::8:::::::::::顶::::888::::::::::::::顶
...88.888:顶:::888:顶::::::::::8::::::::::::顶::888::::::::::::::::顶
...8.88888顶:::88::顶::::::::::::::::::::::::顶:88::::::::::::::::::顶
.....88888顶:::88::顶:::::::::::::::::::::::::顶88:::::::::::::::::::顶
.....88888顶:::88::顶:::::::::::::::::::::::::顶:8::::::::::::::::::::顶
....888888顶::::8::顶::::::::::::::8888::::::::顶8::::::::::::8888:::::顶
....88888..顶:::8::顶顶:::::::::::888888:::::::顶::::::::::::888888::::顶
....8888...顶顶:::::顶顶::::::::::888888:::::::顶顶::::::::::888888::::顶
....8888....顶:::::::顶顶::::::::::8888:::::::顶顶顶::::::::::8888::::顶
.....888....顶顶::::::顶顶顶:::::::::::::::::顶顶::顶::::::::::::::::顶
......88.....顶::::::::顶顶顶顶:::::::::::顶顶顶:::顶顶:::::::::::::顶
.......88....顶顶:::::::::顶顶顶顶顶顶顶顶顶顶:::::::顶顶顶顶顶顶顶顶
........88....顶顶::::::::::::顶顶顶顶顶顶顶::::::::::::顶顶顶顶顶
........88....顶顶::::::::::::顶顶顶顶顶顶顶::::::::::::顶顶顶顶
.........88...8顶顶::::::::::::::::::::::::::::::::::::::::顶
..........8...88顶顶::::::::::::::::::::::顶:::顶::::::::::顶
..............888顶顶::::::::::::::::::顶顶::::::顶顶::::::顶
.............88888顶顶:::::::::::::::顶顶顶:::::::顶顶:::::顶
.............888888顶顶:::::::::::::顶顶顶:::::::::顶顶:::顶
............88888888顶顶:::::::::::顶顶顶:::::::::::顶:::顶
...........88.8888888.顶::::::::顶顶顶::::::::::::::顶::顶
...........8..888888..顶::::::顶顶:::::::::::::::::顶::顶
..............888888..顶:::::顶:::::::::::::::::::顶::顶顶
.............888888...顶::::顶::::::::::::::::::::::::顶顶
.............888888...顶::::顶::::::::::::::::::::::::顶:顶
.............88888...顶::::::::::::::8::::::::::::::::顶::顶
............88888...顶:::::::::::::::88::::::::::::::::顶::顶
...........88888...顶::::::::::::::::8::::::::::::::::::顶::顶
..........88888...顶:::::顶:::::::::::::::::::::顶::::::::顶::顶
..........8888...顶:::::顶:::::::::::::::::::::::顶顶::::::顶::顶
.........8888...顶:::::顶:::::::::::::::::::::::顶顶顶:::::::顶:顶
........888....顶:::::顶顶::::::::::::::::::::::顶顶顶::::::::顶:顶
......8888....顶::::::顶顶:::::::::::::::::::::顶顶顶::::::::: 顶:顶
.....888......顶:::::顶:::::::::::::::::::::::顶顶::::::::::::::顶:顶
..8888.......顶::::::::::::::::::::::::::::::顶::::::::::::::::::顶:顶
.............顶::::::::::::::::::::::::::::::::::::::::::::::::::顶:顶
............顶::::::::顶:::::::::::::::::::::::::::::::::::::::::顶:顶
............顶::::::::顶:::::::::::::::::顶::::::::::::::::::::::顶:顶
...........顶::::::::::顶::::::::::::::顶::::::::::::::::::::::::顶:顶
...........顶:::::::::::顶8::::::::8:顶:::::::::::::::::::::::::顶:顶
...........顶::::::::::::888hole888顶:::::::::::::::::::::::::::顶:顶
...........顶:::::::::::::88888888顶:::::::::::::::::::::::::::顶:顶
...........顶::::::::::::::888888顶::::::::::::::::::::::::::::顶:顶
...........顶:::::::::::::::88888顶:::::::::::::::::::::::::::顶:顶
...........顶:::::::::::::::::88顶::::::::::::::::::::::::::::顶顶
...........顶:::::::::::::::::::顶:::::::::::::::::::::::::::顶顶
...........顶:::::::::::::::::::顶::::::::::::::::::::::::::顶顶
............顶:::::::::::::::::顶::::::::::::::::::::::::::顶顶
............顶:::::::::::::::::顶::::::::::::::::::::::::::顶
.............顶:::::::::::::::顶::::::::::::::::::::::::::顶
.............顶:::::::::::::::顶:::::::::::::::::::::::::顶
..............顶:::::::::::::顶:::::::::::::::::::::::::顶
..............顶:::::::::::::顶:::::::::::::::::::::::顶
...............顶:::::::::::顶:::::::::::::::::::::::顶
...............顶:::::::::::顶::::::::::::::::::::::顶
................顶:::::::::顶::::::::::::::::::::::顶
................顶:::::::::顶:::::::::::::::::::::顶
.................顶:::::::顶:::::::::::::::::::::顶
..................顶::::::顶::::::::::::::::::::顶
..................顶:::::顶::::::::::::::::::::顶
...................顶:::顶::::::::::::::::::::顶
...................顶::顶::::::::::::::::::::顶
....................顶:顶:::::::::::::::::::顶
....................顶顶:::::::::::::::::::顶
....................顶顶::::::::::::::::::顶
[解决办法]
[解决办法]给大家推荐一个不错的ViewState优化组件http://www.codeplex.com/DotNetPageEx。
其实是一个类,从Page继承,把ViewState存储到可定制的媒介上:Session/Application/文件,甚至是数据库。
目前是最初的一个版本,但是已经可以使用了,包括在Production环境下。
[解决办法]楼主这么激动干嘛,小规模应用当然讲究效率,为什么一定要那么强调ViewState的带宽浪费?不同的技术用于不同的场合,就像做生意,为什么一定做高档产品呢?能满足部分人的需求就可以了。
那大家都用汇编开发桌面程序得了,高级语言都不需要了。