2013-04-25 18 views
8

Để có tuần tự nhất quán trên các lớp ứng dụng của tôi, tôi muốn sử dụng cùng một thư viện tuần tự hóa (ServiceStack.Text) cho SignalR mà tôi sử dụng ở mọi nơi khác.Sử dụng ServiceStack.Tiếp theo JSON Serializer cho SignalR

Trong khi sau SignalR của Wiki entry cho thay thế được sử dụng JSON Serializer, tôi tạo ra bộ xử lý này cơ bản:

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); 
    } 
} 

tích hợp:

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

Thật không may, sau khi tích hợp nó, khách hàng SignalR JS không có được các gói khác nhau hơn với serializer mặc định. Có vẻ như, serializer mặc định tạo ra (ít nhất là cho các thông điệp không phải người dùng) JSON với các thuộc tính được giới hạn thành 1 ký tự, không xuất hiện sau khi thay thế nó bằng ServiceStack.Text. Vì vậy, SignalR cố gắng truy cập 'I' nhưng nó nhận được 'Id'. Tôi không thể tìm thấy các phần tương ứng của mã nguồn phía máy chủ SignalR.

Tôi đã làm điều gì đó sai hoặc tôi có phải tạo một trình bao bọc phức tạp hơn để sử dụng ServiceStack.Text dưới dạng trình nối tiếp JSON không?

Trả lời

2

Tôi sẽ không bận tâm khi thử. Chúng tôi có một sự phụ thuộc sâu sắc vào JSON.NET và thậm chí chúng tôi đã loại bỏ khả năng mở rộng này trong bản phát hành tiếp theo. Lấy làm tiếc.

+7

cũng thật đáng buồn;) nhưng cảm ơn vì đã xóa nó, sẽ phải xem cách tôi làm việc xung quanh sự khác biệt trong ServiceStack.Text và JSON.Net. – Pharao2k

+0

Hum .. nó không phải là một tin tốt. Tôi đoán tôi phải bao gồm cả serializer trong ứng dụng của tôi. – Filimindji

+0

Tại sao MS sử dụng trình tuần tự JSON SLOW JSON kém hơn? ServiceStack.Text, Jil và FastJSON đánh bại nó đến chết. –

Các vấn đề liên quan