IT TIP

MVC 모델 개체, 도메인 개체 및 DTO의 차이점은 무엇입니까?

itqueen 2020. 11. 28. 13:21
반응형

MVC 모델 개체, 도메인 개체 및 DTO의 차이점은 무엇입니까?


MVC 모델 개체, 도메인 개체 및 DTO의 차이점은 무엇입니까?

내 이해는 다음과 같습니다.

MVC 모델 개체 :

해당보기에서 표시 할 데이터를 모델링합니다. 도메인 개체에 직접 매핑되지 않을 수 있습니다. 즉, 하나 이상의 도메인 개체의 데이터를 포함 할 수 있습니다.

  1. 고객 입장에서
  2. 비즈니스 로직을 포함 할 수 있습니다. 예 : 유효성 검사, 계산 된 속성 등
  3. 지속성 관련 방법 없음

도메인 개체 :

예약, 고객, 주문 등과 같은 문제 도메인에서 실제 개체를 모델링하는 개체입니다. 데이터를 유지하는 데 사용됩니다.

  1. 서버 측
  2. 비즈니스 로직 없음

DTO (데이터 전송 개체) :

계층이 별도의 프로세스 (예 : DB에서 클라이언트 앱으로)에있을 때 계층간에 데이터를 전송하는 데 사용되는 개체입니다. 여러 도메인 개체에 해당하는 데이터를 가져올 때 여러 호출이 아닌 회선을 통해 단일 트랜잭션을 허용합니다. DTO에는 데이터와 접근 자 메서드 만 포함되며 논리가 없습니다. 데이터는 특정 DB 트랜잭션에 대한 것이므로 하나 이상의 도메인 개체의 데이터를 포함 할 수 있으므로 도메인 개체에 직접 매핑되거나 매핑되지 않을 수 있습니다.

  1. 레이어간에 전달되므로 서버와 클라이언트 모두에서 사용됩니다.
  2. 비즈니스 로직 없음
  3. 지속성 관련 방법 없음

그래서 질문 :

  1. 위의 이해가 맞습니까? 몇 가지 핵심 사항을 놓치고 있습니까?

  2. 모델 개체에 추가 비즈니스 논리가 필요하지 않다고 가정하고 도메인 개체를 MVC 모델로 사용하지 않는 이유가 있습니까?

  3. 모델 개체에 추가 비즈니스 논리가 필요하지 않다고 가정하고 DTO를 MVC 모델로 사용하지 않는 이유가 있습니까?


도메인 및 모델 개체는 기본적으로 동일하며 비즈니스 논리를 포함 할 수 있습니다. 구현에 따라 모델에서 서비스 클래스로 비즈니스 논리를 제거하면 도메인 및 DTO 개체가 동일 할 수 있습니다.

종종 DTO의 주요 변형은 뷰 모델이며, 이는 순수하게 UI 로직이어야하지만 종종 뷰 모델에 로직이 포함될 수 있지만 도메인 모델과 뷰간에 데이터를 전송하는 데만 사용됩니다.


도메인 및 DTO는 "모델"개체가 될 수도 있습니다. "고객"도메인 개체의 세부 정보를 렌더링하는보기를 가질 수 있습니다.

도메인 개체에는 도메인 엔터티의 속성을 적용하는 비즈니스 논리가있을 수 있습니다. 유효성 검사가 그러한 경우 중 하나입니다. 도메인 객체 자체는 지속성 관련 메소드를 포함하지 않지만 지속성을 지원하는 메타 데이터 (예 : 주석)를 가질 수 있습니다.

POJO 프로그래밍 모델을 사용하면 도메인, DTO 및 모델 개체와 동일한 개체를 사용할 수 있습니다. 기본적으로 한 레이어에만 적용되지만 다른 레이어에는 적용되지 않는 외부 인터페이스를 구현하지 않습니다.


A DTO = is an object that carries data between processes.

그러나 가장 흥미로운 부분은 자체 데이터의 저장 및 검색 외에는 동작이 없다는 것입니다 !!!

MVC 방법론 고수 ...

Domain = subject of your entire application.

Model = contains the (programming languages objects : EX: C# objects) to make up the universe of your application.

그들은 분명히 행동과 속성을 가질 수 있습니다 (DTO와의 차이점 참조).

종종 애플리케이션 (가벼운 애플리케이션)은 하나의 모델을 가질 수 있습니다. 모델이 정확히 도메인 인 경우입니다. 또 다른 모델은 완전히 다른 객체 유형일 수 있으며 다른 모델을 처리 할 수 ​​있습니다. 이 경우 둘 다 도메인의 일부이며 "도메인 모델-개체"로 이름이 지정됩니다.

바라건대이 답변이 완전하고 당신에게 모든 것을 명확하게 해주길 바랍니다!


1) 아니오, ViewModel의 정의입니다. MVC 모델 개체와 도메인 개체는 모두 동일합니다.
2) 도메인 모델 (Objects)은 항상 존재하며 비즈니스 로직은 선택 사항입니다.
3) 도메인 객체에 비즈니스 로직이 없으면 자동으로 DTO가됩니다.


대부분의 객체에 대한 정의는 객체 사용 장소에 따라 다양합니다.

Model: 클라이언트 또는 서버 에서 개체 를 사용하기위한 일반적인 정의입니다 .

  1. Model View: 대부분의 시간에 사용 하는 객체client 입니다.
  2. Domain Object: in 및을 사용 하는 객체 입니다.servertransfering data to the database
  3. Data Transfer Object(DTO): 특히 데이터를 가져 오는 데있어 한 객체에서 다른 객체로 데이터전송 하는 객체입니다 API Call(예 : 데이터를 가져 오기위한 api GET 메서드 호출에서 데이터베이스 모델을 클라이언트에 제공해서는 안됩니다 dto.

주의 : the definitions are true most of the time그러나 어떤 상황에서는 실용적이지 않습니다.


나의 이해는 다음과 같다.

(MVC) 모델 객체 :

  • represent some things in a some usage context eg. PersonEditModel, PersonViewModel or just PersonModel
  • has no business logic
  • can be subject of some valdation logic etc.
  • used to provide data from one application layer to another eg. MVC Controller <-> MVC View

Domain object:

  • represents some business object (real world object in the problem domain)
  • has business logic
  • do not allow invalid object state, has methods to properly change object's state
  • used to encapsulate business logic related to it
  • have not to be used to persist data (or even should not)

DTO (Data Transfer Object):

  • similar to Model object but should have flat structure
  • only simple type properties/fields (strings, numbers, datetimes, booleans)
  • used to transfer data cross application boundaries eg. between web server and web browser

참고URL : https://stackoverflow.com/questions/3853749/what-is-the-difference-between-an-mvc-model-object-a-domain-object-and-a-dto

반응형