참고 자료
공식 문서
섹션 제목: “공식 문서”LanguageExt
섹션 제목: “LanguageExt”- GitHub: https://github.com/louthy/language-ext
- 문서: https://languageext.readthedocs.io/
- NuGet: https://www.nuget.org/packages/LanguageExt.Core
Ardalis.SmartEnum
섹션 제목: “Ardalis.SmartEnum”- GitHub: https://github.com/ardalis/SmartEnum
- NuGet: https://www.nuget.org/packages/Ardalis.SmartEnum
ArchUnitNET
섹션 제목: “ArchUnitNET”- GitHub: https://github.com/TNG/ArchUnitNET
- NuGet: https://www.nuget.org/packages/TngTech.ArchUnitNET.xUnit
참고 자료
섹션 제목: “참고 자료”Domain-Driven Design
섹션 제목: “Domain-Driven Design”- 제목: Domain-Driven Design: Tackling Complexity in the Heart of Software
- 저자: Eric Evans
- 출판: Addison-Wesley, 2003
- 핵심 내용: 값 객체, 엔티티, 애그리게이트의 원론적 정의
Implementing Domain-Driven Design
섹션 제목: “Implementing Domain-Driven Design”- 제목: Implementing Domain-Driven Design
- 저자: Vaughn Vernon
- 출판: Addison-Wesley, 2013
- 핵심 내용: DDD 실전 구현 패턴, 값 객체 심화
Functional Programming in C#
섹션 제목: “Functional Programming in C#”- 제목: Functional Programming in C#: How to write better C# code
- 저자: Enrico Buonanno
- 출판: Manning, 2022 (2nd Edition)
- 핵심 내용:
Option,Either, Railway Oriented Programming
Domain Modeling Made Functional
섹션 제목: “Domain Modeling Made Functional”- 제목: Domain Modeling Made Functional
- 저자: Scott Wlaschin
- 출판: Pragmatic Bookshelf, 2018
- 핵심 내용: 함수형 DDD, 타입 주도 설계
온라인 리소스
섹션 제목: “온라인 리소스”블로그 & 아티클
섹션 제목: “블로그 & 아티클”Railway Oriented Programming
- https://fsharpforfunandprofit.com/rop/
- Scott Wlaschin의 오류 처리 패턴 시리즈
값 객체 패턴
- https://enterprisecraftsmanship.com/posts/value-objects-explained/
- Vladimir Khorikov의 값 객체 심층 분석
Always Valid Domain Model
- https://enterprisecraftsmanship.com/posts/always-valid-domain-model/
- 항상 유효한 도메인 모델 설계
비디오
섹션 제목: “비디오”NDC Conferences
- “Functional Programming in C#” - Enrico Buonanno
- “Domain Modeling Made Functional” - Scott Wlaschin
Pluralsight
- “Domain-Driven Design Fundamentals”
- “Applying Functional Principles in C#“
관련 라이브러리
섹션 제목: “관련 라이브러리”함수형 프로그래밍
섹션 제목: “함수형 프로그래밍”C#에서 함수형 패턴을 지원하는 라이브러리입니다.
| 라이브러리 | 설명 | NuGet |
|---|---|---|
| LanguageExt.Core | 핵심 함수형 타입 | ✅ |
| LanguageExt.Sys | 부수 효과 관리 | ✅ |
| CSharpFunctionalExtensions | 경량 Result 타입 | ✅ |
| Optional | 간단한 Option 구현 | ✅ |
DDD & Clean Architecture
섹션 제목: “DDD & Clean Architecture”도메인 주도 설계와 클린 아키텍처 구현에 활용되는 라이브러리입니다.
| 라이브러리 | 설명 | NuGet |
|---|---|---|
| MediatR | CQRS/Mediator 패턴 | ✅ |
| Ardalis.Specification | Repository 패턴 | ✅ |
| FluentValidation | 검증 라이브러리 | ✅ |
| ErrorOr | 오류/결과 타입 | ✅ |
테스트
섹션 제목: “테스트”테스트 작성과 아키텍처 검증에 사용되는 라이브러리입니다.
| 라이브러리 | 설명 | NuGet |
|---|---|---|
| ArchUnitNET | 아키텍처 테스트 | ✅ |
| Shouldly | 단언문 라이브러리 | ✅ |
| xUnit | 테스트 프레임워크 | ✅ |
| NSubstitute | 목 라이브러리 | ✅ |
Functorium 프로젝트 참조
섹션 제목: “Functorium 프로젝트 참조”소스 코드 위치
섹션 제목: “소스 코드 위치”Src/Functorium/Domains/ValueObjects/├── IValueObject.cs # 마커 인터페이스├── AbstractValueObject.cs # 기본 추상 클래스├── ValueObject.cs # 복합 값 객체├── SimpleValueObject.cs # 단일 값 래퍼├── ComparableValueObject.cs # 비교 가능 복합├── ComparableSimpleValueObject.cs # 비교 가능 단일└── Validations/ ├── ValidationApplyExtensions.cs # 튜플 Apply (.As() 내부 처리) └── Typed/ ├── ValidationRules.cs # 타입 안전 검증 시작점 ├── TypedValidation.cs # 타입 정보 전달 래퍼 └── TypedValidationExtensions.*.cs # Then 체이닝 메서드
Src/Functorium/Domains/Errors/├── DomainError.cs # DomainError.For<T>() 헬퍼└── DomainErrorType.cs # 에러 타입 sealed record 계층CQRS 통합
섹션 제목: “CQRS 통합”Src/Functorium/Applications/Cqrs/├── FinExtensions.cs # Fin<T> → Response 변환└── ValidationExtensions.cs # Validation → Response 변환튜토리얼 프로젝트
섹션 제목: “튜토리얼 프로젝트”Docs.Site/src/content/docs/tutorials/functional-valueobject/├── Part1-ValueObject-Concepts/ # Part 1: 개념 이해 (16개)├── Part2-Validation-Patterns/ # Part 2: 검증 패턴 (6개)├── Part3-ValueObject-Patterns/ # Part 3: 값 객체 패턴 (9개)├── Part4-Practical-Guide/ # Part 4: 실전 가이드 (4개)└── Part5-Domain-Examples/ # Part 5: 도메인 예제 (4개)추가 학습 권장 순서
섹션 제목: “추가 학습 권장 순서”초급자 (함수형 입문)
섹션 제목: “초급자 (함수형 입문)”- LanguageExt 공식 문서의 Quick Start
- “Functional Programming in C#” 책 1-5장
- 본 튜토리얼 Part 1 (1-6장)
중급자 (실전 적용)
섹션 제목: “중급자 (실전 적용)”- “Domain Modeling Made Functional” 책
- 본 튜토리얼 Part 2-3
- Railway Oriented Programming 블로그
고급자 (아키텍처 설계)
섹션 제목: “고급자 (아키텍처 설계)”- “Implementing Domain-Driven Design” 책
- 본 튜토리얼 Part 4-5
- ArchUnitNET으로 아키텍처 테스트 작성
커뮤니티
섹션 제목: “커뮤니티”GitHub Discussions
섹션 제목: “GitHub Discussions”- LanguageExt: https://github.com/louthy/language-ext/discussions
- Functorium: https://github.com/hhko/Functorium/discussions
Stack Overflow 태그
섹션 제목: “Stack Overflow 태그”languageextdomain-driven-designvalue-objectsfunctional-programming
다음 단계
섹션 제목: “다음 단계”FAQ를 확인합니다.
→ E. FAQ