有没有办法在Web浏览器中执行后端代码(ruby)而不是Web应用程序(rails)?
因为我想知道为什么所有代码都应该在服务器中执行,这不是糟糕的架构。
它与SVN的概念相同,它非常依赖于服务器,而不是像Git这样的分布式架构,每个客户端都执行后端代码。通过这种方式,它可以释放来自Web服务器的性能负载,并且它可以处理更多客户端,因为今天的计算机在客户端可以很好地执行。
客户端将通过后端服务器与数据库通信,但后端将不包含所有应用程序代码,仅用于通信部分。将编译客户端上的服务器代码。
这不是解决性能负载问题的更好方法吗?
答案 0 :(得分:3)
您无法在浏览器中运行Ruby代码,但您当然可以卸载一些内容。 Javascript和Flash可能是客户端脚本最常用的语言。客户端工作的局限性主要是安全性和数据。出于安全考虑,服务器端必须完成许多工作。通常,您的服务器与数据存储的连接比客户端更好,因此在服务器上工作通常更有效。
使用繁重的javascript /客户端脚本的最常见原因是响应性 - 并不是说你已经将CPU密集型工作卸载到客户端,但客户端的感知响应性显然会好得多,如果他们不必命中服务器来执行操作。
答案 1 :(得分:3)
我认为使用Adobe Flex等/ Silverlight构建的RIA应用程序正朝着这个方向发展。如果你想在客户端而不是服务器上做很多事情,你应该看看其中的一些。
但是,始终存在旧的客户端 - 构建应用程序的服务器范例。 VB6,Powerbuilder,Oracle2K等技术及其当前的头像,如WPF / Windows Forms / Oracle Forms,都提供了一种在客户端执行更多操作的方法,而不是在服务器上执行所有操作。
此外,将所有应用程序逻辑(除了数据库通信逻辑)移动到客户端意味着您将回到胖客户端的工作方式 - 与瘦客户端模型相比,它有其优点,但也有缺点。网络应用程序。
胖客户端应用程序的部署/升级;支持多个客户端操作系统/不同的客户端环境,这可能会使您的应用程序性能无法预测,这只是为什么首先要将胖客户端转移到瘦身的一些问题。尽管像ClickOnce这样的技术有助于部署,但这些问题仍然存在 - 即使在今天也存在不同程度。
因此,根据您的需要,您是否选择厚/瘦客户端是一种权衡。
答案 2 :(得分:1)
安全。
如果这是一个电子商务应用程序,你绝对不希望客户端运行后端代码,因为一些不道德的人可能会修改金融交易。当它们全部驻留在服务器上时,更容易控制数据并确保其安全性(想想健康记录)。
另一个例子是表单验证。虽然客户端代码可以执行输入验证,但它位于客户端上的事实意味着它可以被绕过。这就是为什么服务器在处理之前(应该)验证所有用户输入的原因,即使客户端代码已经执行了验证。
答案 3 :(得分:1)
在客户端上运行代码的一个问题是您需要更加小心安全问题。服务器是已知/受控环境,可以在部署应用程序之前进行充分测试。如果您公开发布应用程序,那么您永远不会知道客户端计算机的配置是什么,因此您可能必须满足不同的配置,并且您的代码更容易被滥用,无论是意外还是恶意。