19. Integration
왜 필요한가
VContainer, UniTask, MessagePipe, MemoryPack, Newtonsoft.Json 같은 외부 라이브러리를 Systems가 직접 호출하면 라이브러리 교체 시 전체 코드를 수정해야 한다. Integration 계층이 완충 지대 역할을 한다.
언제 사용하는가
새로운 외부 라이브러리를 Framework에 연결할 때는 반드시 Integration 계층에 Adapter/Wrapper를 만든다.
프로젝트에서 어떤 역할인가
IJsonSerializer(Newtonsoft.Json 기반), IMemoryPackSerializer(MemoryPack 기반)처럼 외부 라이브러리를 인터페이스로 감싼다. 로컬 저장/네트워크 데이터는 MemoryPack, 설정/외부 JSON 데이터는 Newtonsoft.Json을 사용한다 (JsonUtility 금지).
실제 게임에서는 언제 호출되는가
SaveSystem이 데이터를 직렬화할 때 내부적으로 IMemoryPackSerializer를 사용, Config를 외부 JSON에서 읽을 때 IJsonSerializer를 사용.
코드 예제
[Inject] private IJsonSerializer _json;
string text = _json.Serialize(myConfig);
관련 Sample
Samples/Integration/SerializationSample.cs
Best Practice
Systems는 외부 라이브러리를 직접 호출하지 않는다. 항상 Integration 계층의 인터페이스를 주입받는다.
자주 하는 실수
- Systems 코드에서
Newtonsoft.Json.JsonConvert를 직접 호출 JsonUtility사용
실습 과제
IJsonSerializer로 임의의 객체를 직렬화/역직렬화해본다.IMemoryPackSerializer로 동일 객체를 처리해 두 방식의 차이를 비교해본다.
이전 문서 / 다음 문서
이전: 18_Diagnostics.md 다음: 20_Multiplayer.md
관련 API
MCP_Index.md Integration 섹션