### **VContainer + MessagePipe** - **MessagePipe란?** - DI(Dependency Injection)를 위해 설계된 메시징 라이브러리입니다. - Unity와 .NET Core를 모두 지원합니다. (하지만 VContainer는 현재 Unity만 지원한다고 명시되어 있습니다.) - 주로 이벤트, 명령 또는 데이터 변경 사항을 게시(publish)하고 구독(subscribe)하는 데 사용되는 발행-구독(Publish-Subscribe) 패턴을 구현합니다. - **VContainer와의 통합:** - MessagePipe는 VContainer와의 **선택적 통합(optional VContainer integration)** 기능을 포함하고 있습니다. 이는 MessagePipe 라이브러리 자체에 VContainer를 쉽게 사용할 수 있도록 돕는 확장 또는 유틸리티가 내장되어 있음을 의미합니다. - 문서에서는 "For more information about using them together, see here."라고 언급하며, 더 자세한 내용은 MessagePipe 라이브러리의 문서를 참조하도록 안내합니다. **일반적인 통합 시나리오 (문서에 명시되진 않았지만 예상되는 사용법):** MessagePipe와 VContainer를 함께 사용할 때의 일반적인 패턴은 다음과 같습니다. 1. **MessagePipe 서비스 등록:** `LifetimeScope`의 `Configure` 메서드에서 `IMessagePublisher<T>` 및 `IMessageSubscriber<T>`와 같은 MessagePipe의 핵심 서비스들을 VContainer에 등록합니다. MessagePipe는 자체적으로 DI 친화적인 API를 제공하므로, 대부분의 경우 `builder.Register<IMessagePublisher<T>, MessagePublisher<T>>(Lifetime.Singleton)`와 같이 등록될 수 있습니다. 2. **Publisher/Subscriber 주입:** VContainer를 통해 MessagePipe의 `IMessagePublisher<T>`나 `IMessageSubscriber<T>`를 필요로 하는 클래스에 주입합니다. - **Publisher:** 특정 이벤트를 발생시키는(게시하는) 역할을 하는 클래스는 `IMessagePublisher<YourEventType>`를 주입받아 사용합니다. - **Subscriber:** 특정 이벤트를 수신하는(구독하는) 역할을 하는 클래스는 `IMessageSubscriber<YourEventType>`를 주입받아 해당 이벤트가 발생했을 때 로직을 실행합니다. 이 경우, `UniRx`와 마찬가지로 `IDisposable`을 함께 사용하여 구독 해제를 관리하는 것이 일반적입니다. 3. **코드 분리:** 이를 통해 애플리케이션의 각 부분이 직접적으로 서로를 참조하지 않고, 메시지 버스를 통해 느슨하게 결합될 수 있습니다. 이는 코드의 유지보수성, 테스트 용이성, 그리고 모듈 간의 응집도를 높이는 데 기여합니다. ### 요약 VContainer가 MessagePipe와 연동될 수 있음을 간단히 소개합니다. 두 라이브러리는 각각 DI와 메시징이라는 다른 목적을 가지고 있지만, 함께 사용될 때 강력한 시너지를 발휘하여 Unity 애플리케이션에서 의존성 관리와 컴포넌트 간의 통신을 더욱 효율적이고 구조적으로 만들 수 있습니다. 더 깊은 사용 방법은 MessagePipe의 공식 문서를 통해 찾아볼 수 있습니다. --- 이전 : [[5.3 UniRx]] | 다음 : [[5.5 ECS (beta)]]