与服务器生成的前端应用程序相比,Web应用程序中的客户端/服务器体系结构有哪些优势?


13

在我们公司中,我们需要在嵌入式Linux平台上构建Web界面。我看到2种选择:您使用一种在服务器端生成HTML和JavaScript的技术(认为JSP,Grails,但它是使用C ++并生成HTML / JavaScript的某种东西),或者您创建了HTML5“客户端”与JSON或XML生成后端对话的应用程序。

我觉得Web应用程序当前倾向于与后者配合使用,但是这样做有什么好处(项目的开发人员选择前者,主要是基于他们比C语言和HTML和Java脚本了解得多的事实)


如果开发人员对C ++的了解比对HTML + JS的了解多,为什么他们选择前一种解决方案?后者将给他们带来更少的麻烦,尤其是当他们用诸如C ++桌面应用程序,Java Applet或JNLP部署的桌面应用程序之类的富客户端替换“ HTML 5 Client”时。
Shivan Dragon 2013年

Answers:


4

AJAX

我认为您的问题可以归结为:“我的Web应用程序应该在客户端还是在服务器端生成HTML?” 客户端生成使用AJAX与服务器进行通信,尽管X(XML)通常已被JSON代替,但是大多数人仍将其称为AJAX,因为它听起来更好。服务器端,服务器只是在服务器上制作HTML。

我在XML方面有很多经验,而在JSON方面几乎没有经验。我对XML的了解使我建议您尽可能使用JSON。

AJAX优点:

  • 通过HTTP(S)发送的数据更少,因此它们可以运行得更快。
  • 服务器本质上是一个Web服务,因此其他人(或您)可以编写自己的客户端。在创建网站的移动版本时,这可能会有所帮助。同样,许多发明由于其创造者从未打算的原因而变得流行。服务对于为您的代码找到新用途的人们更友好。
  • 看起来像一个较新的应用程序

AJAX缺点:

  • 调试JavaScript
  • 复杂?
  • 盲人或残障人士通常无法使用JavaScript可以完成的工作。
  • 可能需要更多代码总数(嵌入式设备上更大的整体存储空间)

客户端服务器

所有Web应用程序都使用客户端-服务器体系结构。HTTP协议强制Web应用程序以这种方式运行。AJAX针对该设计限制使用了一种变通方法,但是HTTP的基本基础模型仍然是客户端-服务器。我不会为将MVC应用于Web应用程序的最佳方法而烦恼。如果出于政治原因必须执行MVC,请查看Ruby / Rails是如何做到的。实际上,Rails是一个很好的复制(或使用)架构。

服务与应用

优质的服务几乎总是比应用程序更好。但是提供优质的服务很难!您可能需要制作应用程序,然后才能为服务编写足够好的设计规范。不要使您的工作变得比原来更难。对于版本1,着重于制作出色的应用程序。在您的应用程序相对稳定并确定它满足用户要求之前,拥有服务可能对您没有任何好处。过早设计错误的服务会浪费时间,这会浪费时间,因为您尝试修复服务接口,并处理随之而来的服务器和客户端代码的大量重构。

C /网页

哇。在转到Web开发之前,我在C和Assembly中工作了3年。我想不出用哪种较差的语言来编写Web应用程序,尤其是从安全性的角度来看。输入验证和输出转义是如此关键…… SANS每年都会发布最常见错误的列表。缓冲区溢出,注入,跨站点问题(输出编码不正确)...所有这些错误在C或汇编语言中都非常容易造成。至少像Java这样的语言具有不受溢出影响的String和异常处理机制,该机制通常可以防止一次性错误使恶意代码访问系统内存。更不用说处理国际字符集了(尽可能使用UTF-8)。

如果出于内存或固件原因需要使用C,则必须这样做。请注意!

浏览器支持

制作Web应用程序的第一步是发现您的客户将使用哪些浏览器? W3SchoolsWikipedia都是常规统计的良好来源,但YMMV却是。

