디자인 패턴과 아키텍처에 익숙하지 않아서 최신 응용 프로그램이 어떻게 설계되었는지 정확하게 다른 사람들에게 설명하는 데 어려움을 겪고 있습니다. 필자는 프리젠 테이션 레이어에서 순수 n- 티어, 순수 MVC 및 n- 티어를 MVC로 생각했다. 현재 나는 후자가 정확하다고 생각하지만, 경험 많은 개발자들의 생각이 필요합니다.MVC로 n- 티어 애플리케이션을 올바르게 구현 했습니까?
은 어떻게 작동 :
- 브라우저 톰캣에 HTTP 요청을 보냅니다. web.xml을 통해 요청을 컨트롤러 (컨트롤러라고 부름)에 매핑합니다.
- 컨트롤러는 하나 이상의 비즈니스 객체를 인스턴스화하고 이것들에 대한 메소드를 호출합니다 (다시 말하면
customerBO.getById(12)
). 하나 이상의 DAO 메소드를 호출하기 전에 비즈니스 로직/유효성 검사를 다시 수행합니다. 즉customerDAO.getById(12)
입니다. BO가 컨트롤러에 CustomerVO 목록을 반환합니다. - 컨트롤러는 뷰 (JSP) (
request.setAttribute("customers", customers);
)에 대한 특성을 준비하고 사용할 .jsp 파일을 선택하여 목록을 반복하고 XHTML을 다시 브라우저로 렌더링합니다.
구조 (내 제안/이해)
프리젠 테이션 계층 : 서블릿 (컨트롤러), JSP (뷰)와 OO XHTML 내 자신의 구현 : 현재 제가 생각하는 것은 MVC 웹-구현 사용 양식 (즉, CustomerForm)이 여기에 있습니다. 이 프리젠 테이션 레이어를 전환하고 아래 레이어에서 아무 것도 변경할 필요없이 Swing/JavaFX/Flex GUI를 사용할 수 있어야합니다.
로직 계층 : 비즈니스 계층 (BO)을 맨 위에 두 계층으로 나누었습니다. 비즈니스 로직에 대한 책임은 있지만 애플리케이션이 대부분 간단한 CRUD 액션으로 구성되어 있기 때문에 입력 확인 외에도 많은 것을 발견하지 못했다. 많은 경우에 메소드는 DAO 레이어에서 같은 이름의 메소드를 호출한다.
아래의 데이터 계층에 다시 연결되는 CRUD 메소드가있는 DAO 클래스. 또한 데이터베이스와 ORM (값 목록)에 대해 ORM을 수행하는 convertToVO (ResultSet res) 메소드가 있습니다. 모든 메소드는 값 오브젝트를 입력 (예 : customerDAO-> save (voter))하여 성공하면 업데이트 된 유권자를, 실패하면 null을 반환합니다.
데이터 계층 : 하단 데이터는 데이터베이스 또는 XML 파일로 저장됩니다. 일부 MySQL 저장 프로 시저 및 트리거를 제외하고 여기서 "코딩"하지 않았습니다.
- MVC에서 M :
질문 (제목에 하나 외에). 모델이 목록 일 때이 n 계층 MVC를 호출 할 수 있는지 확신 할 수 없습니다/논리 계층의 비즈니스 개체에서 반환 된 VO? 컨트롤러/뷰가있을 때 모델이 프레젠테이션 레이어 내에 있어야합니까? 그리고 프리젠 테이션 레이어의 양식 템플릿을 모델이라고 부를 수 있습니까? 그렇다면; BO의 형식과 목록이 모두 MVC의 M으로 간주됩니까?
- MVC에서 뷰는 모델을 관찰하고 변경 사항을 업데이트하기로되어 있지만보기가 렌더링 된 XHTML 페이지 인 웹 응용 프로그램에서는 불가능합니다. 이것은 결국 MVC가 웹 애플리케이션과 일반 데스크탑 애플리케이션에 대해 다르게 구현 되는가라는 질문으로 이어집니다.
- 모든 HTTP 요청이 web.xml에 명시 적으로 매핑 된 경우 프런트 컨트롤러 패턴을 사용하지 않습니까?프론트 컨트롤러를 사용하려면 모든 요청을 표준 서블릿/컨트롤러에 전달해야합니다. 그러면 요청을 평가하고 다른 컨트롤러를 호출합니다.
- 비즈니스 계층에서 내 응용 프로그램에 약간 "쓸데없는"느낌이 들었습니다. 이 레이어/오브젝트에 보통 무엇을 넣을까요? 항상 비즈니스 계층이 있어야합니까? 나는 그것이 "비즈니스 논리"를 포함해야한다는 것을 알고 있지만, 정확히 무엇입니까? 그냥 입력 유효성 검사를 수행하고 하나 이상의 DAO를 인스턴스화하고 해당 메서드를 호출합니다.
Struts for Java와 같은 MVC 프레임 워크가 있지만이 첫 번째 Java 웹 응용 프로그램 어떻게 작동하는지 더 깊이 이해할 수 있습니다. 되돌아보고 나는 당신이 내가 우연히 만난 몇 가지 질문에 대답 할 수 있기를 희망한다. 모델이 목록을 때 나는이 n 계층 MVC를 호출 할 경우
가능한 중복을 볼 ... 사람들이 원래의 MVC 패턴에서 차별화하는 웹 응용 프로그램 아치 MVC 2 (모델 2 등)라는 것을로 사용 : HTTP : //stackoverflow.com/questions/1135056/mvc-application-how-does-mult-tier-architecture-fit-in? rq = 1, http://stackoverflow.com/questions/2843311/what-is-difference mvc-and-3-tier-or-n-tier-architect-r-f-development-rq = 1, http://stackoverflow.com/questions/14451444/mvc-multi-tier-mobile -신청 –