본문으로 건너뛰기

참고 자료


  • 제목: Domain-Driven Design: Tackling Complexity in the Heart of Software
  • 저자: Eric Evans
  • 출판: Addison-Wesley, 2003
  • 핵심 내용: 값 객체, 엔티티, 애그리게이트의 원론적 정의
  • 제목: Implementing Domain-Driven Design
  • 저자: Vaughn Vernon
  • 출판: Addison-Wesley, 2013
  • 핵심 내용: DDD 실전 구현 패턴, 값 객체 심화
  • 제목: 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
  • 저자: Scott Wlaschin
  • 출판: Pragmatic Bookshelf, 2018
  • 핵심 내용: 함수형 DDD, 타입 주도 설계

Railway Oriented Programming

값 객체 패턴

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 구현

도메인 주도 설계와 클린 아키텍처 구현에 활용되는 라이브러리입니다.

라이브러리설명NuGet
MediatRCQRS/Mediator 패턴
Ardalis.SpecificationRepository 패턴
FluentValidation검증 라이브러리
ErrorOr오류/결과 타입

테스트 작성과 아키텍처 검증에 사용되는 라이브러리입니다.

라이브러리설명NuGet
ArchUnitNET아키텍처 테스트
Shouldly단언문 라이브러리
xUnit테스트 프레임워크
NSubstitute목 라이브러리

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 계층
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개)

  1. LanguageExt 공식 문서의 Quick Start
  2. “Functional Programming in C#” 책 1-5장
  3. 본 튜토리얼 Part 1 (1-6장)
  1. “Domain Modeling Made Functional” 책
  2. 본 튜토리얼 Part 2-3
  3. Railway Oriented Programming 블로그
  1. “Implementing Domain-Driven Design” 책
  2. 본 튜토리얼 Part 4-5
  3. ArchUnitNET으로 아키텍처 테스트 작성

  • languageext
  • domain-driven-design
  • value-objects
  • functional-programming

FAQ를 확인합니다.

E. FAQ