【问题标题】:What are the cons of a web based application基于 Web 的应用程序的缺点是什么
【发布时间】:2010-09-11 20:05:31
【问题描述】:

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

【问题讨论】:

  • 更具体。把情况告诉我们,我们可以告诉你你的未来 web 应用可能有哪些缺点。

标签: database web-applications browser


【解决方案1】:

您需要对要运行 Web 应用程序的服务器具有网络访问权限(如果该应用程序将有多个用户 - 通常是这种情况)。

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

【讨论】:

    【解决方案2】:

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

    如果可以控制要使用的浏览器,即每个人都在您在现场控制的计算机上,并说您在所有计算机上都安装了 firefox,那么您就可以充分利用最新的 Javascript 和 CSS 标准内容交付。

    [编辑] 您还可以查看诸如 adobe 集成运行时或“AIR”之类的选项,允许您使用基于传统浏览器的选项(如 xhtml/css/javascript、flash/flex)对前端进行编码,并拥有后端在线连接到您的数据库,同时还提供传统桌面应用程序的功能。

    【讨论】:

      【解决方案3】:

      这完全取决于您项目的要求。在大多数情况下,这些天没有太多的 Web 应用程序不能做。诚然,某些应用程序确实属于桌面浏览器(虽然目前正在快速发展),但还没有完全实现。从Google DocsGmail等应用的出现

      在网络上没有什么是你不能做的。但是,如果您正在创建一个魔兽世界的竞争对手,那么网络肯定不是最佳解决方案。同样,不幸的是,我们需要更多地了解您为营地构建的应用程序。网络最棒的地方在于,任何拥有浏览器的人都可以使用您的应用程序。

      【讨论】:

        【解决方案4】:

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

        Web 应用程序也无法处理大量往返于客户端的数据。您可以在线观看视频......当它被压缩时。我们还需要一段时间才能看到任何基于网络的视频编辑软件。

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

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

        【讨论】:

          【解决方案5】:

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

          对于具有大数据的应用程序,性能可能是一个主要问题,因为您要集中存储大量用户的数据,这意味着 IO 性能不会像您将它们全部分配给它们那样好笔记本电脑。

          一般来说,可扩展性会给基于服务器的应用程序带来问题。桌面应用程序的扩展性非常好。

          【讨论】:

            【解决方案6】:

            您可以使用基于 Web 的应用程序做很多事情,但使用胖客户端做某些事情要容易得多:

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

            【讨论】:

              【解决方案7】:

              有很多缺点:

              • 速度和响应能力往往明显变差
              • 复杂的 UI 小部件(例如树形控件)更难实现
              • 渲染任何类型的图形都相当棘手,3D 图形更难
              • 你必须搞乱登录
              • 集中式服务器意味着客户端始终需要网络访问权限
              • 安全限制可能会给您带来麻烦
              • 浏览器不兼容会导致大量额外工作
              • Web 上的 UI 约定不太明确 - 用户可能会发现它更难使用
              • 客户端存储受限

              问题是.. 是否有足够的内容适用于您的项目以使 web 成为错误的选择?

              【讨论】:

              • 我本来打算建议 HTML5 离线缓存意味着您不必具有网络访问权限即可使用 Web 应用程序,也没有响应问题,但后来我记得 IE 总是在那里破坏乐趣。 Chrome 框架是一个拼凑的解决方案,但并不理想。
              • 我真的很好奇如何在网络应用程序中进行绘图。是否有某种内置的画布控件?绘图是通过用户浏览器使用的任何绘图完成的吗?我假设directx和opengl不可用?什么是可用的? Web 框架是否具有我在 WPF 中具有的典型列表框、树视图样式控件?
              【解决方案8】:

              决定一个网络应用程序是否是一个好的方法取决于你想要达到的目标。然而,这里有一些 Web 应用程序更普遍的缺点:

              • 与桌面应用程序(例如 Outlook)的真正集成是不可能的
              • 在您的应用和桌面/其他正在运行的应用之间拖放

              【讨论】:

                【解决方案9】:

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

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

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

                【讨论】:

                  【解决方案10】:

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

                  【讨论】:

                    【解决方案11】:

                    “例如,后退按钮会给您带来一些麻烦。”

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

                    一个笼统的说法,即有问题的后退按钮不太可能是真的。一个具体的例子可以澄清你对此的具体问题。

                    【讨论】:

                    • 这是非常令人恼火的轻率。你似乎在暗示“哦,当然,后退按钮从来没有任何问题,你是个白痴。”那简直是白痴。说“后退按钮会给你带来麻烦”与“OMG 后退按钮无法解决!”几乎不一样!
                    • @BobbyShaftoe:抱歉,您认为我对细节的要求过于轻率。我从来没有遇到过麻烦,而且我不知道他们在说什么(除了标准的redirect-after-post)。如果他们谈论的是发布后重定向,我似乎已经解决了。我正在寻求帮助。
                    【解决方案12】:

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

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

                    在设计 Web 应用程序时,请确保每次访问服务器都“独立”并提供完整的答案。在执行任何工作之前始终重新初始化您的变量,并且永远不要假设任何事情。我曾经遇到的挑战之一是将网格数据的“页面”拉回给用户。在一个真正繁忙的系统中,随着记录的添加/修改是实时发生的,用户在页面之间的导航会有很大的不同,有时甚至会导致在查询前面添加新的记录时查看同一组的几条记录.

                    【讨论】:

                    • 嗯,这可能是真的,但是有完整的 Javascript 框架来处理历史和 AJAX 下的“后退按钮”。
                    【解决方案13】:

                    这里没有提到的一件事是生成一个好的 Web 应用程序所需的复杂性和知识水平。问题是,除非您做一些非常简单的事情,否则这些应用程序中没有“单一”的知识或技术。 例如,如果您要为某个客户端服务器平台编写应用程序。您可以使用 Java 或 C++ 进行开发。对于复杂的 Web 应用程序,您可能需要具备 Java、Java Script、HTML、Flash、CSS、Ajax、SQL、J2EE 等方面的专业知识。此外,基于 Web 的应用程序的组件也更多,Web 应用程序服务器、HTTP服务器,数据库,浏览器..是典型的组件,但可能还有更多......客户端服务器应用程序就是它所说的典型......客户端应用程序和服务器应用程序。我的经验和个人偏好不是基于网络的.. 基于网络的很多事情都很棒。但即使我是一家领先公司的 IT 架构师,该公司完全沉浸在 Web 应用程序中作为一切的解决方案......缺点仍然很多......我做的事情是技术会发展,但缺点会随着时间的推移而消失.

                    【讨论】:

                      猜你喜欢
                      • 2012-06-19
                      • 2015-07-11
                      • 2010-09-30
                      • 1970-01-01
                      • 1970-01-01
                      • 2010-09-13
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多