Stop Mapping in .NET Use Facets Instead
- Facet은 .NET에서 객체 매핑을 위한 새로운 라이브러리이며, AutoMapper의 대안으로 제시됨. 💡
- Facet은 단순 매핑을 넘어 다양한 형태의 변환(faceting)을 지원하며, EF Core와도 통합되어 데이터베이스 프로젝션에도 활용 가능함. 🧰
- Facet을 사용하면 DTO에 Facet 어트리뷰트를 추가하여 매핑을 정의하고, 속성 제외도 간단하게 설정할 수 있음. ⚙️
- Custom Map Config를 통해 매핑 로직을 커스터마이징할 수 있으며, 소스 객체와 대상 객체 간의 복잡한 변환을 정의할 수 있음. ✒️
- EF Core와 함께 사용할 때, Facet은 projection을 통해 데이터베이스 쿼리 결과를 DTO로 쉽게 매핑할 수 있도록 지원함. 📦
- Facet의 성능은 Mapster에 비해 다소 떨어지지만, 기능성과 사용 편의성을 고려할 때 충분히 경쟁력 있으며, 최적화 가능성도 존재함. ⏱️
- Facet 라이브러리는 잘 설계되었고 다양한 기능을 제공하지만, 소스 객체를 명시적으로 지정해야 하는 점은 개선될 여지가 있음. 🤔
- Facet은 오픈 소스 프로젝트이므로, 관심 있는 개발자는 GitHub에서 Star를 누르거나 코드 개선에 기여할 수 있음. ⭐
- 닉은 Facet 라이브러리가 제공하는 기능과 유연성에 만족하며, 성능상의 단점에도 불구하고 AutoMapper보다 선호한다고 밝힘. 👍