실제 소프트웨어 개발 프로젝트에서는 "비즈니스 로직"으로 인해 동일한 데이터에 대해 다양한 변환을 수행해야 하는 경우가 많습니다. 예를 들어 웹 애플리케이션은 프런트 엔드를 통해 사용자 입력을 Dto로 수집한 다음 Dto를 도메인 모델로 변환하고 이를 데이터베이스에 유지합니다. 반면, 사용자가 데이터를 요청할 때는 반대의 작업을 수행해야 합니다. 즉, 데이터베이스에서 쿼리한 도메인 모델을 반대 방식으로 Dto로 변환한 다음 사용자에게 제시하는 것입니다. 때로는 데이터를 사용하는 여러 클라이언트와 같이 더 많은 데이터 사용 요구 사항에 직면할 수도 있습니다. 각 클라이언트에는 데이터 구조에 대한 서로 다른 요구 사항이 있으므로 더 많은 데이터 변환을 수행해야 합니다.
잦은 데이터 변환은 사소하고 지저분할 때가 많습니다.
(1) 두 유형은 이름만 다를 뿐 구조는 비슷하지만 수동으로만 구현할 수 있고 속성별로만 구현할 수 있습니다. 유형 간 데이터 "전달".
(2) 새로운 데이터 변환 시나리오가 발생할 때마다 일련의 변환 로직이 수동으로 구현되어 애플리케이션 구석구석에 분산되는 반복적인 데이터 변환 작업이 발생합니다.
"오렌지"를 우리가 원하는 "사과"로 바꿀 수 있는 "Transformers" 도구가 있다면 변환 규칙을 정의하기만 하면 됩니다. 즉, 실제 비즈니스 로직을 수행하거나 간단한 시나리오에서도 규칙을 정의할 필요가 없습니다(Convention Over Configuration). 이는 매우 아름다운 일입니다. 실제로 강력한 개체-개체 매핑 도구인 AutoMapper가 있기 때문에 .NET에서 바퀴를 다시 만들 필요가 없습니다.
그렇습니다. 사실 제가 진행하고 있는 프로젝트는 위의 "혼란"을 경험하고 있으며 AutoMapper는 정말 밝은 느낌을 줍니다. 그래서 저는 AutoMapper를 시험해 보기 위해 잠시 주말을 보냈습니다. 소규모 애플리케이션 시나리오를 통해 Dto와 도메인 모델의 매핑을 깨달았고, 그 "강력한 아우라"를 정말 느꼈습니다. 혼란스러워하는 여러분에게 도움이 되길 바라면서 제 경험을 기사에서 공유하겠습니다. 나중에 전체 프로젝트 코드를 내 git 저장소에 공개할 예정입니다. 누구나 자유롭게 참조할 수 있습니다.
【1】응용 시나리오 설명
먼저 "가상" 도메인 모델을 살펴보겠습니다. 이번에는 서점(BookStore)을 정의했습니다.
C# 코드
public class BookStore
{
public string Name { get; ; }
공개 목록
도서 { get; >서점에는 자체 주소(주소)가 있습니다.C# 코드
public class Address
{
public string Country { get; set; }
공개 문자열 도시 { get; set; >
}동시에 서점에는 n권의 책(책)이 있습니다.
C# 코드 공개 수업 도서 { 공개 문자열 제목 { get; set }
공개 문자열 설명 { get; set; ; }
공개 저자 목록 { get; }
public 출판사 출판사 { get; set }
public int? set }
} 각 책; 게시됨 비즈니스 정보(게시자):
C# 코드 공개 클래스 게시자 { 공개 문자열 이름 { get; }각 책은 최대 2명의 저자 정보(저자)를 가질 수 있습니다:
C# 코드
공개 클래스 저자
공개 문자열 설명 { get; set; }
public ContactInfo ContactInfo { get; set; 연락처 정보(ContactInfo):
C# 코드
public class ContactInfo
공개 문자열 블로그 { get; set; 계층적 구조를 가지고 있습니다.
Dto 구조를 다시 살펴보겠습니다.Dto에는 BookStore에 해당하는 BookStoreDto가 있습니다.
C# 코드 public class BookStoreDto { public string Name { get ; set; }
public List
public AddressDto }
:
C# 코드 public class AddressDto { public string Country { get; set; } 공개 문자열 도시 { get; set; >}
및 Book에 해당하는 BookDto:
C# 코드
public class BookDto
{
공개 문자열 제목 { get; set; 가격 { get; 세트; }
공개 날짜 시간 { get; ; 세트; }
공개 문자열 FirstAuthorName { get; set; 🎜>
공개 문자열 FirstAuthorBlog { get; set; 공개 문자열 SecondAuthorDescription { get; set; ; set; } }BookDto는 전체 Book 계층 구조를 "평평화"합니다. BookDto는 Book과 모든 저자, 출판사 및 기타 데이터 모드를 전달합니다.
Dto에서 Model까지의 매핑 규칙을 살펴보는 시간입니다.
(1)BookStoreDto -> BookStore
(2) AddressDto -> 주소
AddressDto의 필드 국가 국가 도시 도시 거리 거리우편번호
(3) BookDto ->
BookDto의 일부 기본 필드는 Book의 필드에 직접 대응할 수 있습니다.
Book의 필드Dto Book의 필드
제목 제목
설명 설명
언어 언어
가격 쌀 가격
PublishDate PublishDate
Paperback Paperback
각 책에는 최대 2명의 저자가 있습니다. BookDto에서는 "First"와 "Second"라는 접두사가 붙은 필드가 각각 사용됩니다. 따라서 모든 FirstXXX 필드는 Book Authors의 첫 번째 Author 개체에 매핑되고 모든 SecondXXX 필드는 Authors의 두 번째 Author 개체에 매핑됩니다.
BookDto의 필드 Authors in Book
FirstAuthorName 이름
FirstAuthorDescription 설명
FirstAuthorEmail ContactInfo.Email
FirstAuthorBlog ContactInfo.Blog
FirstAuthorTwitter ContactInfo.Twitter
위 표의 ContactInfo.Email은 Author 개체 Field의 ContactInfo에 해당하는 Email을 나타내고, 곧. 마찬가지로 다음과 같습니다.
BookDto의 필드 Authors in Book
SecondAuthorName Name
SecondAuthorDescription Description
SecondAuthorEmail ContactInfo에 있는 두 번째 Author 개체의 필드 .Email
SecondAuthorBlog ContactInfo.Blog
SecondAuthorTwitter ContactInfo.Twitter
마지막으로 독립 게시자 개체에 해당하는 Pub lisher 필드가 있습니다.
BookDto 필드 출판사
출판사 이름
즉, 다른 대규모 모델 간의 대규모 Dto Data 변환을 실현하는 것이 필요합니다.

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

C# 수석 개발자와의 인터뷰에는 비동기 프로그래밍, LINQ 및 .NET 프레임 워크의 내부 작업 원리와 같은 핵심 지식을 마스터하는 것이 필요합니다. 1. 비동기 프로그래밍은 비동기를 통해 작업을 단순화하고 응용 프로그램 응답 성을 향상시키기 위해 기다리고 있습니다. 2.linq는 SQL 스타일로 데이터를 운영하고 성능에주의를 기울입니다. 3. Net Framework의 CLR은 메모리를 관리하며 가비지 컬렉션은주의해서 사용해야합니다.

C#.NET 인터뷰 질문 및 답변에는 기본 지식, 핵심 개념 및 고급 사용이 포함됩니다. 1) 기본 지식 : C#은 Microsoft가 개발 한 객체 지향 언어이며 주로 .NET 프레임 워크에 사용됩니다. 2) 핵심 개념 : 위임 및 이벤트는 동적 바인딩 방법을 허용하고 LINQ는 강력한 쿼리 기능을 제공합니다. 3) 고급 사용 : 비동기 프로그래밍은 응답 성을 향상시키고 표현 트리는 동적 코드 구성에 사용됩니다.

C#.net은 강력한 생태계와 풍부한 지원으로 인해 마이크로 서비스를 구축하는 데 인기있는 선택입니다. 1) ASP.NETCORE를 사용하여 RESTFULAPI를 작성하여 주문 생성 및 쿼리를 처리하십시오. 2) GRPC를 사용하여 마이크로 서비스 간의 효율적인 통신을 달성하고 주문 서비스를 정의하고 구현하십시오. 3) Docker Containerized 마이크로 서비스를 통해 배포 및 관리를 단순화합니다.

C# 및 .NET의 보안 모범 사례에는 입력 확인, 출력 인코딩, 예외 처리, 인증 및 인증이 포함됩니다. 1) 일반 표현식 또는 내장 방법을 사용하여 악성 데이터가 시스템에 들어가는 것을 방지하기 위해 입력을 확인하십시오. 2) XSS 공격을 방지하기 위해 출력 인코딩 httputility.htmlencode 메서드를 사용하십시오. 3) 예외 처리는 정보 유출을 피하고 오류를 기록하지만 자세한 정보를 사용자에게 반환하지는 않습니다. 4) ASP.NETIDENITY 및 CAMPLES 기반 승인을 사용하여 신청서를 무단 액세스로부터 보호합니다.

C 언어의 결장의 의미 ( ':') : 조건부 명세서 : 조건부 표현 및 명령문 분리 블록 루프 문 : 초기화, 조건부 및 증분 표현식 매크로 정의 분리 : 매크로 이름 및 매크로 값 단일 라인 주석 설명 : 콜론에서 라인으로의 내용을 주석 차원으로 표현


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

WebStorm Mac 버전
유용한 JavaScript 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
