首页 > 代码库 > web软件开发难在哪里(相比桌面软件)
web软件开发难在哪里(相比桌面软件)
首先,我认为WEB软件的开发是比桌面软件更为复杂的. 起码,开发方式远远不理想.
桌面软件的模块化, 组件化已经相当成熟,比如当年的VB delphi 后来的visual c# ,java+ swt ,c++ QT. 而WEB开发,到目前为止都没有特别理想的组件化开发机制.
为了实现改善WEB软件开发,业界做了许多尝试.
2002年1月16日asp.net 1.0发布, 当时真是让人耳目一新, aspx简直就是用VB的方式来开发web 啊!
Java后来也跟进,推出了JFaces方案, 与aspx相类似 .
2006.05.16 ,google gwt 首次发布! 与aspx不同, gwt的思路是像桌面软件一样的方式来开发,完成之后,通过将java代码编译成javascript来实现在浏览器中运行. 类似的方案还有pyjamas (现在的pyjs)
同一年里, January 2006, jquery首次发布! 现在回过头来年这个事情, 可以认为是业界逐渐发现问题在于javascript ! javascript 的低能, 束缚了人们的手脚 .
The first version of the V8 engine was released at the same time as the first version of Chrome: September 2, 2008.
2008年9月2号, 随着google chrome浏览器的发布, 新的javascript引擎v8 面世.
v8的面世让javascript的运行速度大幅提升, 为后来的前端技术革新创造了条件.
顺带说一下, google dart lang , First appeared: October 10, 2011 . 2011年双十节google推出了dart 语言,当时的想法是使用来替换javascript .
Facebook reactJS Initial release: March 2013 . (2013年3月,Facebook reactJS 首次发布) reactJS 可以认为是组件化开发的一次重要尝试.
然而,时至今日, 我认为还不存在一种开发机制,可以达到delphi之于桌面软件开发的那种理想程度.
根据本人多年开发web后台系统的经验,我感觉web比较比较困难的根本原因在于几点:
1.B/S软件是一种使用分布式软件,即软件的界面 代码 数据不在同一计算机;B/S软件基于HTTP协议,而HTTP协议有一个重大特点是 不保持连接 且无状态.
2.javascript语言的特点以及运行速度,难以支持复杂的软件开发, 并且别无它选,只能使用javascript . 虽然因为v8引擎,有了大幅改进.
3.html语言本身表现力不路,且不支持扩展. 比如我需要一个datagrid功能,但是并没有一种直接的方式可以定义一个新的标签<datagrid></datagrid>
重点说一说第一点. 当一个用户使用浏览器打开一个网页时,发生了什么? 简单地讲是这样的: 用户计算机的浏览器程序, 通过http协议将html描述的界面从远程服务器传输到本地, 浏览器将其渲染成图形界面展示给用户并提供交互功能.,
一旦用户在网页做了一些操作,则必然有一些数据需要传输回服务器保存(不然,服务器端是无法感知到用户的操作, 交互就没有完成)
网页上的交互就是这样一个个"来回" 进行的.
我经常会想,如果使用远程桌面的方式来开发一个系统, 每个用户在远程桌面里打开一个软件窗口,那么软件开发起来会容易很多!
为什么? 因为可以不受html语言束缚,各种桌面窗口组件直接使用. 因为远程桌面的RDP协议是操持连接因而是有状态的,如果网速度足够快,则用户在远程与在本地没有明显区别.
既然远程桌面这种方式并没有成为软件交互的主流? 原因不难理解: 1网速不允许;2服务端资源无法支撑这种开销;3.安装麻烦,远不如浏览器直接打开方便. 除了这几个主要原因,4安全性可能也有一些问题.
那么,出路在哪里呢? 或者说,未来将往什么方向发展?
这个嘛 ,我不是大师,我不知道. 我想,肯定是现在有的技术比如asp.net jfaces gwt 继续发展, 各种前端框架层出不穷, 前端与后端一体化框架会出现(server side:nodejs ), 还得重点关注ES6等javascipt的发展.
未完...
web软件开发难在哪里(相比桌面软件)