web软件开发难在哪里(相比桌面软件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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软件开发难在哪里(相比桌面软件)的主要内容,如果未能解决你的问题,请参考以下文章

C++ 究竟难在哪里?

都说C++难,那么它到底难在了哪里?

区块链开发公司的落地应用难在哪里

软件基础架构介绍

软件基础架构介绍

桌面笔记软件怎么开发