Chúng tôi có một ứng dụng rất lớn với nhiều lớp học. Chúng tôi hiện đang chuyển ứng dụng .net này sang IPad bằng Monotouch. Chúng tôi có một số vấn đề với DataContractSerializer và chúng tôi muốn sử dụng bộ nối tiếp protobuf-net của Marc Gravell.Cách di chuyển đúng cách từ WCF DatacontractSerializer sang Protobuf-net?
Giao tiếp giữa máy khách và máy chủ được quản lý bởi Dịch vụ WCF.
Dịch vụ WCF được tạo thành từ một Giao diện được tiếp xúc với máy khách và máy chủ và một giao diện thực hiện giao diện này trên máy chủ.
Giao diện trông giống như rằng:
[ServiceContract]
public interface IMyService
{
[OperationContract]
SomeObject MyFunction(SomeObject myObject);
}
Máy chủ thực hiện bên trông như thế:
[ServiceBehavior(...)]
public class MyService
{
public SomeObject MyFunction(SomeObject myObject)
{
}
}
lớp của chúng tôi trông như thế:
[DataContract]
public class MyClass
{
[DataMember]
public int SomeProp {get; set;}
[OnSerialized]
public void OnSerialized(StreamingContext context)
{
}
}
Vì vậy, đây là những câu hỏi của tôi :
Điều gì sẽ là những thay đổi đối với lớp học của tôi, giao diện wcf và triển khai wcf.
Làm cách nào để thay thế WCF DataContractSerializer mặc định thành Bộ nối tiếp Protobuf.
Xin lưu ý rằng trên MonoTouch, tôi chỉ có quyền truy cập vào Protobuf
và Protobuf.Meta
namespace.
[EDIT] Tôi tìm thấy một cách để trao đổi các runtime serializer: Custom WCF DataContractSerializer
Các giải pháp trên sử dụng các DataContractSerializerOperationBehavior. Có Protobuf-net cung cấp hành vi như vậy?
Thứ hai những gì Marc nói: đừng cho rằng chỉ vì bạn có thể hoán đổi bộ nối tiếp trên MS .NET mà bạn có thể thực hiện trong Mono, hãy để MonoTouch. Ngăn WCF của Mono là chưa trưởng thành và MT chỉ thực hiện một tập hợp con từ đó ... – TheNextman