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 应用程序中真正的客户端-服务器架构的缺陷?的主要内容,如果未能解决你的问题,请参考以下文章