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

Posted

技术标签:

【中文标题】Web 应用程序中真正的客户端-服务器架构的缺陷?【英文标题】:Pitfalls of true client-server architecture in web applications? 【发布时间】:2009-11-24 13:22:00 【问题描述】:

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

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

瘦服务器,只是一个无头 API:

处理安全问题

处理核心业务逻辑

提供数据持久性

一个胖客户端,具有类似桌面的设计:

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

具有 gui 模板和渲染功能

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

但是,乍一看,这样的架构并不能很好地适应当今网络的运作方式:

    javascript 不可用时很差或没有可能的回退(现在 2% 的用户代理,对吗?)

    可访问性问题(我在这里有点不知所措)

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

这种方法的最大优点是:

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

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

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

缺点包括:

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

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

希望这会有所帮助,

【讨论】:

是的,这些都是这种架构的一些优点。但是我的问题是它在某些用例中是如何不足的。 @julien - 在哪些用例中?特别是,可访问性和 JavaScript 是站点 UI 设计的一个方面,而不是底层持久性机制的一个方面。您的瘦服务器不应该是 UI,因此 SEO 在这里也不是问题。【参考方案2】: 它可以是 JavaScript 或 Flex(最好是 JS)。在我看来,这 2% 可以忽略不计 辅助功能 - Check this,仍在进行中,但值得一看。 搜索引擎索引内容。您将编写一个应用程序,它专注于功能,而不是内容。您可以有一个打开的纯 html 屏幕,它可以被索引。

【讨论】:

不错的链接,但是我仍然希望能够将一些动态内容编入索引,但不太确定如何实际做到这一点。 您可以提供指向动态内容的静态链接。

以上是关于Web 应用程序中真正的客户端-服务器架构的缺陷?的主要内容,如果未能解决你的问题,请参考以下文章

可扩展 Web 应用程序的服务器架构

socket.io入门,简易聊天室

gRPC-Web发布,REST又要被干掉了?

系统架构什么是负载均衡

EMQ打造面向工业 4.0 的智能工厂|云边协同架构助力视觉 AI 缺陷检测应用构建

构建之美03