1

위의 작업을 수행하는 간단한 패턴이 필요합니다. 몇 가지 참고 사항 :데이터 액세스, 비즈니스 로직 및 프리젠 테이션을 구분하는 단순한 우아한 패턴

1) I가 내가 그 실제 데이터를 검색하고 반환하지 않습니다 사용하는 것이 의무입니다 클래스 DataTable을

2) 모든 가능한을 지원하는 일반적인 인터페이스에 관심을 아니에요 우리는 하나의 데이터베이스 유형을 고수하고 있습니다.

3) 오류를 우아하게 트래핑하고 오류가 발생했음을 사용자에게 알리는 방법.

4) MVC를 배우지 않겠습니까? 지금은 옵션이 아닙니다.

실제 패턴 디자인에 관심이 있습니다.

+2

"MVC가 필요하지만 MVC 패턴을 사용한다고 말하지 마십시오!" – Wedge

+0

Wedge, 제 의견에 대한 답변을 읽어주십시오. – sarsnake

답변

1

당신은 프리젠 테이션 (필자는 ASP.NET MVC Framework에 대해 이야기하지임을주의) 및 데이터 액세스로부터 비즈니스 로직을 분리하는 DAO 패턴에서 별도의 비즈니스 로직에 MVC 패턴을 사용하고 싶습니다.

DataTable을 반환하는 클래스는 모델의 일부가됩니다. DataTable을 가져 와서 다양한 도메인 개체로 변환하는 계층 (각 도메인 개체에 대한 DAO)을 작성합니다. UI에는 출력을 사용자에게 표시하는 것 이상을 수행하는 논리가 있으면 안됩니다. 모델에서 데이터를 검색하기위한 실제 논리 인 모든 것이 컨트롤러 계층에서 처리되며 사용자가 모델에서 요청하는 데이터를 가져 와서 해당 뷰로 보내 사용자에게 표시합니다.

예외는 레이어 경계에서 처리해야합니다. 캐치하고 그것에 대해 뭔가를 할 수 있습니다 (그냥 그것을 기록하고 오류 페이지로 사용자를 보낼 수 있습니다), 또는 적절한 높은 수준의 예외로 포장.

+0

MVC에 익숙합니다. 그러나 현재 사이트 디자인으로 인해 레이어를 분리하고 전체 MVC 모드로 들어 가지 않습니다. – sarsnake

+0

내가 무슨 뜻인지 잘 모르겠다. MVC 아키텍처의 일종을 만들지 않고 비즈니스 로직을 프리젠 테이션과 어떻게 분리 할 수 ​​있을지 모르겠습니다. –

+0

내가 찾고있는 것은 느슨하게 결합 된 접근 방식입니다 (예 : 계층화 된 접근 방식). – sarsnake

-1

MVC를 배우지 않겠습니다. 지금은 옵션이 아닙니다.

ASP MVC 프레임 워크를 사용하지 않고 간단한 MVC 또는 MVP 패턴을 수행 할 수 있습니다. 소개하는 것은 꽤 간단합니다. 여기에 아주 간단한 예가 있습니다. MVP Example

0

설명하는 패턴에는 여러 가지 패턴이 있습니다. Martin Fowler의 우수한 책을 얻으실 것을 권 해드립니다. 엔터 프라이즈 아키텍처의 패턴 특히 14 장. 웹 프리젠 테이션 패턴. 프레젠테이션, 도메인 (비즈니스 논리) 및 데이터 원본을 분리하려는 시도가 있으면 동일한 테마의 여러 ​​변형 중 하나로 이동하게됩니다.

MVC, MVP, 시각적 프록시 등은 모두 세 가지 레이어로 나뉘며 각 레이어의 책임과 레이어가 서로 통신하는 방식이 다릅니다.

예를 들어, 수동보기 패턴은 기본적으로 프리젠 테이션과 직접 관련이없는 모든 것을 UI 레이어에서 제거합니다. 전형적 예는 특정 조건이 참일 때 강조 표시하려는 필드입니다. 패시브보기 양식에는 필드 강조 표시 여부를 결정하는 논리 만 포함됩니다. 이 상태를 트리거하는 비즈니스 규칙은 실제보기에 직접 종속되지 않는 표현 자/컨트롤러 계층에 있습니다.

데이터 소스 계층에서 모자를 쓰면 데이터베이스를 전환 할 수없는 것이 가장 큰 이점입니다. 주요 이점은 데이터베이스 스키마 변경이 데이터 소스 계층에만 영향을 미치고 나머지 응용 프로그램으로 확장되지 않는다는 것입니다. 데이터 세트에 붙어 있다면 좋은 접근 방식은 테이블 데이터 게이트웨이 패턴입니다.

관련 문제