분산 응용 프로그램 (서버 및 클라이언트)을 개발 중입니다. 서버가 보낸 지침 (예 : InitCommand
, StartCommand
, StopCommand
)이 있습니다. 모든 명령에는 고유 한 인수가 있습니다. 이제 직렬화와 네트워킹에 관해서라면 모든 명령 유형 (하위에서 상속되는 하위 클래스)을 Command
에서 생성해야하는지 또는 가능한 모든 인수를 Command
클래스에 넣어야할지 묻습니다.하위 클래스 또는 포괄적 인 클래스
명령을 처리 할 때 if (command is InitCommand)
대 if (command.Type == CommandType.Init)
입니다.
첫 번째 구현에서는 첫 번째 옵션을 사용합니다. 나는 손으로 연재 중이고 처음에 타입 정보를 넣는다. 이제 네트워크에서 데이터 (byte[]
)를 수신하면 먼저 실제 유형 (첫 번째 k 바이트 만 deserialize)을 확인하고 두 번째로 일부 비 직렬화 방법 (예 : Serializer.Deserialize<InitCommand>
)을 사용합니다.
두 번째 옵션은 자동화 된 serialization을 사용할 수 있고 deserialization 전에 형식을 확인할 필요가 없어 사용하기가 훨씬 쉬워 보입니다. 그러나 그것은 모든 논쟁을 하나의 클래스에 넣어야한다는 것을 저를 귀찮게합니다.
다른 접근 방법에 대해 더 잘 알고 있습니까?