2010-11-18 2 views
3

인터뷰에서 CTO (최고 기술 책임자)가 5 년 넘게 실행 한 시스템이 있고 여전히 사용하지 않기를 바란다고 말했습니다. 순전히 성능에 MVC. 대부분의 MVC는 메서드를 호출하기 위해 리플렉션을 사용한다는 것을 알고 있습니다 (본질적으로 느립니다).하지만 많은 MVC (Struts는 코드를 읽습니다.)가 호출하는 메서드를 캐시하므로 메서드를 "찾을"필요가 없습니다. 항상 호출합니다.성능에 관한 JSP Scriptlet 대 MVC의 비교

지금은 스크립틀릿을 고수하고 JSP 태그는 사용하지 않습니다. MVC보다 순전히 큰 성능이 나오는지 궁금합니다. 세션 이동, 세션 추적 등을 피하기 위해 스테이트리스 세션과 세션 스테이트 세션을 선호합니다.

CTO가 말하는 것이 사실이라면 MVC가 여전히 선호되는 이유는 무엇입니까 (MVC가 존재하는지는 성능과 관련이 있습니다).

+3

내가 일하고 싶은 회사처럼 들리지는 않습니다. 상업용 Java 웹 앱을 * 사용하지 않고 MVC 기반 프레임 워크를 작성하는 것은 어리 석다. 또한 스크립틀릿은 XSS를 초대하므로 권장되지 않으며 금지되어야합니다. – Qwerky

+0

패스! 나는 인터뷰를 일찍 끝냈을지도 모른다. –

답변

3

콘트라 인수 :

  • 반사 년의 좋은 부부 때문에 더 이상 늦출없습니다.
  • 지난 2 년 동안 하드웨어 성능이 크게 향상되었습니다.
  • MVC는 결국 더 빠른 개발로 이어진다. 덜 낭비되는 시간 = 더 많은 $$$ 절약.

나는 일을 지었다.

+0

나는 똑같은 생각을 가지고 있었다 .... :) 그리고 나는 직업을 통과하는 것을 고려하고있다. –

1

이것은 CTO의 다소 이상한 논리입니다. 나는 그가 자신이 말하는 것을 알고 있다고 생각하지 않는다. (힌트 : 일을 통과하라!) 그가 효율성에 대해 너무 걱정한다면, 전체 웹 애플리케이션을 어셈블리 언어로 재 작성하지 않을까? 그들이 악명 높게 유지하기 어렵 기 때문에 내가 스크립틀릿을 좋아하지 않아

  • 스크립에 대한

    인수. 그들은 또한 학대하는 경향이 있습니다. 가장 큰 문제는 뷰 로직을 비즈니스 로직과 혼합하거나 적어도 그렇게하는 것이 매우 쉽고 유혹적인 것입니다.

  • 은 신중하게 문제를 분리하고 데이터를 가져 와서 재사용을 촉진하는 서비스를 사용할 수 있습니다. 그러나 종종 개발자가 PHP 코드 (예 : 마크 업과 코드가 섞인 JSP)를 작성하는 것을 보았습니다.

난 당신이 이 JSP를 좋은 코드를 작성하지 수 없다는 있지 않다. 그것은 더 어렵다는 것입니다 (MVC가 더 많은 안전 장치를 가지고 있다고 느낍니다) 또한 JSP가 남용되기 쉽습니다.

  • MCV에 대한

    인수가 두 번째 질문에 대답하기 위해, MVC 때문에 자연 바람직하고, 그것의 분리를 촉진하고, 별도의 영역에서 논리가 다른 영역으로 출혈하는 것을 허용하지 않습니다 .

  • 보기 레이어는보기 렌더링과 관련이 있습니다. 컨트롤러에서 메타 데이터를 가져 와서 뷰를 사용하여 데이터를 표시합니다. 당신은 비즈니스 로직에 대해 걱정하지 않습니다.

  • 컨트롤러는 교통 경찰과 같은 역할을하여 요청을 적절한 목적지로 리디렉션합니다. 컨트롤러는 일반적으로 모든 비즈니스 로직을 수행하는 호출 서비스로 끝납니다.

  • 이 모델은 응용 프로그램 도메인의 데이터 및 동작을 담당합니다. 모델은 상태에 대한 요청에 응답 할 것이므로 (보기에 보내는 메타 데이터이므로) 컨트롤러에서 상태를 변경하도록 지시하는 지침에도 응답합니다.

  • 반사가 실제로 그렇게 느리지는 않습니다. 또한 컴퓨터는 요즘 꽤 빠르며 많은 기억을 가지고 있습니다. 성과는 그다지 관심사가 아닙니다.

  • MVC 패턴은 개발자가 깨끗하고 견고하며 유지 보수가 쉬운 코드를 쉽게 작성할 수있게 해주는 서로 다른 관심사 간의 명확한 분리를 촉진합니다.

+0

'MVC가 왜 존재하는지 알았습니다.'라고 생각 했으므로, 실제로 그렇게하려고했습니다 ... 그럼에도 불구하고 지식을 공유하는 것이 좋습니다 ... –

+0

@ Elite Gentleman oops, 죄송합니다. MVC가 스크립틀릿보다 나은 이유를 설명하려고했습니다. 나는 그것이 당신이 원하는 것이라고 생각했다. –

+0

나는 성능 비교만을 원했다. 나는 강력하게 MVC에 간다. 내 질문 제목을 모두 분명하게하기 위해 다시 읽었습니다. 대답을 편집하지 마십시오, 옆집 사람을 도울 것입니다;) –

0

MVC를 이용한 스크립틀릿의 장점은 다른 답변에도 완벽하게 설명되어 있지만 한 점을 놓친 것입니다.

반사는 직접적인 메서드 호출과 비교할 때 약간의 오버 헤드를 발생시킵니다. 리플렉션을 사용하여 간단한 메소드를 자주 호출 할 때 중요합니다. 그러나 일반적인 웹 응용 프로그램의 전체 요청 처리 시간과 비교하여 단일 반사 호출로 인해 발생하는 오버 헤드는 중요하지 않습니다. 따라서이 특별한 경우 성능상의 이유로 반사를 사용하지 않기로 한 결정은 이상하게 들립니다.

관련 문제