基于Java组件的和基于请求的框架

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

最近我在一次采访中被问到 - 在java中,你如何比较基于组件的框架和基于请求的框架?我将EJB解释为基于组件的框架和Struts作为基于请求的框架的一个例子,但我不相信我是否公正地回答了这个问题。

关于面试官的意思和应该比较什么的任何想法?

提问于
用户回答回答于

基于请求的框架是一个Web框架,它可以获取用户的请求,然后确定系统应该做什么,并将响应回送给用户。所以流量几乎是线性的。你正在考虑行动:用户想要什么(请求) - >什么用户会回来(回应)。基于请求的框架的一个例子是Struts。现代的Grails基本上也是一个基于请求的框架。

基于组件的框架不是那样的。实际上没有从前到后流动的清晰感觉。它的一个例子不是JSF,因为在某些方面,JSF与Struts非常相似(因为Struts和JSF的创建者是相同的)。基于组件的框架Tapestry和Wicket的一个很好的例子。这两个框架的范例是不同的。您不会在行动或请求响应中考虑,而是在考虑组件和组件。您可以在应用程序中定义一个组件,并告诉组件的功能。但是流程并不像在基于请求的框架中那样是线性的。

用户回答回答于

他们很可能在寻找Web框架的例子 - 例如,JSF是一个基于组件的框架,而Struts是一个基于请求的框架。

基于请求的框架通常通过它们的API清楚地表明它们正在解析HTML请求/生成HTML响应,而基于组件的框架试图将其抽象化并将该应用程序视为具有渲染器和操作的组件集合做事。

在我看来,基于组件的web框架比他们的价值更麻烦 - 他们的主要目的通常是让不熟悉web开发的开发人员更容易开发Web应用程序,并且更接近于传统的桌面开发。但是,在实践中,当出现问题时,您需要开发自定义组件,您需要自定义框架以寻找不是“开箱即用”的功能等。您需要了解底层的“传统”web开发以及基于组件的框架如何将其抽象化 - 如果您是一位经验丰富的Web开发人员,并且拥有在“传统”Web开发中工作的现有解决方案,实用程序,库或片段,

扫码关注云+社区