proto-socket/agent-roadmap/milestones/csharp-port.md

3 KiB

C# Unity/.NET 포트

목표

프로토콜 0.1 계약과 native-first 런타임 방향을 유지하면서 Unity 및 .NET 소비자를 지원하는 C# 구현을 추가한다.

단계

남은 native platform 포팅

상태

[보류]

구현 잠금

  • 상태: 잠금
  • SDD: 확인 필요 (보류 해제 시 C# API/lifecycle 설계 범위를 보고 판단한다.)
  • 결정 필요:
    • C# Unity/.NET 포트 재개 여부를 선택한다.
    • 지원할 .NET 및 Unity version target을 선택한다.

범위

  • 핵심 transport 추상화, communicator, nonce 처리, 요청-응답 상관관계, 하트비트, close-once 동작을 구현한다.
  • 대상 런타임에서 실용적인 범위로 TCP/TLS 및 WebSocket/WSS 지원을 구현한다.
  • 구현체를 Available로 표시하기 전에 동일 언어 테스트와 크로스 언어 테스트를 추가한다.
  • protobuf 외 런타임 의존성이 있다면 native API가 충분하지 않은 이유를 문서화한다.

기능

Epic: [csharp-port] C# 구현과 검증

  • [csharp-protobuf-binding] Canonical schema에서 C# protobuf binding을 생성하거나 유지한다.
  • [csharp-communicator-core] ITransport와 communicator core를 구현한다. 검증: C# 구현체는 PORTING_GUIDE.md를 따르며 Unity main-thread concern을 프로토콜 core 밖에 둔다.
  • [csharp-tcp-tls-transport] TCP/TLS client와 server 지원을 구현한다.
  • [csharp-ws-wss-transport] Native 지원이 충분하지 않은 경우에만 focused dependency로 WebSocket/WSS 지원을 구현한다. 검증: 런타임 의존성 선택은 문서화되어 있고 protocol-relevant하다.
  • [csharp-same-language-tests] 동일 언어 테스트를 추가한다.
  • [csharp-cross-language-tests] 크로스 언어 테스트 runner를 추가한다. 검증: C# peer가 문서화된 프로토콜을 통해 최소 하나의 사용 가능 구현체와 상호 운용된다.
  • [csharp-available-status] 테스트 통과 후에만 상위 구현 상태를 갱신한다.

범위 제외

  • Unity 전용 gameplay, room, auth, session, chat 의미를 추가하지 않는다.
  • C# 전용 API에 맞추기 위해 프로토콜을 변경하지 않는다.
  • 동일 언어 및 크로스 언어 검사를 통과하지 않은 상태에서 C#을 Available로 표시하지 않는다.

작업 컨텍스트

  • 관련 경로: PORTING_GUIDE.md, PROTOCOL.md, VERSIONING.md
  • 선행 작업: 안정화 기준선 완료
  • 보류 사유: 실제 Unity/.NET 소비 수요 또는 명시적 재개 요청이 생길 때까지 구현하지 않는다.
  • 재개 조건: 소비 수요가 확인되면 target .NET/Unity version, SDD 필요 여부, 동일 언어 테스트, 크로스 언어 테스트, 전체 검증 매트릭스 통과 조건을 먼저 확정한다.
  • 후속 작업: 릴리즈 준비
  • 참고 구현: 동시성과 close-once 패턴은 Go를, public API 형태와 parser map 예시는 Dart를 참고한다.
  • 확인 필요: 지원할 .NET 및 Unity version target