현재 ZeroMQ에 대한 clrmq 바인딩을 사용하여 C #에서 네트워킹 래퍼를 설계하는 중입니다.
내 문제는 역 직렬화 및 직렬화를 투명하게 수행하는 방법을 생각하고 있다는 것입니다. 즉, 네트워킹 래퍼는 유형을 알거나 신경 쓰지 않고 모든 객체를 바이트로 전송할 수 있으며 다른 쪽에서는 올바른 유형으로 역 직렬화 할 수 있습니다.
나는 다음과 같은 클래스 heirachy가 있습니다
public interface ITransmission
{
Type Type { get; }
}
public abstract class Transmission<T> : ITransmission
{
public Type Type { get { return typeof(T); } }
}
아이디어는 전송 유형을 구현 한 객체를 직렬화하는 것입니다 .clrmq를 통해 바이트로 전송하고 다른 쪽 끝에서 역 직렬화합니다.
내 이상적인 솔루션은
사람들은 현재 직렬화 및 직렬화 해제 문제를 투명하게 해결하기 위해 무엇을 사용하고 있습니까? 어떤 시점에서는 속도가 요인이 될 것이지만 지금은 옵션이 무엇인지 알아 내려고 노력하고 있습니다.
네트워킹 라이브러리가 전송할 형식을 포함하는 모든 어셈블리에 대한 참조를 가져야한다는 암시 적 제한이 있습니까?
또한 다른 질문은 이것이 가능한 접근 방식인지 아니면 서버와 클라이언트를 처음부터 강력하게 입력해야 하는가?
읽어 주셔서 감사합니다.
사용자 dferraro의 솔루션은 좋은 것입니다. 하지만 요즘 에는 C #의 직렬화로 훨씬 더 잘할 수 있다고 생각합니다 . 직렬화 및 메시징 구성 요소를 위해 ZeroMQ 를 Google의 Protobuf 프레임 워크 와 전송으로 페어링하는 것이 좋습니다 .
여기서 Protobuf 의 .NET 구현을 살펴보십시오 . 꽤 문서화되어 있으므로 구현 측면에 대해 너무 자세히 설명하지 않을 것이며 이미 StackOverflow에 대한 좋은 질문이 많이 있습니다. 실제로 Protobuf- Marc Gravell 의 C # 구현 작성자는 자주 유휴 상태이며 protobuf-net 태그를 사용하여 질문에 응답합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다