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サーバー側のソースコードのそれぞれの部分を見つけることができませんでした。私は何か間違っているか、JSONシリアライザとしてServiceStack.Textを使用するために、より複雑なラッパーを作成する必要がありますか?
)sucks;)しかし、これをクリアしてくれてありがとう、私はServiceStack.TextとJSON.Netの違いをどのように回避するかを見なければなりません。 – Pharao2k
ハム..良いニュースではありません。私は私のアプリに両方のシリアライザを含める必要がありますね。 – Filimindji
MSは下位のJSON SLOW JSONシリアライザを使用しているのはなぜですか? ServiceStack.Text、Jil、FastJSONはそれを打ち負かす。 –