我现在工作的地方,目前验证我们的应用程序仅创建有效的XHTML 1.0过渡HTML。我们还使用必要的特定Doctype和格式来避免IE中的Quirks模式,这使得跨浏览器HTML的编写更加容易(请参阅我的博客上的技巧)。我们在最新的IE 3版本,Windows和Linux上的Firefox和Chrome(Safari使用与Chrome相同的渲染引擎)上进行测试。通过验证和测试,我们的应用程序几乎可以在除BlackBerry之外的任何地方(Windows,Mac,Linux,iPhone,Android等)运行。

BlackBerry从来没有真正的JavaScript浏览器,因此我们不支持它。BlackBerry用户习惯于没有真正的Web浏览器,因此他们不会抱怨。也许这正在改变?我会尝试问一些客户他们正在使用什么浏览器,并确保使用这些浏览器进行测试。

摘要

所有网站都基于HTML和HTTP。在编写应用程序时,对这些技术有很好的参考。在制作应用程序的过程中,即使使用工具箱,您也会遇到需要基本了解这些技术才能解决它们的问题。

您可能还需要熟悉CSS和图像压缩,以使外观看起来不错并且响应迅速。JavaScript,Web服务器和浏览器是您最终需要的其他知识领域。

如果您在服务器端构建HTML,则代码库可能会更小,并且可能不需要学习JavaScript。服务器端模型意味着您的程序员将编写(C?)代码,生成可在发送给客户端之前直接查看的HTML。AJAX模型意味着您的程序员将编写生成HTML的JavaScript。我不知道有很多工具可以用来验证甚至查看浏览器中JavaScript生成的HTML代码,这使得正确编程更加困难。

在我现在工作的地方,我们使用一种混合方法,有时会涉及Java代码,而Java代码会生成JavaScript,HTML会生成HTML。如果您是Web开发的新手,那不是开始的地方。我想我不得不说,除非您有令人信服的理由使用AJAX模型,否则我将从较早的服务器端HTML生成模型开始,然后看它能为您带来多大的好处。


“我不知道有很多工具可以用来验证甚至查看浏览器中JavaScript生成的HTML代码。”这就是FireBug的用途(或其他任何Web开发人员浏览器扩展,例如Chrome的Web开发人员工具)。
sleske 2013年

13

后者的优势在于,它使您的“后端”成为通用的“数据服务”(无论在您的上下文中意味着什么)。

这样,您的HTML客户端就是该数据的许多潜在使用者之一。将iOS应用程序,Andriod应用程序,Windows 8应用程序,API等视为其他消费者。


此外,虽然它可能是一把双刃剑(更多的东西取决于API,这使得更新变得更加困难),但它也有助于统一服务器端代码,而不必维护一组“ Web”和“ API”控制器和视图。FTW关注点分离。
Shauna 2013年

6

Web应用程序的一种日益普遍的方式是两者融合,趋向于一面或另一面。

一种方法较为传统,已经存在了很多年,并且有据可查(尽管c ++通常不流行于此)。

第二个选项是更现代,并且是存在于开发博客和论坛今天。原因之一是,越来越需要将相同的应用程序提供给其他接口,移动和服务API。第二种方法趋向于使客户变得更丰富,响应速度更快。

总而言之,这取决于其他约束,例如团队的熟悉程度和业务案例。

可以帮助您评估选择的一些问题:

  1. 团队是否有语言和平台方面的经验?
  2. 团队愿意学习新的方法和技术吗?
  3. 该应用程序是否利用了其他设备(iPhone,Android,Windows 8等)更容易编程的优势?
  4. 与应用程序或数据集成的其他内部或外部应用程序是否可用于该应用程序?

5

对于此类“内部网”应用程序,我将胖客户端(JavaScript / HTML5-app + JSON)方法与ExtJS4结合使用。

对于普通的“互联网”网站,我将使用“更经典”的方法。

客户端无论如何都必须渲染站点,所以为什么不对它们负责整个过程,而只给它们填充数据。它简单地填充了服务器代码以生成响应(只是纯JSON或XML),从而节省了性能。此外,由于总是有比服务器更多的客户端,因此如果有更多的工作由客户端完成,则整个系统的伸缩性会更好。

客户端代码通过HTTP交付,您仍然可以轻松地将新版本发送给用户,而无需任何模糊的更新机制。(只需替换HMTL / JS / CSS)

我更喜欢普通网站采用经典方法的唯一原因是搜索引擎。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.