Uygulama katmanlarımda tutarlı bir serileştirme sağlamak için, her yerde kullandığım SignalR için aynı Serileştirme kitaplığını (ServiceStack.Text) kullanmak istiyorum.ServiceStack.Text'i, SignalR
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);
}
}
Entegrasyon:: Maalesef
var serializer = new SignalrServiceStackJsonSerializer();
GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer),() => serializer);
, onu entegre sonra, SignalR JS istemci alıyor
kullanılan JSON Serializer değiştirilmesi için SignalR en Wiki entry izlerken, bu temel işleyicisi yarattı varsayılan seri hale getiriciden farklı paketler. Göründüğü gibi, varsayılan seri hale getirici, (en azından kullanıcı olmayan iletiler için) JSON'u, 1 karakterle sınırlanmış özelliklere sahip üretir; bu, ServiceStack.Text ile değiştirildikten sonra oluşmaz. Böylece, SignalR 'I' erişmeye çalışır ancak 'Id' aldı. SignalR sunucu tarafı kaynak kodunun ilgili bölümlerini bulamadım.Yanlış bir şey mi yaptım veya ServiceStack.Text'i bir JSON serializer olarak kullanmak için daha karmaşık bir sarıcı oluşturmak zorunda mıyım?
bu kadar berbat;) ama bunu temizlemek için teşekkürler, ServiceStack.Text ve JSON.Net'teki farklar etrafında nasıl çalıştığımı görmek zorunda. – Pharao2k
Hum .. bu iyi bir haber değil. Sanırım her iki seriyi de uygulamanıza eklemeliyim. – Filimindji
MS neden düşük JSON SLOW JSON serializer kullanıyor? ServiceStack.Text, Jil ve FastJSON onu öldürdü. –