1.4 KiB
1.4 KiB
제품 아키텍처
확정된 기술 경계
제품은 C#·.NET 8을 사용한다. 실제 업무 프로젝트, entry point, 런타임 데이터 흐름과 배포 구조는 아직 미정이다. 특정 UI 프레임워크, 계층, DI나 async 구조를 강제하지 않는다.
다음은 제품 생성 시의 권장 배치이며 현재 구현된 제품 구조를 뜻하지 않는다.
src/<ProjectName>/ 제품 C# 코드와 SDK 스타일 .csproj
tests/<ProjectName>.Tests/ 제품 테스트와 테스트 .csproj
- 공개 API의 접근성, 타입과 nullability 계약을 유지한다.
- 프로젝트 참조는 제품에서 정한 방향을 따른다. 테스트가 제품을 참조하며 제품은 테스트 프로젝트를 참조하지 않는다.
- 별도 Contracts 프로젝트나 추가 계층은 실제 필요가 확인될 때만 도입한다.
- 신규 프로젝트는
TargetFramework=net8.0,Nullable=enable,ImplicitUsings=enable을 기본으로 한다. C# 언어 버전은 SDK 기본값을 따른다. - 루트
global.json은 빌드에 사용할 SDK 선택을 제어하며 제품 TFM을 대신하지 않는다.
실제 제품과 metadata가 추가되면 확인된 구조와 참조 방향만 이 문서에 기록한다.
tests/fixtures/dotnet/Smoke/는 개발 도구 검증용이며 제품이 아니다. Harness의 Python
모듈 구조와 phase 운영 절차는 Harness 문서에 둔다.