복제본 세트 및 트랜잭션이 활성화된 MongoDB 데이터베이스가 포함된 샘플 .NET Core 프로젝트입니다.
이 프로젝트의 목표는 아래 주제에 대한 솔루션을 제공하는 것입니다(취업 면접에 사용됨).
Please create a sample .net/C# project that includes the following elements:
- Basic CRUD functionality for a data structure of your choice.
- RESTful APIs to expose that functionality with your framework of choice (ASP.NET Web APIs, ASP.NET Core, ServiceStack (preferred), …etc).
- Uses MongoDB using C# driver.
- Please demonstrate your usage of one of MongoDB advanced features (aggregation, transactions, indexes, …etc) using C# driver.
- Please push your code to a Git repository that you can share with us.
이것은 n 계층 아키텍처를 갖춘 ASP 코어 3.1 웹 API 프로젝트입니다.
각 계층에는 종속성을 피하기 위해 자체 추상화 계층이 있습니다. 나는 주식 .net 코어 IOC 및 DI 엔진을 사용하고 있습니다.
비즈니스 로직이 없기 때문에 단위 테스트를 만들지 않았습니다. 그러나 Microsoft WebHost 라이브러리를 사용하여 통합 테스트 샘플을 만들었습니다. Visual Studio 또는 명령줄을 통해 통합 테스트를 실행할 수 있지만 docker-compose를 먼저 실행하는 것을 잊지 마세요. 그렇지 않으면 요청할 데이터베이스가 없습니다.
DAL 구현에는 MongoDB C# 드라이버가 사용됩니다. 솔루션에 연결된 docker-compose를 실행하면 (트랜잭션을 지원하기 위해) 복제본 세트가 활성화된 Mongo 서버 인스턴스를 얻게 됩니다.
MongoDB 고급 기능 중 하나의 사용법을 보여주기 위해 트랜잭션을 선택했습니다. 따라서 IClientSessionHandle 은 모든 저장소에 주입됩니다. 또한 전체 HTTP 요청에 대한 트랜잭션을 생성하는 TransactionFilter 라는 미들웨어를 만들었습니다. 이렇게 하면 다중 문서 트랜잭션을 수동으로 처리하지 않고도 문제가 발생하면 롤백할 수 있는 여러 저장소에서 다중 문서 작업을 수행할 수 있습니다.
예 :
그대로 작동하지만 추가 로드 테스트가 더 필요합니다. 아직 생산 준비가 되지 않았을 수 있습니다.
명령줄에서 docker-compose up을 사용하는 것은 현재 API에서 작동하지 않는 것 같습니다. 시간이 별로 없어서 계속 VS를 이용해서 작곡을 했어요.