2009-08-08 5 views
47

최근에 인터뷰에서 질문했습니다 - Java에서는 요청 기반 프레임 워크를 구성 요소 기반 프레임 워크와 어떻게 비교합니까? EJB를 컴포넌트 기반 프레임 워크의 예제와 Struts를 요청 기반 프레임 워크로 설명했지만, 내가이 질문에 정당하게 대처하면 확신하지 못했습니다.Java 구성 요소 기반 요청 기반 프레임 워크

면접관의 의미와 비교해야 할 사항은 무엇입니까 ?? 그들은 대부분 프레임 워크의 예를 찾고 있었다

답변

78

관련, avajurug - 예를 들면은, JSF는 컴포넌트 기반 프레임 워크이며, Struts는 요청 기반의 프레임 워크이다.

요청 기반 프레임 워크는 일반적으로 API를 통해 HTML 요청 구문 분석/HTML 응답 생성과 함께 작업한다는 것을 분명히합니다. 반면 구성 요소 기반 프레임 워크는이를 추상화하여 애플리케이션을 다음과 같은 구성 요소 컬렉션으로 처리합니다. 렌더러 및 작업을 수행합니다.

구성 요소 기반 웹 프레임 워크는 가치가있는 것보다 더 큰 문제입니다. 주로 웹 개발에 익숙하지 않은 개발자가 웹 응용 프로그램을 쉽게 개발할 수있게 해주는 것이 주 목적입니다. 개발. 그러나 실제로 무언가가 잘못되었을 때 사용자 정의 구성 요소를 개발해야하며, "기본 제공"기능이 아닌 프레임 워크를 사용자 정의해야합니다. 기본 "전통적인"웹 개발 구성 요소 기반 프레임 워크가이를 추상화하는 방법 - 숙련 된 웹 개발자이고 "전통적인"웹 개발에서 사용 된 기존 솔루션, 유틸리티, 라이브러리 또는 스 니펫을 사용하는 경우 시간을 낭비하여 구성 요소 기반 프레임 워크 내에서 작업 할 수 있습니다.

+0

감사합니다. 나는 그들이 웹 프레임 워크를 의미했을지도 모른다고 생각한다. JSF에 익숙하지 않아서 설명 할 수 없습니다. 답변 해주셔서 감사합니다. – user150014

+4

+1 좋은 답변입니다. Struts와 JSF를 몇 년 동안 사용해 본 결과 비슷한 결론을 얻었습니다. – javashlook

+0

그런 좋은 대답, 감사합니다! – quento

24

요청 기반 프레임 워크은 사용자의 요청을 받아서 시스템에서 수행해야 할 작업을 결정하고 사용자에게 응답을 되돌려주는 웹 프레임 워크입니다. 따라서 흐름은 거의 선형입니다. 당신은 행동을 생각하고 있습니다 : 사용자가 원하는 것은 무엇입니까 (요청) -> 어떤 사용자가 돌아올 것입니까 (응답). 요청 기반 프레임 워크의 예는 Struts입니다. 현대 Grails은 요청 기반의 프레임 워크이기도합니다.

구성 요소 기반 프레임 워크은 그렇게하지 않습니다. 실제로 앞에서 뒤로 흐름의 명확한 의미가 없습니다. 그것의 예제는 JSF가 아닙니다. 왜냐하면 어떤면에서 JSF는 Struts와 꽤 똑같습니다 (creator of Struts and JSF는 동일하므로). 구성 요소 기반 프레임 워크 TapestryWicket의 좋은 예입니다. 이 두 프레임 워크의 패러다임은 다릅니다. 당신은 행동이나 요청 - 응답이 아니라 구성 요소와 구성 요소를 생각합니다. 응용 프로그램에서 구성 요소를 정의하면 구성 요소가 수행하는 작업을 알 수 있습니다. 그러나 요청 기반 프레임 워크 에서처럼 흐름이 선형 일 필요는 없습니다.

+0

감사합니다 jpartogi ... 그래서 당신은이 프레임 워크의 장단점이라고 생각합니까 ... – user150014

+0

흠, 정말 주관적 일 것입니다. 웹 응용 프로그램을 제작할 때 워크 플로에 따라 다릅니다. 컴포넌트 기반 프레임 워크는 재사용 가능한 컴포넌트를 여러 프로젝트에서 사용하고자 할 때 매우 유용합니다. 액션 기반 프레임 워크는 Http 요청과 http 응답 (Ajax 앱에서 실제로 유용함) 만 보내고 받아야하는 경우 정말 좋습니다. –

+1

JSF는 비 구성 요소 기반 프레임 워크로 분류 할 수 없습니다. JSF 사양을 참조하십시오. JSF2.x Primefaces에는 풍부한 UI 구성 요소가 있습니다. –

5

JSF는 Nate, Struts가 액션 기반 프레임 워크이며 Http 요청이 구문 분석되는 동안 컨트롤의 서블릿이 마지막으로 작업을 처리하는 동안 생성을 담당 할 JSP로 요청을 전달하는 것처럼 컴포넌트 기반 Java API입니다. 응답. 컴포넌트 기반 웹 프레임 워크의 표준이 된 JSF에서는 실제로 JSP 나 XHTML 페이지를 작성하고 페이지에서 사용 된 컴포넌트 또는 렌더링해야하는 값을 바인드하는 것만으로 필요한 요청과 응답을 처리 할 필요가 없다 (FacesServlet (컨트롤러))는 요청 구문 분석 및 faces-config.xml에 지정된 탐색 규칙을 기반으로 응답을 렌더링하는 JSP로 리디렉션하는 모든 작업을 수행합니다.Struts와 JSF는 JSF가 컴포넌트 이벤트 기반 접근 방식을 제공하는 반면 Struts는 고전적인 JSP/Servlet 모델에 더 가깝기 때문에 Struts와 JSF 간에는 큰 차이가 있습니다. jpartogi가 JSF와 스트럿츠의 제작자가 말하는 또 다른 것은 Struts가 아파치 커뮤니티가 소유하고있는 프레임웍이고 JSF는 JSR-127에서 JCP에 의해 버전 1.1과 JSR-252가 지정된 API라고 언급하고 싶다. 버전 1.2와 다른 구현을 가지고있다. (SUN-RI, Apache MyFaces ...)

2

단순히 프레임 워크에 각 웹 요소에 대한 자바 측 객체가 있으므로 속성을 변경하거나 기능을 추가 할 수있다. 컴포넌트 기반 프레임 워크이지만 프레임 워크가 객체를 제공하지 않고 태그 사이에 웹 요소의 응답 값을 넣어야하는 경우 이는 요청 기반 프레임 워크입니다.

+0

이 구성 요소는 무엇입니까? –

관련 문제