我将为我工作的营地编写一个数据库应用程序。我正在考虑用 Windows GUI 界面用 C# 编写它,但是由于各种原因,由于应用程序似乎越来越受欢迎,所以使用浏览器。我想知道为什么有人不会选择将应用程序编写为 Web 应用程序。前任。后退按钮会给您带来一些麻烦。还有其他人可以想到的吗?
13 回答
有很多缺点:
- 速度和响应能力往往明显变差
- 复杂的 UI 小部件(例如树形控件)更难实现
- 渲染任何类型的图形都非常棘手,3D 图形更难
- 你必须搞乱登录
- 集中式服务器意味着客户端始终需要网络访问
- 安全限制可能会给您带来麻烦
- 浏览器不兼容可能会导致大量额外工作
- UI 约定在 Web 上的定义不太明确 - 用户可能会发现它更难使用
- 客户端存储受限
问题是.. 是否有足够的内容适用于您的项目以使 web 成为错误的选择?
这里没有提到的一件事是生成一个好的 Web 应用程序所需的复杂性和知识水平。问题是除非你做一些非常简单的事情,否则这些应用程序中没有“单一”的知识或技术。例如,如果您要为某个客户端服务器平台编写应用程序。您可以使用 Java 或 C++ 进行开发。对于复杂的 Web 应用程序,您可能必须具备 Java、Java Script、HTML、Flash、CSS、Ajax、SQL、J2EE 等方面的专业知识。此外,基于 Web 的应用程序的组件也更多,Web 应用程序服务器、HTTP服务器、数据库、浏览器......是典型的组件,但可能还有更多......客户端服务器应用程序就是它所说的典型......客户端应用程序和服务器应用程序。我的经验和个人偏好不是基于网络的.. 基于网络的许多事情都很棒。但是,即使我是一家领先公司的 IT 架构师,该公司完全沉浸在 Web 应用程序中作为一切的解决方案......缺点仍然很多......我做的事情是技术会发展,但缺点会随着时间的推移而消失.
本质上,真正的限制只是通过平台,即浏览器。如果您必须考虑当前使用的所有浏览器,由于每个浏览器的标准程度不同,这可能会很痛苦。
如果可以控制要使用的浏览器,即每个人都在您在现场控制的计算机上,并说您在所有这些计算机上都安装了 Firefox,那么您可以在内容交付中充分利用最新的 Javascript 和 CSS 标准。
[编辑] 您还可以查看诸如 adobe 集成运行时或“AIR”之类的选项,允许您使用基于传统浏览器的选项(如 xhtml/css/javascript、flash/flex)对前端进行编码并连接后端在线到您的数据库,同时还提供传统桌面应用程序的功能。
我看到的 Web 应用程序最大的区别和缺点是状态管理。由于网络本质上是无状态的,因此您想要维护的每件事都必须随着每个请求和响应从服务器来回发送。有时很难在页面大小和性能方面有效地存储和检索它。此外,浏览器没有真正的标准(至少不是每个人都遵守)这一事实使得一致性真的............很有趣。
您需要对将要运行 Web 应用程序的服务器进行网络访问(如果应用程序将有多个用户 - 通常是这种情况)。
实际上,利大于弊 - 如果您可以提供有关您的应用程序的一些详细信息,我们可以提供更多帮助...
这完全取决于您的项目的要求。在大多数情况下,这些天没有太多的 Web 应用程序不能做。诚然,某些应用程序确实属于桌面浏览器(虽然目前正在快速发展),但还没有完全实现。从Google Docs、Gmail等应用程序的出现
在网络上没有什么是你不能做的。但是,如果您正在创建魔兽世界的竞争对手,那么网络肯定不是最佳解决方案。同样,不幸的是,我们需要更多地了解您为营地构建的应用程序。网络最好的部分是任何拥有浏览器的人都可以使用您的应用程序。
Web 应用程序将处理委托给远程机器。根据处理量,这可能是一个骗局。考虑一个照片编辑器,它是一个网络应用程序。
Web 应用程序也无法处理大量往返于客户端的数据。您可以在线观看视频......当它被压缩时。我们还需要一段时间才能看到任何基于 Web 的视频编辑软件。
浏览器兼容性也很麻烦。您无法 100% 控制应用程序的外观。
Vaibhav 有一个很好的观点。你的应用是什么?
一个主要的问题是迁移的停机时间……用户永远不会期望应用程序停机,但实际上它必须停机才能进行重大升级。使用桌面应用程序执行此操作时,用户(或最终用户系统管理员)可以控制升级发生的时间;使用在线应用程序,他们不是。
对于具有大数据的应用程序,性能可能是一个主要问题,因为您要集中存储大量用户数据,这意味着 IO 性能不会像您给他们一台笔记本电脑那样好。
一般来说,可扩展性会给基于服务器的应用程序带来问题。桌面应用程序的扩展性非常好。
您可以使用基于 Web 的应用程序做很多事情,但使用胖客户端做某些事情要容易得多:
- 性能:您可以轻松访问客户端 CPU 的全部功能。
- 响应性:交互性快速而简单。
- 图形:您可以轻松使用 DirectX 和 OpenGL 等图形库快速创建令人印象深刻的图形。
- 使用本地文件
- 点对点
决定一个 Web 应用程序是否是一个好的方法取决于你想要实现的目标。然而,这里有一些更普遍的 Web 应用程序的缺点:
- 与桌面应用程序(例如 Outlook)的真正集成是不可能的
- 在您的应用程序和桌面/其他正在运行的应用程序之间拖放
对于 Web 应用程序,当您在服务器上存储用户数据时,存在更多的隐私问题。您必须确保不会丢失/泄露它,并且您的用户必须对将这些数据存储在您的服务器上的想法感到满意。
除此之外,还有许多安全问题,如中间人攻击、XSS或 SQL 注入。
您还需要确保手头有足够的计算能力和带宽。
“例如,后退按钮会给你带来一些麻烦。”
您必须具体说明这一点。许多人在他们的 Web 应用程序中犯了根本性的错误,并在他们处理事务的方式中引入了错误。如果您不使用“发布后重定向”(也称为Post-Redirect-Get,PRG 设计),那么您创建了一个错误,该错误显示为后退按钮的问题。
一个笼统的说法,即有问题的后退按钮不太可能是真的。一个具体的例子可以澄清你对此的具体问题。
如果您正确设计应用程序,后退按钮真的不是什么大问题。您可以使用 AJAX 来操作当前页面的某些部分,而无需将项目添加到浏览器历史记录中(因为页面本身不会更改)。
设计 Web 应用程序的最大问题与状态以及需要围绕其编程的挑战有关。使用桌面应用程序,状态很容易处理,您可以打开数据库连接,锁定记录并等待用户进行更改并提交。使用 Web 应用程序,您可以锁定记录……但是如果用户关闭浏览器怎么办?在您的应用程序设计中必须克服这些问题。
在设计 Web 应用程序时,请确保每次访问服务器都“独立”并提供完整的答案。在执行任何工作之前始终重新初始化您的变量,并且永远不要假设任何事情。我曾经遇到的挑战之一是将网格数据的“页面”拉回给用户。在一个真正繁忙的系统中,记录的添加/修改是实时发生的,用户在页面之间的导航会有很大的不同,有时甚至会导致在查询前添加新的记录时查看相同的几条记录.