2013-10-22 4 views
2

서비스 참조를 사용하는 C# 라이브러리를 만들었습니다. 전 도서관 밖에서 전체 서비스에 액세스 할 수 있기를 원하지 않습니다. 그래서 AutoMapper를 사용하여 필자가 필요로했던 서비스 클래스를 내 라이브러리의 비슷한 클래스에 복사했습니다. 두 번째 단계는 서비스 참조를 내부로 만드는 것이 었습니다. 내 주요 문제는 지금 내부 액세스를 지원하는 자동 매핑 라이브러리가없는 것 같습니다. AutoMapper, EmitMapperValueInjecter 라이브러리를 시도했으며 복사 된 모든 객체에 null/기본값이 있습니다. AutoMapper는 내부 지원과 관련하여 github issue을 가지고 있지만 표시 할시기는 없습니다.자동 매핑 내부 서비스 참조

저는 JSON.NET을 사용하여 서비스 클래스를 serialize 한 다음 라이브러리 클래스에 직렬화 해제하려고하는 oddbow를 시도하기로 결정했습니다. 이것은 꽤 잘 작동하지만, 성능면에서 AutoMapper와 같은 라이브러리와 어떻게 비교되는지 궁금합니다. 나는 EmitMapper가 성능면에서 최고라고 알고있다.

내부 용으로 작동하는 자동 매핑 솔루션을 발견 한 사람이 있습니까?

답변

1

나는 각 라이브러리를 테스트하기 위해 console program을 빨리 만들었습니다.

GUID로 설정된 6 개의 문자열 속성이있는 10,000 개의 개체를 만듭니다. 각 테스트는 이러한 객체를 반복하여 다른 유형의 새 객체에 자동 매핑합니다. 각 자동 매핑 라이브러리에 대해 테스트를 10 번 실행하고 각 테스트의 평균 소요 시간을 밀리 초 단위로 계산합니다.

  1. EmitMapper 평균 시간 : 6.96822 밀리 초
  2. ValueInjector 평균 시간 : 71.87465 밀리 초
  3. AutoMapper 평균 시간 : 116.4615 밀리 초
  4. JsonMapper 평균 시간 : 154.02429 밀리 초

이의 주요 목적 JSON.NET을 사용하는 것이 다른 주요 자동 매핑 라이브러리에 대한 현실적인 대안인지 판단하는 것이 었습니다. 앞면은 AutoMapper와 경쟁이 될 것 같아서 제 대답을 가지고 있다고 생각합니다.