在我们公司中,我们需要在嵌入式Linux平台上构建Web界面。我看到2种选择:您使用一种在服务器端生成HTML和JavaScript的技术(认为JSP,Grails,但它是使用C ++并生成HTML / JavaScript的某种东西),或者您创建了HTML5“客户端”与JSON或XML生成后端对话的应用程序。
我觉得Web应用程序当前倾向于与后者配合使用,但是这样做有什么好处(项目的开发人员选择前者,主要是基于他们比C语言和HTML和Java脚本了解得多的事实)
在我们公司中,我们需要在嵌入式Linux平台上构建Web界面。我看到2种选择:您使用一种在服务器端生成HTML和JavaScript的技术(认为JSP,Grails,但它是使用C ++并生成HTML / JavaScript的某种东西),或者您创建了HTML5“客户端”与JSON或XML生成后端对话的应用程序。
我觉得Web应用程序当前倾向于与后者配合使用,但是这样做有什么好处(项目的开发人员选择前者,主要是基于他们比C语言和HTML和Java脚本了解得多的事实)
Answers:
我认为您的问题可以归结为:“我的Web应用程序应该在客户端还是在服务器端生成HTML?” 客户端生成使用AJAX与服务器进行通信,尽管X(XML)通常已被JSON代替,但是大多数人仍将其称为AJAX,因为它听起来更好。服务器端,服务器只是在服务器上制作HTML。
我在XML方面有很多经验,而在JSON方面几乎没有经验。我对XML的了解使我建议您尽可能使用JSON。
AJAX优点:
AJAX缺点:
所有Web应用程序都使用客户端-服务器体系结构。HTTP协议强制Web应用程序以这种方式运行。AJAX针对该设计限制使用了一种变通方法,但是HTTP的基本基础模型仍然是客户端-服务器。我不会为将MVC应用于Web应用程序的最佳方法而烦恼。如果出于政治原因必须执行MVC,请查看Ruby / Rails是如何做到的。实际上,Rails是一个很好的复制(或使用)架构。
优质的服务几乎总是比应用程序更好。但是提供优质的服务很难!您可能需要制作应用程序,然后才能为服务编写足够好的设计规范。不要使您的工作变得比原来更难。对于版本1,着重于制作出色的应用程序。在您的应用程序相对稳定并确定它满足用户要求之前,拥有服务可能对您没有任何好处。过早设计错误的服务会浪费时间,这会浪费时间,因为您尝试修复服务接口,并处理随之而来的服务器和客户端代码的大量重构。
哇。在转到Web开发之前,我在C和Assembly中工作了3年。我想不出用哪种较差的语言来编写Web应用程序,尤其是从安全性的角度来看。输入验证和输出转义是如此关键…… SANS每年都会发布最常见错误的列表。缓冲区溢出,注入,跨站点问题(输出编码不正确)...所有这些错误在C或汇编语言中都非常容易造成。至少像Java这样的语言具有不受溢出影响的String和异常处理机制,该机制通常可以防止一次性错误使恶意代码访问系统内存。更不用说处理国际字符集了(尽可能使用UTF-8)。
如果出于内存或固件原因需要使用C,则必须这样做。请注意!
制作Web应用程序的第一步是发现您的客户将使用哪些浏览器? W3Schools和Wikipedia都是常规统计的良好来源,但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生成模型开始,然后看它能为您带来多大的好处。
后者的优势在于,它使您的“后端”成为通用的“数据服务”(无论在您的上下文中意味着什么)。
这样,您的HTML客户端就是该数据的许多潜在使用者之一。将iOS应用程序,Andriod应用程序,Windows 8应用程序,API等视为其他消费者。
Web应用程序的一种日益普遍的方式是两者融合,趋向于一面或另一面。
第一种方法较为传统,已经存在了很多年,并且有据可查(尽管c ++通常不流行于此)。
在第二个选项是更现代,并且是存在于开发博客和论坛今天。原因之一是,越来越需要将相同的应用程序提供给其他接口,移动和服务API。第二种方法趋向于使客户变得更丰富,响应速度更快。
总而言之,这取决于其他约束,例如团队的熟悉程度和业务案例。
可以帮助您评估选择的一些问题:
对于此类“内部网”应用程序,我将胖客户端(JavaScript / HTML5-app + JSON)方法与ExtJS4结合使用。
对于普通的“互联网”网站,我将使用“更经典”的方法。
客户端无论如何都必须渲染站点,所以为什么不对它们负责整个过程,而只给它们填充数据。它简单地填充了服务器代码以生成响应(只是纯JSON或XML),从而节省了性能。此外,由于总是有比服务器更多的客户端,因此如果有更多的工作由客户端完成,则整个系统的伸缩性会更好。
客户端代码通过HTTP交付,您仍然可以轻松地将新版本发送给用户,而无需任何模糊的更新机制。(只需替换HMTL / JS / CSS)
我更喜欢普通网站采用经典方法的唯一原因是搜索引擎。