clrmq를 통한 직렬화 및 역 직렬화

남자 이름

현재 ZeroMQ에 대한 clrmq 바인딩을 사용하여 C #에서 네트워킹 래퍼를 설계하는 중입니다.

내 문제는 역 직렬화 및 직렬화를 투명하게 수행하는 방법을 생각하고 있다는 것입니다. 즉, 네트워킹 래퍼는 유형을 알거나 신경 쓰지 않고 모든 객체를 바이트로 전송할 수 있으며 다른 쪽에서는 올바른 유형으로 역 직렬화 할 수 있습니다.

나는 다음과 같은 클래스 heirachy가 있습니다

public interface ITransmission
{
    Type Type { get; }
}

public abstract class Transmission<T> : ITransmission
{
    public Type Type { get { return typeof(T); } }
}

아이디어는 전송 유형을 구현 한 객체를 직렬화하는 것입니다 .clrmq를 통해 바이트로 전송하고 다른 쪽 끝에서 역 직렬화합니다.

내 이상적인 솔루션은

  1. 속성 장식이 없거나 최소한의 속성 장식이없는 모든 유형의 객체를 가급적 바이트 배열 형식으로 직렬화 할 수 있어야합니다 (따라서 위의 아이디어는 전송 객체를 사용하여).
  2. 수신 된 바이트 배열 형식을 형식화 된 개체로 역 직렬화 할 수 있습니다.

사람들은 현재 직렬화 및 직렬화 해제 문제를 투명하게 해결하기 위해 무엇을 사용하고 있습니까? 어떤 시점에서는 속도가 요인이 될 것이지만 지금은 옵션이 무엇인지 알아 내려고 노력하고 있습니다.

네트워킹 라이브러리가 전송할 형식을 포함하는 모든 어셈블리에 대한 참조를 가져야한다는 암시 적 제한이 있습니까?

또한 다른 질문은 이것이 가능한 접근 방식인지 아니면 서버와 클라이언트를 처음부터 강력하게 입력해야 하는가?

읽어 주셔서 감사합니다.

S. 리치몬드

사용자 dferraro의 솔루션은 좋은 것입니다. 하지만 요즘 에는 C #의 직렬화로 훨씬 더 잘할 수 있다고 생각합니다 . 직렬화 및 메시징 구성 요소를 위해 ZeroMQ 를 Google의 Protobuf 프레임 워크 와 전송으로 페어링하는 것이 좋습니다 .

여기서 Protobuf 의 .NET 구현을 살펴보십시오 . 꽤 문서화되어 있으므로 구현 측면에 대해 너무 자세히 설명하지 않을 것이며 이미 StackOverflow에 대한 좋은 질문이 많이 있습니다. 실제로 Protobuf- Marc Gravell 의 C # 구현 작성자는 자주 유휴 상태이며 protobuf-net 태그를 사용하여 질문에 응답합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

분류에서Dev

BinaryFormatter를 통한 MemoryStream 역 직렬화

분류에서Dev

pickle / eval 및 zlib를 통한 직렬화

분류에서Dev

직렬화 및 역 직렬화 람다

분류에서Dev

자식 직렬화 및 역 직렬화

분류에서Dev

char (s) 직렬화 및 역 직렬화

분류에서Dev

spring-data-rest 및 컨트롤러는 직렬화 / 역 직렬화에 동일한 objectMaper를 사용합니다.

분류에서Dev

비트 크기 정의를 사용한 Java 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

다양한 API 레벨에서 Java 직렬화 및 역 직렬화

분류에서Dev

StreamReader 및 JsonTextReader를 사용한 역 직렬화가 작동하지 않음

분류에서Dev

Gson 및 Retrofit 2를 사용하여 복잡한 API 응답 역 직렬화

분류에서Dev

CustomCreationConverter를 사용한 JSON 역 직렬화를 통해 유형 생성 및 데이터 주입

분류에서Dev

Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

분류에서Dev

잭슨 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

개체 컬렉션 직렬화 및 역 직렬화

분류에서Dev

Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

분류에서Dev

현재 상태로 양식 직렬화 및 역 직렬화

분류에서Dev

Java에서 인터페이스 직렬화 및 역 직렬화

분류에서Dev

Jackson : Map <String, Object> 직렬화 및 역 직렬화

분류에서Dev

중첩 클래스 직렬화 및 역 직렬화

분류에서Dev

android- Libgdx 직렬화 및 역 직렬화

분류에서Dev

특성없는 C # JSON 직렬화 및 역 직렬화

분류에서Dev

(수동) 이진 검색 트리 직렬화 및 역 직렬화

분류에서Dev

XML 직렬화 및 역 직렬화 List <string> in C #

분류에서Dev

사전을 이진으로 직렬화 및 역 직렬화

분류에서Dev

XmlRoot 요소가없는 XML 직렬화 및 역 직렬화

분류에서Dev

ServiceStack은 객체로 사전 직렬화 및 역 직렬화

분류에서Dev

C #에서 JSON 파일 역 직렬화 및 직렬화

분류에서Dev

Swift3에서 객체의 직렬화 및 역 직렬화

Related 관련 기사

  1. 1

    Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

  2. 2

    BinaryFormatter를 통한 MemoryStream 역 직렬화

  3. 3

    pickle / eval 및 zlib를 통한 직렬화

  4. 4

    직렬화 및 역 직렬화 람다

  5. 5

    자식 직렬화 및 역 직렬화

  6. 6

    char (s) 직렬화 및 역 직렬화

  7. 7

    spring-data-rest 및 컨트롤러는 직렬화 / 역 직렬화에 동일한 objectMaper를 사용합니다.

  8. 8

    비트 크기 정의를 사용한 Java 사용자 정의 직렬화 및 역 직렬화

  9. 9

    다양한 API 레벨에서 Java 직렬화 및 역 직렬화

  10. 10

    StreamReader 및 JsonTextReader를 사용한 역 직렬화가 작동하지 않음

  11. 11

    Gson 및 Retrofit 2를 사용하여 복잡한 API 응답 역 직렬화

  12. 12

    CustomCreationConverter를 사용한 JSON 역 직렬화를 통해 유형 생성 및 데이터 주입

  13. 13

    Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

  14. 14

    잭슨 사용자 정의 직렬화 및 역 직렬화

  15. 15

    개체 컬렉션 직렬화 및 역 직렬화

  16. 16

    Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

  17. 17

    현재 상태로 양식 직렬화 및 역 직렬화

  18. 18

    Java에서 인터페이스 직렬화 및 역 직렬화

  19. 19

    Jackson : Map <String, Object> 직렬화 및 역 직렬화

  20. 20

    중첩 클래스 직렬화 및 역 직렬화

  21. 21

    android- Libgdx 직렬화 및 역 직렬화

  22. 22

    특성없는 C # JSON 직렬화 및 역 직렬화

  23. 23

    (수동) 이진 검색 트리 직렬화 및 역 직렬화

  24. 24

    XML 직렬화 및 역 직렬화 List <string> in C #

  25. 25

    사전을 이진으로 직렬화 및 역 직렬화

  26. 26

    XmlRoot 요소가없는 XML 직렬화 및 역 직렬화

  27. 27

    ServiceStack은 객체로 사전 직렬화 및 역 직렬화

  28. 28

    C #에서 JSON 파일 역 직렬화 및 직렬화

  29. 29

    Swift3에서 객체의 직렬화 및 역 직렬화

뜨겁다태그

보관