2013-04-25 1 views
8

내 응용 프로그램 계층에서 일관된 직렬화를 유지하려면 다른 모든 곳에서 사용하는 SignalR에 대해 동일한 직렬화 라이브러리 (ServiceStack.Text)를 사용하고 싶습니다.ServiceStack.Text를 SignalR 용 JSON 시리얼 라이저로 사용

public class SignalrServiceStackJsonSerializer : IJsonSerializer 
{ 
    public void Serialize(object value, TextWriter writer) 
    { 
     var selfSerializer = value as IJsonWritable; 
     if (selfSerializer != null) 
      selfSerializer.WriteJson(writer); 
     else 
      JsonSerializer.SerializeToWriter(value, writer); 
    } 

    public object Parse(TextReader reader, Type targetType) 
    { 
     return JsonSerializer.DeserializeFromReader(reader, targetType); 
    } 
} 

통합 : 불행하게도

var serializer = new SignalrServiceStackJsonSerializer(); 
GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer),() => serializer); 

, 그것을 통합 후 SignalR JS 클라이언트가 나올까요

는 사용 된 JSON 시리얼을 교체하기위한 SignalR의 위키 entry을 다음 동안, 나는이 기본 핸들러를 생성 기본 시리얼 라이저와 다른 패키지. 기본 시리얼 라이저는 속성이 1 문자로 제한된 JSON을 생성합니다 (ServiceStack.Text로 바꾸면 발생하지 않음). 따라서 SignalR은 'I'에 액세스하려고 시도하지만 'Id'를 수신했습니다. SignalR 서버 측 소스 코드의 각 부분을 찾을 수 없었습니다.

제가 잘못했거나 ServiceStack.Text를 JSON 시리얼 라이저로 사용하기 위해 좀 더 복잡한 래퍼를 만들어야합니까?

답변

2

나는 노력하지 않을 것이다. 우리는 JSON.NET에 대한 의존도가 매우 높았으며 다음 릴리스에서도이 확장 성을 제거했습니다. 죄송합니다.

+7

잘 sucks;)하지만 그걸 지워 줘서 고마워, 내가 ServiceStack.Text와 JSON.Net의 차이점을 어떻게 해결하는지 알아야 할 것이다. – Pharao2k

+0

흠 .. 좋은 소식이 아니야. 내 애플 리케이션에 두 serializer를 포함시켜야 할 것 같아요. – Filimindji

+0

왜 MS는 열등한 JSON SLOW JSON 시리얼 라이저를 사용합니까? ServiceStack.Text, Jil 및 FastJSON이이 문제를 해결했습니다. –

관련 문제