it-swarm.cn

“分离”Web应用程序的优点/缺点

我正在设计一个(即将成为)相当大的PHP/MySQL Web应用程序。就内部建筑而言,我来到了一个岔路口;我可以将网站构建为“传统”的Web应用程序,当您发出请求时,服务器会为您构建一个HTML页面,向您发送整个页面,然后浏览器呈现它,或者,我可以将其构建为“分离” “Web应用程序,其中在初始加载时向浏览器提供整个HTML结构和应用程序代码,并且应用程序使用JavaScript回调来获取特定数据或通过统一API发出命令。此外,我打算有多个版本的网站(桌面,移动,iPhone/Android移动,搜索引擎友好等),在某些时候,甚至可能是独立的移动或桌面应用程序。

作为Web开发人员,您遇到的每个架构都有哪些优点/缺点?有一个明确的理由说明我应该选择其中一个吗?它更像是开发者喜欢的东西吗?

3
Adam Maras

首先,无论您是否使用异步重型网站,都不会对您构建iPhone /移动和桌面应用程序的能力产生太大影响,因为它与它们无关。无论哪种方式,您都无法重用您的代码。

此外,异步站点可能与普通站点一样慢或慢。通常,出于某种原因添加了这种功能,特别是为了丰富用户体验。使用JavaScript往往会对SEO造成伤害,因为webcrawler无法完全理解JavaScript的意图,因此主要忽略它。

我认为你所寻找的是一种通过只编写一次功能(中间)层并为所有应用程序使用相同的层来减少开发开销的方法。在这种情况下,我认为有价值,但坦率地说,这些架构更难以设置并花费大量时间。我认为你应该尽可能地开发你的网站,并保持你的中间层代码尽可能强大。这样,当需要添加iPhone应用程序或其他任何内容时,您可以更轻松地移动到具有共同中间级别的模型

我在这里真正提倡的是采取婴儿步骤。现在不要尝试编写代码来处理你还不知道的事情。只需编写您需要的代码,并使其尽可能灵活。

4
Ben Hoffman

我认为“严重依赖JavaScript/AJAX”的“分离”应用程序的想法会给你带来很多麻烦。我头脑中的一些事情:

  1. 这对搜索引擎优化来说是不利的,因为谷歌将难以索引任何东西。
  2. 将它“加入书签”很难
  3. 你将很难使用移动设备,因为他们中的许多人都有非常有限(或破坏)的javascript支持。
5
Eric Petroelje

首先,如果这个答案太明显或基本没有冒犯。您使用“分离”而不是像Ajax或jQuery这样的术语会让我对这个主题缺乏经验。当然我可能会误解这个问题,所以如果是这样的话我会道歉。

同时使用两者,但要明智

根据最有效地完成任务的位置和方式,考虑您选择的服务器端或客户端任务。这将帮助您快速(在服务器上)呈现页面,但将工作卸载到浏览器,这样做是有意义的。并且,将有灰色区域,你只需要做出判断。 你的工作是找到一个明智的分工。

什么属于服务器端?

(这是一个极端的例子来说明这一点。)假设您正在编写一个执行某种搜索的Web应用程序。您不编写浏览器端Javascript来调用服务器端PHP Web服务来检索整个2GB数据库以“释放您的服务器”并将搜索卸载到用户的计算机上。您所做的是从用户处获取搜索条件,使用表单POST它返回服务器直接查询数据库,然后将结果从服务器发送回浏览器。

这里的逻辑是DB本身知道如何最好地进行查询,服务器更接近源数据,并且必须在组件之间移动更少的数据。浏览器只需要显示的内容,因此不要将其全部发送到浏览器。 (更不用说相对语言表现了。)

什么属于浏览器?

浏览器端代码是您的“分离”场景(如果我理解正确的话)。但是对于浏览器来说,大多数事情都是智能的,它必须与服务器合作。

好的,你的搜索应用程序正在运行,但你想用一些华丽的裤子Ajax来修饰它。写一个PHP web服务来取几个字母并返回匹配的搜索词,a laBing的“搜索建议”功能将Google浏览器代码编写为仅在用户输入三个或四个字母后建议用语,因此您的建议列表很小。回到服务器,在该字段上索引数据库,以便快速快速地进行搜索。

这里的想法是“搜索建议”是一种功能,必须在服务器和客户端之间进行分割。浏览器可以快速处理有针对性的小型数据。服务器可以获取那些有针对性的小数据并将其提供给客户端。一个糟糕的划分是服务器将可能的字段值的怪物列表(例如,500,000个项目)呈现为嵌入在HTML页面中的XML岛,然后具有用户键入的浏览器搜索。 (a)将所有数据发送到浏览器的速度很慢,(b)在Javascript中搜索never与让DB搜索它一样快, (c)您可能通过将所有数据塞入浏览器应用程序空间来炸毁用户的计算机。另一方面,您需要使确定Ajax调用服务器,后续查询和返回超快。周围没有稀释。

灰色区域在哪里?

这又是一次判决。上面,我谈到了服务器进行搜索,然后将结果发送到浏览器。但是,问题出现了,您是让浏览器使用表单提交搜索条件并让服务器呈现结果页面,还是使用客户端Ajax/Javascript发送搜索条件并检索结果,然后呈现它在DIV中避免页面刷新?两者都有效。资源方面,无论如何都没有真正的好处。 Ajax方式可以提供更好的用户体验,但是,根据您的应用和环境,可能会出现一些其他挑战(例如安全性)。

底线

适当使用两者。不要吝啬思考和学习建筑性能和效率。移动更少的数据,更少的时间。您将减轻服务器,数据库和用户浏览器的负担。

2
b w

为了能够重用代码,您可以始终查看XSLT以生成登录页面,然后使用AJAX的XML/JSON接口(利用XSLT登录页面的XML接口)。

您通常会允许内容和交互在RESTful接口上使用/ json/...和/ xml/...前缀并托管您的主要内容,通过XSLT转换为标记/ ...

通过这种方式,人们可以登陆任何页面并突然完全爆炸AJAX网站。蜘蛛可以爬行你的网站,你首先集中在内容/接口上 - 似乎是一场双赢。

移动网站有时需要不同的布局(定制iPhone只有网站的任何人?)在这里或那里为不同的用户客户端进行简单的XSLT转换可以重复使用到目前为止所做的一切。

记得设计简单的HTML输出和导航,AJAX简化可以遵循。

PS - 做XSLT转换服务器端

1
Metalshark