web - 可以将 Web 应用程序视为客户端/服务器架构的一部分吗?
问题描述
我正在研究客户端/服务器架构和 Web 应用程序。我一直在网上阅读不同的想法和建议。有人说 Web 应用程序不被视为客户端/服务器架构应用程序,而另一些人则完全相反。我想知道什么是正确的,如果有人可以提供深入的解释,将不胜感激?
解决方案
这取决于您的 Web 应用程序的架构/设计。经验法则是:客户端应用程序必须是(资源)服务器之外的另一个软件。设计客户端/服务器架构没有“一种正确的方法”。
基于 Web 的应用程序最常见的实现是 MVC(模型视图控制器和 SPA(单页应用程序))。
MVC应用程序(如 ASP.NET 或 ZendFramework)是呈现客户端并在后端处理业务逻辑的应用程序,并且不基于客户端/服务器模型。(控制器中的操作处理请求,加载一些数据并呈现 HTML 视图作为响应)。
但是:如果您的 MVC 应用程序在内部充当代理调用“远程”Web 服务(通过 SOAP 或其他方式),则应将其视为客户端应用程序。例如:CRM 系统运行在 Intranet 网络中,并为桌面客户端提供数据服务。您可以编写一个 Web 应用程序来显示来自这些服务的数据,然后是另一个客户端应用程序。
SPA架构要求将服务器与前端分离,SPA 是前端,而前端又是客户端应用程序。有了这个要求,您基本上已经实现了客户端/服务器架构。假设 AngularJS 前端和后端可以是 REST 服务(如 ASP.NET WebAPI 或 Lumen)。
选择托管客户端应用程序的位置不会影响客户端/服务器架构,因为应用程序在执行时仍然是分开的:浏览器在访问者的设备上执行 JavaScript SPA 并调用某个数据中心中的服务。
推荐阅读
- python - 如何在 Python 中移动 numpy 数组中的项目?
- javascript - 是否可以将 useEffect 放在 if 语句中?
- oop - 您如何重构应用程序中的入口点类?
- python - Discord.py 在多台服务器上播放本地文件
- c# - 如何关闭 .NET Core 日志记录到 AWS CloudWatch 中的日志级别和类别输出?
- php - 未捕获的错误:调用成员函数 get_shipping_packages()
- php - 为我的 Laravel 模型添加静态方法或使特征动态
- r - 使用 match.call() 更新 glm
- ios - SwiftUI:ViewModifier 与其支持的视图不同步
- apache-flink - 无法访问 aws eks 中的变异 webhook