2012-07-16 3 views
0

저희 회사에서 AutoMapper를 사용하고 싶습니다. 내 팀원들이 그로 인한 이점을 보지 못하는 문제. 동일한 주장을하는 우리 자체 확장 메서드를 작성할 때 왜 추가 추상화가 필요한지를 주로 주장합니다.AutoMapper를 사용하는 이유

그래서 내가 올릴 수있는 이유는 무엇입니까?

+0

에 좋은 곳입니다? – podiluska

+0

코드를 알고 있습니다. 내 충고는 왜 이후에 만들어지는 지에 대한 장단점이 있습니다. 그러나 해결하려는 문제는 무엇입니까? Ninject 또는 Structure Map과 같은 Dependency Injector와 함께 사용할 것입니까? 타사 제품에 의존하는 오버 헤드로 인해 더 많은 오버 헤드가 발생합니까? – anAgent

+0

AutoMapper는 이미 작성 중이거나 작성할 계획 인 코드를 없애기로되어 있습니다. 문제는 좀 더 광범위합니다. 다른 개체에 매핑해야 할 필요가 있습니까? –

답변

6

내 가장 큰 두 개의 인수 :

  1. 당신이 당신을 위해 할 수있는 잘 테스트, 규칙 기반 라이브러리에 의존 할 수있을 때 왜 뭔가 정의를 쓰기?

예, 속성간에 데이터를 이동하는 확장 메서드를 작성할 수 있습니다. 하지만 데이터 유형을 가로 질러 데이터를 전송하기 위해 무수히 많은 매핑 라인을 씁니다.

Property1 = original.Property1; Property2 = original.Property2;

특히이 같은 일을하는 경우 :

Property1 = (MyEnum)Enum.Parse(typeof(MyEnum), original.Property1);

그것은 시간이 많이 소요 작성하는 것입니다 지저분한 배관 코드, 그리고 당신이 할 더 좋은 일이 유용한 기능을 만드는 것처럼 시간을 많이 보내고 에 이런 일을 맡기십시오. AutoMapper는 첫 번째 사례를 무료로 처리하는 데 필요한 규칙을 모두 제공하며 모양을 변경하거나 유형을 변경하는보다 복잡한 시나리오를 관리하기위한 간단한 패턴 을 제공합니다. (가) 자신을 매핑

  1. 쉽게 테스트 할 수 있습니다.

다시 말해서 독자적인 방법을 쓸 수 있습니다. 그러나 일을 올바르게 수행하는 경우 방금 작성한 사용자 정의 코드에 내재 된 모든 사례 ( )를 다루기위한 해당 테스트가 있습니다. 또는 일 경우 지도가로드되고 매핑 구성이 인 경우 AutoMapper에 문의하십시오. Automapper에 대한

내주의 인수 :

  • 당신이 꽤 많이 구성에 의존 중지지도에 충분한 예외를 작성하지 시작하면, 그것은 가능성이 새는 추상화되고있다. (실제로 문제는 아마도 도메인의 디자인에 있으며 AutoMapper는 업스트림 문제를 신호하는 첫 번째 제약 일뿐입니다).

나는 그것을 매핑 코드에 대한 만병 통치약 (그것의 단점이있다)의 말하고 있지 않다 그러나 시간은 당신의 솔루션은 투자 가치가 맞는 있는지 그것으로 급상승 소비.

5

AutoMapper는 한 유형을 다른 유형으로 매핑하는 코드가 많은 경우에 유용합니다.

직접 물어보십시오. 개발 및 유지 보수에 드는 시간은 얼마입니까? 하드 코딩 된 매핑 또는 AutoMapper와 같은 프레임 워크 설정?

다음 주제는 자동 매핑 프레임 워크 시나리오에 유용 여부를 결정하는 데 도움이 될 수 있습니다 :

  • 대량합니다. 몇 줄의 코드가 매핑 전용으로 사용됩니까? 몇 개의 엔티티를 매핑해야합니까? 10? 100? 1000? 코드 라인이 많을수록이 프레임 워크에서 더 많은 것을 얻을 수 있습니다.
  • 복잡도. 매핑이 얼마나 복잡할까요? 모든 기본적인 일대일 매핑입니까? 객체를 확장하거나 평평하게해야합니까? 복잡한 시나리오의 경우 자동 매핑 프레임 워크에 의해 제한 될 가능성이 큽니다.
  • 비 매핑. 현재 매핑 코드가 실제로 매핑 개체 전용 100 %입니까? 데이터를 구문 분석하거나 비즈니스 규칙을 확인하는 것과 같은 작업을 수행합니까? 매핑 코드의 책임이 커질수록 자동 매핑 프레임 워크는 유용하지 않게됩니다. Automapper에 대한
0

트랜잭션 응용 프로그램 (3NF 데이터베이스에 대한 많은 CrUD 작업)의 공통적 인 문제는 3NF 데이터베이스를 개체 모델 (예 : 비즈니스 개체/클래스)에 매핑 한 다음 다시 프레젠테이션 계층 . 데이터베이스는 튜플 (행 & 열)으로 데이터를 저장하고, 데이터는 종종 튜플 (그리드)으로 응용 프로그램에 표시되지만 객체 모델은 그래프입니다. 2 차원 (db)에서 3 로직)을 2로 다시 설정합니다 (그리드로 표시). ORM 매퍼는 3NF를 오브젝트로 변환하는 데 도움이되지만, 사용자 화면에서 표현하기 위해 오브젝트를 병합하면 프리젠 테이션 관련 클래스를 작성해야합니다. 당신이 그것을 사용하려는 경우

Automapper은 확실히 당신은 정당성을 가지고,이 같은 시나리오에서 다른 (데이터 전송 객체) 하나 개의 유형 (비즈니스 오브젝트)에서 매핑뿐만 아니라 많은 다른

관련 문제