基于Web的应用程序的缺点是什么

时间:2020-03-06 14:30:53  来源:igfitidea点击:

我将为我工作的营地编写一个数据库应用程序。我正在考虑使用Windows GUI界面在C中编写它,但是由于各种原因,使用浏览器作为应用程序似乎越来越受欢迎。我想知道的是为什么有人不会选择将应用程序编写为Web应用程序。前任。后退按钮可能会给我们带来一些麻烦。还有其他人能想到的事情吗?

解决方案

我们需要对要用于Web应用程序的服务器进行网络访问(如果通常情况下该应用程序将有多个用户)。

实际上,如果我们可以提供一些有关应用程序的详细信息,那么利弊多于利弊,我们可以提供更多帮助...

本质上,真正的限制仅是平台,即浏览器。如果我们必须考虑当前使用的所有浏览器,由于每个浏览器的标准程度不同,可能会很痛苦。

如果可以控制使用哪个浏览器,即每个人都在我们所控制的计算机上,并且说我们在所有的计算机上都安装了firefox,则可以在内容交付中充分利用最新的Javascript和CSS标准。

[edit]我们也可以考虑使用诸如adobe集成运行时之类的选项,或者使用" AIR"作为选项,使我们可以使用基于传统浏览器的选项(例如xhtml / css / javascript,flash / flex)对前端进行编码,并将后端连接起来在线访问数据库,同时也仅提供传统桌面应用程序的功能。

这完全取决于项目要求。在大多数情况下,如今没有太多的Web应用程序可以做。诚然,某些应用程序确实作为浏览器属于台式机(虽然目前正在快速发展),但仍不存在。从诸如Google文档,Gmail之类的应用程序问世

我们在网络上没有太多可以做的事情。但是,如果我们要创建"魔兽世界"的竞争对手,则肯定不是最佳的网络解决方案。同样,不幸的是,我们需要对我们正在为该营地构建的应用程序有更多的了解。关于网络的最好之处在于,任何拥有浏览器的人都可以使用应用程序。

Web应用程序将处理委托给远程计算机。根据处理量,这可能是一个缺点。考虑一个照片编辑器,它是一个网络应用程序。

Web应用程序也不能处理往返于客户端的大量数据。我们可以在线观看视频。不久之后,我们将看到任何基于Web的视频编辑软件。

浏览器兼容性也很麻烦。我们无法100%控制应用程序的外观。

Vaibhav有一个很好的观点。你的申请是什么?

一个主要的问题是迁移的停机时间……用户永远不会期望该应用程序会停机,但实际上,要进行重大升级,它就必须停机。当使用桌面应用程序执行此操作时,用户(或者最终用户系统管理员)可以控制何时进行升级。使用在线应用程序,则不是。

对于具有大数据的应用程序,性能可能是一个主要问题,因为我们要集中存储大量用户的数据,这意味着IO性能将不如我们为他们提供一台笔记本电脑那样好。

通常,可伸缩性给基于服务器的应用程序带来了问题。桌面应用程序可扩展性很好。

我们可以使用基于Web的应用程序做很多事情,但是使用胖客户端执行某些操作要容易得多:

  • 性能:我们可以轻松访问客户端CPU的全部功能。
  • 响应速度:交互快速简便。
  • 图形:我们可以轻松地使用DirectX和OpenGL等图形库来创建快速的令人印象深刻的图形。
  • 处理本地文件
  • 点对点

有很多缺点:

  • 速度和响应能力往往会大大变差
  • 复杂的UI小部件(例如树控件)更难做
  • 渲染任何类型的图形都非常棘手,而3D图形则更难
  • 我们必须弄乱登录名
  • 集中式服务器意味着客户端始终需要网络访问
  • 安全限制可能会给我们带来麻烦
  • 浏览器不兼容会导致很多额外的工作
  • UI约定在网络上的定义不太明确-用户可能会发现更难使用
  • 客户端存储空间有限

问题是..这些内容是否足够适用于项目,从而使网络成为错误的选择?

确定Web应用程序是否是一种好的方法取决于我们要实现的目标。但是,这是Web应用程序的一些更一般的缺点:

  • 无法与桌面应用程序(例如Outlook)真正集成
  • 在应用程序与桌面/其他正在运行的应用程序之间拖放

使用Web应用程序时,将用户数据存储在服务器上时,存在更多的隐私问题。我们必须确保我们不会丢失/披露它,并且用户必须对在服务器上存储该数据的想法感到满意。

除此之外,还有许多安全问题,例如中间人攻击,XSS或者SQL注入。

我们还需要确保手头有足够的计算能力和带宽。

我看到的Web应用程序最大的区别和缺点是状态管理。由于Web本质上是无状态的,因此我们要维护的所有内容都必须随服务器的每个请求和响应来回发送。有时很难在页面大小和性能方面有效地存储和检索它。还有一个事实,那就是浏览器没有真正的标准(至少不是每个人都遵守),这确实使一致性变得很有趣。

"例如。后退按钮可能会给我们带来麻烦。"

我们必须对此进行具体说明。许多人在他们的Web应用程序中犯了根本性的错误,并在处理事务方面引入了错误。如果我们不使用"发布后重定向"(也称为Post-Redirect-Get,PRG设计),那么我们已经创建了一个错误,该错误显示为"后退"按钮的问题。

明确声明后退按钮出现问题的可能性不大。一个具体的例子将阐明我们对此的具体问题。

如果正确设计应用程序,则后退按钮实际上并不是什么大问题。我们可以使用AJAX来操作当前页面的某些部分,而无需在浏览器历史记录中添加任何项(因为页面本身不会更改)。

设计Web应用程序的最大问题与状态以及需要解决的挑战有关。使用桌面应用程序,状态易于处理,我们可以保持数据库连接打开,锁定记录并等待用户进行更改并提交。使用Web应用程序,我们可以锁定记录...但是如果用户关闭浏览器怎么办?在设计应用程序时必须克服这些问题。

在设计Web应用程序时,请确保每次访问服务器的过程都是"独立的"并提供完整的答案。在执行任何工作之前,请始终重新初始化变量,切勿承担任何责任。我曾经遇到的挑战之一是将网格数据的"页面"拉回到用户手中。在一个真正繁忙的系统中,由于记录的添加/修改是实时发生的,因此用户在页面之间的导航会发生很大的变化,有时甚至会由于在查询的前面添加新添加而导致查看同一组记录。 。

这里没有提到的一件事是生成一个良好的Web应用程序所需的复杂性和知识水平。问题是,除非我们做的非常简单,否则这些应用程序中就没有"单一"知识或者技术。
例如,如果要为某些客户端服务器平台编写应用程序,则可以使用Java或者C ++开发。对于复杂的Web应用程序,我们可能必须具有Java,Java Script,HTML,Flash,CSS,Ajax,SQL,J2EE等方面的专业知识。基于Web的应用程序的组件也很多,Web Application Server,HTTP服务器,数据库,浏览器..是典型的组件,但可能还有更多..客户端服务器应用程序正是它所说的..客户端应用程序和服务器应用程序。我的经验和个人偏爱不是基于Web的。基于Web的东西在很多方面都很棒。但是,即使我是一家领先公司的IT架构师,该公司已完全融入Web应用程序中,成为所有问题的解决方案...缺点仍然很多。.我认为技术会不断发展,但是缺点会随着时间的流逝而消失。