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 시리얼 라이저로 사용하기 위해 좀 더 복잡한 래퍼를 만들어야합니까?
잘 sucks;)하지만 그걸 지워 줘서 고마워, 내가 ServiceStack.Text와 JSON.Net의 차이점을 어떻게 해결하는지 알아야 할 것이다. – Pharao2k
흠 .. 좋은 소식이 아니야. 내 애플 리케이션에 두 serializer를 포함시켜야 할 것 같아요. – Filimindji
왜 MS는 열등한 JSON SLOW JSON 시리얼 라이저를 사용합니까? ServiceStack.Text, Jil 및 FastJSON이이 문제를 해결했습니다. –