Architecture 在web浏览器中而不是在web应用程序中执行后端代码的方法?

Architecture 在web浏览器中而不是在web应用程序中执行后端代码的方法?,architecture,webserver,Architecture,Webserver,有没有办法在web浏览器中执行后端代码(ruby),而不是在web应用程序(rails)中执行 因为我想知道为什么所有的代码都应该在服务器上执行,这不是很糟糕的架构吗 这与SVN的概念相同,它非常依赖于服务器,而不是像Git这样的分布式体系结构,每个客户端都执行后端代码。通过这种方式,它将从web服务器上释放性能负载,并且可以处理更多的客户端,因为今天的计算机在客户端是非常可执行的 客户端将通过后端服务器与数据库通信,但后端不会包含所有应用程序代码,只包含通信部分。将编译客户端上的服务器代码 这

有没有办法在web浏览器中执行后端代码(ruby),而不是在web应用程序(rails)中执行

因为我想知道为什么所有的代码都应该在服务器上执行,这不是很糟糕的架构吗

这与SVN的概念相同,它非常依赖于服务器,而不是像Git这样的分布式体系结构,每个客户端都执行后端代码。通过这种方式,它将从web服务器上释放性能负载,并且可以处理更多的客户端,因为今天的计算机在客户端是非常可执行的

客户端将通过后端服务器与数据库通信,但后端不会包含所有应用程序代码,只包含通信部分。将编译客户端上的服务器代码

这不是解决性能负载问题的更好方法吗?

安全性

如果这是一个电子商务应用程序,您肯定不希望客户端运行后端代码,因为这样一些不道德的人可能会修改金融交易。当数据全部驻留在服务器上时,控制数据和确保其安全性要容易得多(想想健康记录)


另一个例子是表单验证。虽然客户机代码可以执行输入验证,但它位于客户机上这一事实意味着可以绕过它。这就是为什么服务器将(应该)在处理之前验证所有用户输入,即使客户端代码已经执行了验证。

在客户端上运行代码的一个问题是,您需要更加小心安全问题。服务器是一个已知/受控的环境,可以在部署应用程序之前进行良好的测试。如果您公开发布应用程序,那么您永远不知道客户端计算机的配置将是什么,因此您可能必须适应不同的配置,并且您的代码更容易被滥用,无论是意外的还是恶意的。

您不能在浏览器中运行Ruby代码,但你当然可以把一些东西转移到它身上。Javascript和Flash可能是客户端脚本最常用的语言。客户端工作的局限性主要与安全性和数据有关。为了安全起见,许多事情必须在服务器端完成。通常,您的服务器与数据存储的连接要比客户端好得多,因此在服务器上工作通常效率更高


使用繁重的javascript/客户端脚本最常见的原因是为了响应性——这并不是说您将CPU密集型工作卸载到客户端,但是,如果客户不必点击服务器来执行操作,那么他们的感知响应能力显然会更好。

我认为使用AdobeFlex等/Silverlight构建的RIA应用程序正朝着这个方向发展。如果您想在客户机而不是服务器上做很多事情,您应该看看其中的一些

然而,构建应用程序的旧客户机-服务器模式一直存在。VB6、Powerbuilder、Oracle2K等技术及其当前的化身(如WPF/Windows窗体/Oracle窗体)都提供了一种在客户端执行更多操作的方法,而不是在服务器上执行所有操作

此外,将所有应用程序逻辑(而不是DB通信逻辑)移到客户端意味着您将回到厚客户端的工作方式,这与web应用程序的瘦客户端模型相比有其优点,但也有其缺点

厚客户端应用程序的部署/升级;支持多个客户端操作系统/不同的客户端环境,这可能会使您的应用程序性能变得不可预测,这只是为什么从胖客户端转向瘦客户端的一些问题。尽管像ClickOnce这样的技术有助于部署,但这些问题仍然存在——即使在今天也不同程度地存在


因此,根据您的需要选择厚/瘦客户机是一种折衷办法。

如果您将所有内容编译成机器代码,代码难道不安全吗?难道代码不可读,不能修改吗?@ajsie:不。即使它被编译成某种字节码,也会有人对它进行分解,并找出它的作用。此外,有人可以使用一种工具来监控网络流量,并对发送的数据进行反向工程。