Java jspscriptlet与MVC在性能方面的比较

Java jspscriptlet与MVC在性能方面的比较,java,model-view-controller,jsp,scriptlet,Java,Model View Controller,Jsp,Scriptlet,我参加了一次采访,首席技术官(CTO)告诉我有一个系统(已经运行了5年多),他们仍然不愿意纯粹为了性能而使用MVC。我知道大多数MVC使用反射来调用方法(本质上很慢),但许多MVC(我知道Struts会这样做,我读了代码)缓存它调用的方法,所以我不必一直“找到”要调用的方法 目前,他们坚持使用scriptlet(并且不使用jsptag)。我想知道,是否有一个巨大的性能比MVC更纯粹的涂鸦?他们更喜欢无状态会话与有状态会话,以避免会话迁移、会话跟踪等 如果CTO说的是真的,为什么MVC仍然是首选(

我参加了一次采访,首席技术官(CTO)告诉我有一个系统(已经运行了5年多),他们仍然不愿意纯粹为了性能而使用MVC。我知道大多数MVC使用反射来调用方法(本质上很慢),但许多MVC(我知道Struts会这样做,我读了代码)缓存它调用的方法,所以我不必一直“找到”要调用的方法

目前,他们坚持使用scriptlet(并且不使用jsptag)。我想知道,是否有一个巨大的性能比MVC更纯粹的涂鸦?他们更喜欢无状态会话与有状态会话,以避免会话迁移、会话跟踪等

如果CTO说的是真的,为什么MVC仍然是首选(我知道为什么MVC存在,但与性能有关)。

相反的论点:

  • 好几年以来,反思不再那么慢了
  • 在过去几年中,硬件性能得到了疯狂的提高
  • MVC最终导致更快的开发。减少浪费时间=节省更多$$$

我会通过这项工作。

从首席技术官的角度看,这是一个相当奇怪的逻辑;我认为他不知道自己在说什么(提示:通过工作!)如果他如此担心效率,为什么不用汇编语言重写整个webapp呢

反对Scriptlet的论点

  • 我不喜欢Scriptlet,因为众所周知,它们很难维护。他们也容易受到虐待。最重要的一点是,它们将视图逻辑与业务逻辑混为一谈,或者至少使其变得非常容易和诱人

  • 您可以明智地将您的关注点分离出来,并使用能够拉入数据(从而促进重用)的服务。但我经常看到开发人员编写类似PHP代码的JSP(即与标记混合的代码)

我并不是说你不能用JSP编写好的代码。只是它更难(我觉得MVC有更多的保护措施),而且(我觉得)JSP更容易被滥用

MCV的参数

  • 为了回答您的第二个问题,MVC是首选的,因为本质上,它促进了关注点的分离,并且不允许来自不同区域的逻辑渗透到其他区域

  • 视图层仅与渲染视图有关。从控制器获取元数据,并使用视图显示数据。您不关心这里的业务逻辑(也不应该如此)

  • 控制器就像一名交通警察,将您的请求重定向到正确的目的地。控制器通常最终调用执行所有业务逻辑的服务

  • 模型负责应用程序域的数据和行为。该模型将响应有关其状态的请求(因此这是您发送到视图的元数据),并且还将响应指示其更改状态的指令(来自控制器)

  • 反射真的没有那么慢。而且,现在计算机速度很快,内存也很多。性能没有那么重要

  • MVC模式促进了不同关注点之间的清晰分离,使开发人员能够轻松地编写干净、健壮和可维护的代码


MVC相对于Scriptlet的优势在其他答案中得到了完美的描述,但忽略了一点


与直接方法调用相比,反射引入了一些开销。当您经常使用反射调用简单方法时,这很重要。但是,与典型web应用程序中的总请求处理时间相比,单个反射调用带来的开销并不重要。因此,在这种特殊情况下,出于性能原因而不使用反射的决定听起来很奇怪。

考虑到我已经说过
我知道为什么会有MVC
,您实际上确实做到了这一点……但是分享知识还是很好的……@Elite Gentle oops,对不起,我被冲昏头脑了:)我试图说明为什么MVC比Scriptlet更好。我想这就是你想要的:)我想要的只是性能比较。我强烈支持MVC。我重新措辞了我的问题标题,把它说清楚了。不要编辑你的答案,它会帮助隔壁的人;)@精英绅士明白了。我在辩论中确实提到了这一点。但我认为,作为一个整体,解释什么是MVC也有助于加强性能论证(它指出了使用Scriptlet的缺点)。听起来不像是我想为之工作的公司。编写一个商业Java web应用程序而不使用某种形式的基于MVC的框架是愚蠢的。另外,Scriptlet邀请XS,应该被禁止,而不是鼓励。通过!我可能提前离开了面试。