architecture - Web 应用程序中真正的客户端-服务器架构的陷阱?

标签 architecture seo accessibility client-server

我一直在研究如何以真正的客户端-服务器方式构建 Web 应用程序。

这种类型的架构主要包括:

  • 瘦服务器,仅仅是一个 headless 的 api:

    • 处理安全问题

    • 处理核心业务逻辑

    • 提供数据持久化

  • 胖客户端,具有类似于桌面的设计:

    • 缓存数据,使离线使用成为可能

    • 具有图形用户界面模板和渲染功能

    • 持有和处理非关键业务逻辑

但是,乍一看,这样的架构与当今网络的运作方式并不协调:

  1. 当 javascript 不可用时,回退效果很差或没有可能回退(如今 2% 的用户代理,对吗?)

    • 可访问性问题(我在这里有点无能)

    • 关注 SEO,伪装是一种选择,但这意味着应该提供一些服务器端 html 呈现,并且使内容相关可能很棘手

还有什么我想念的吗? 您会采用哪种方法来解决这些问题?

最佳答案

REST 允许为 Web 应用程序和桌面应用程序轻松创建此类架构。

此处 REST 服务器将响应 HTTP 请求(GET、POST、DELETE 等)以执行 CRUD 操作以实现持久性,以及很可能的业务核心规则和安全性。

多个 REST 服务器可能会在较大的系统中使用“协调器”进行聚合,以处理事务等问题。

在此之上,UI 层将使用 HTML、AJAX 或其他方式向客户端进行实际演示。

这种方法的最大优点是:

  • 它是可扩展的。 REST 持久层和协调层是无状态的,因此可以引入额外的服务器来解决更大的负载。

  • 数据持久性、安全性和业务逻辑被巧妙地封装在 UI 之外。

  • 可以合理简单地为不同情况创建不同的 UI,例如用于手机等的精简 UI。

缺点包括:

  • 它相对较新,因此缺乏工具支持(尤其是在 Microsoft 领域)

  • 大型系统的部署可能会变得复杂,因为可能存在很多服务相互依赖性

希望对您有所帮助,

关于architecture - Web 应用程序中真正的客户端-服务器架构的陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790020/

相关文章:

php - 如何使用自定义变量更改 url 变量

jQuery Superfish 菜单和 SEO

css - seo和div显示:none

accessibility - 对WCAG 2.0验证有任何工具建议吗?

objective-c - 从 Cocoa 应用程序获取 Finder 窗口的当前目录

database-design - Pony ORM 和微服务架构

mysql - 根据列枚举值创建 SQL 语句

c# - 是否应该将 UI 组件传递给业务逻辑程序集以进行绑定(bind)

html - 打开时如何限制仅在模态弹出窗口中按下 Tab 键?

python - 使用公共(public)数据库在不同机器上分离 django 项目