2013-01-08 5 views
1

나는 MSN 메신저 프로토콜에 대한 클라이언트를 쓰고 있어요 그리고 난과 이러한 예는사용자 정의 직렬화

을 단순화

서버에서 전송 명령을 나타냅니다 수업을

class AddUserCommand { 
    public int TransactionId { get; set; } 
    public string EmailAddress { get; set; } 
} 

class SendMessageCommand { 
    public int TransactionId { get; set; } 
    public string Recipient { get; set; } 
    public string DeliveryMethod { get; set; } 
    public int MessageLength { get; set; } 
    public string Message { get; set; } 
} 

.NET Framework에서 이미 사용 가능한 클래스를 사용하여 이러한 명령을 소켓을 통해 전송되는 매우 간단한 공백 구분 문자열로 직렬화 할 수 있습니까? 예를 들어

..

AddUserCommand becomes 
ADD 3 [email protected] 

SendMessageCommand becomes 
MSG 2 [email protected] OFFLINE 28 
Hello bob how are you doing? 

문제는 내가 키가 문자열 인수의 위치에 의해 암시 할 수 원하는대로 사용/사용 키 값 쌍을, 모든 직렬화 클래스는 내가 본 것입니다 .

+1

이것이 도움이 될지 모르지만 "SharpSerializer"를 조사하고 싶을 수 있습니다. 프로젝트 -> ManageNuGet 패키지 -> "SharpSerializer"로 이동하여 프로젝트에 설치할 수 있습니다. 커스텀 타입을 직렬화하는 탁월한 툴이며 필요한 직렬화를 쉽게 구현할 수있는 방법을 제공합니다. 다음은 웹 사이트 http://www.sharpserializer.com/en/index.html에 대한 링크입니다. –

답변

3

아니요, 직접 작성하거나이 프로토콜을 이미 사용하는 라이브러리를 사용해야합니다.

문자열과 이러한 개체를 변환하는 코드를 작성해야합니다. 내장 인터페이스를 사용하지 않을 것입니다. 왜? 당신에게 도움이되는 것이 없기 때문입니다. 인터페이스를 사용할 수도 있지만 직접 작성하는 인터페이스 일 가능성이 큽니다. 분명히 원하는 경우 다양한 유틸리티 클래스 (예 : TextWriter)를 사용할 수 있지만 이러한 것은 직렬화가 아니라 데이터 스트림입니다. 문제는 외부 응용 프로그램에서 정의한 비표준 형식을 따르려고한다는 것입니다. .NET Framework가 MSN Messenger와 관련이있는 이유는 무엇입니까?

사용할 수있는 일반화 된 직렬화 라이브러리가있을 수 있지만 이러한 라이브러리는 직접 작성하는 것보다 더 복잡한 코드를 생성하기 때문에 직접 작성하는 것이 좋습니다. 대부분은 키 - 값 쌍을 기반으로하므로 적합하지 않습니다. 또한, 이것은 자신의 코드로 해결하는 것이 어려운 문제는 아닙니다.

+0

.NET Framework가 MSN Messenger와 관련이있는 이유는 무엇입니까? 나도 몰라 누가 그런 말 했니? .. MSN 프로토콜은 고유 한 직렬화 방법을 사용하지만 여전히 .NET Framework에서 직렬화 클래스를 사용할 가능성이 있다는 생각이 들더니, 그것이 내가 묻는 것입니다. – NoPyGod

+0

글쎄, 내 요점은 그렇게하는 것이 이해가되지 않는다는 것이다. .NET은 MSN Messenger 용 통신 라이브러리가 아닌 다양한 종류의 프로그램을 작성하기위한 프레임 워크입니다. .NET 기반의 애플리케이션은 핵심 프레임 워크에 포함 된 기능의 이점을 누릴 수 있습니다. 이것이 사람들이 대신 라이브러리를 쓰는 이유입니다. –

+0

답변 해 주셔서 감사합니다. 귀하의 의견으로는 serialize/deserialize 코드가 명령 클래스 자체에 있거나 유형을보고 변수 문자열에 배열하는 특수 Serializer/Deserializer 클래스에 속해 있습니까? – NoPyGod

관련 문제