2

디자인 패턴과 아키텍처에 익숙하지 않아서 최신 응용 프로그램이 어떻게 설계되었는지 정확하게 다른 사람들에게 설명하는 데 어려움을 겪고 있습니다. 필자는 프리젠 테이션 레이어에서 순수 n- 티어, 순수 MVC 및 n- 티어를 MVC로 생각했다. 현재 나는 후자가 정확하다고 생각하지만, 경험 많은 개발자들의 생각이 필요합니다.MVC로 n- 티어 애플리케이션을 올바르게 구현 했습니까?

은 어떻게 작동 :

  1. 브라우저 톰캣에 HTTP 요청을 보냅니다. web.xml을 통해 요청을 컨트롤러 (컨트롤러라고 부름)에 매핑합니다.
  2. 컨트롤러는 하나 이상의 비즈니스 객체를 인스턴스화하고 이것들에 대한 메소드를 호출합니다 (다시 말하면 customerBO.getById(12)). 하나 이상의 DAO 메소드를 호출하기 전에 비즈니스 로직/유효성 검사를 다시 수행합니다. 즉 customerDAO.getById(12)입니다. BO가 컨트롤러에 CustomerVO 목록을 반환합니다.
  3. 컨트롤러는 뷰 (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 저장 프로 시저 및 트리거를 제외하고 여기서 "코딩"하지 않았습니다.

  1. MVC에서 M :

    질문 (제목에 하나 외에). 모델이 목록 일 때이 n 계층 MVC를 호출 할 수 있는지 확신 할 수 없습니다/논리 계층의 비즈니스 개체에서 반환 된 VO? 컨트롤러/뷰가있을 때 모델이 프레젠테이션 레이어 내에 있어야합니까? 그리고 프리젠 테이션 레이어의 양식 템플릿을 모델이라고 부를 수 있습니까? 그렇다면; BO의 형식과 목록이 모두 MVC의 M으로 간주됩니까?

  2. MVC에서 뷰는 모델을 관찰하고 변경 사항을 업데이트하기로되어 있지만보기가 렌더링 된 XHTML 페이지 인 웹 응용 프로그램에서는 불가능합니다. 이것은 결국 MVC가 웹 애플리케이션과 일반 데스크탑 애플리케이션에 대해 다르게 구현 되는가라는 질문으로 이어집니다.
  3. 모든 HTTP 요청이 web.xml에 명시 적으로 매핑 된 경우 프런트 컨트롤러 패턴을 사용하지 않습니까?프론트 컨트롤러를 사용하려면 모든 요청을 표준 서블릿/컨트롤러에 전달해야합니다. 그러면 요청을 평가하고 다른 컨트롤러를 호출합니다.
  4. 비즈니스 계층에서 내 응용 프로그램에 약간 "쓸데없는"느낌이 들었습니다. 이 레이어/오브젝트에 보통 무엇을 넣을까요? 항상 비즈니스 계층이 있어야합니까? 나는 그것이 "비즈니스 논리"를 포함해야한다는 것을 알고 있지만, 정확히 무엇입니까? 그냥 입력 유효성 검사를 수행하고 하나 이상의 DAO를 인스턴스화하고 해당 메서드를 호출합니다.

Struts for Java와 같은 MVC 프레임 워크가 있지만이 첫 번째 Java 웹 응용 프로그램 어떻게 작동하는지 더 깊이 이해할 수 있습니다. 되돌아보고 나는 당신이 내가 우연히 만난 몇 가지 질문에 대답 할 수 있기를 희망한다. 모델이 목록을 때 나는이 n 계층 MVC를 호출 할 경우

+0

가능한 중복을 볼 ... 사람들이 원래의 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 -신청 –

답변

1

는 잘 모르겠어요/VO의 논리 계층

사람들이 완벽하게 좋은 모델입니다 비즈니스 오브젝트에서 돌아왔다. 또한 Struts의 ActionForm을 모델로 생각합니다. ActionForm은 Struts가 HTML 양식을 표현/모델링하는 데 사용하는 것입니다.

은 MVC의 뷰는 변화에 대한 모델 및 업데이트를 관찰하도록되어 있지만, 이것은 웹 응용 프로그램

네 가능하지 않고, 그 여부에 관한 논쟁의 문제이다 당신은 웹 응용 프로그램과 함께 진정한 MVC를 가질 수 있습니다.

항상 비즈니스 계층이 있어야합니까?

응용 유형에 따라 다릅니다. 일부 응용 프로그램은 데이터베이스 기반이며 본질적으로 데이터베이스의 UI입니다. 이 경우에는 비즈니스 로직이 거의 필요하지 않습니다.

데이터 계층 :

저장 프로 정말 데이터 계층 코드의 일부가 아닙니다. 비즈니스 객체에 의해 호출되는 데이터 액세스 객체 (DAO)를 작성해야합니다. DAO는 저장 프로 시저를 호출합니다. 또한 DAO 인터페이스는 데이터베이스 나 파일 시스템 또는 일부 웹 서비스에서 데이터가 저장되는 위치에 대한 비즈니스 개체에 대한 힌트를 제공하지 않아야합니다.

0

나는 당신이 용어에 매달렸다 고 생각합니다. MVC 패턴 (나는 믿는다)은 당신이 묘사하는 고전적인 웹 앱 아치를 선행한다. 그것은

이 링크> http://www.javaranch.com/drive/servlet/#mvc2

HTH

관련 문제