Tôi đã cố gắng sử dụng protobuf-net với MonoTouch nhưng tôi không biết làm thế nào, và mặc dù có nghe nói rằng nó có thể, tôi đã không thể tìm thấy bất kỳ hướng dẫn hoặc bất kỳ ví dụ mà thực sự làm việc.protobuf-net v2 và Monotouch: Làm thế nào để trộn?
Nó đã được xác nhận bởi Marc Gravell on his blog rằng nó hoạt động trên MonoTouch. Tôi cũng đã xem qua các blog của hai người anh ta nói trong bài viết này, nhưng tôi đã không tìm thấy bất cứ điều gì liên quan đến protobuf.
Không có khách hàng tiềm năng về chủ đề này, tôi quyết định tải xuống protobuf-net và dùng thử. Vì vậy, tôi đã tạo ra các đối tượng sau đây cho mục đích thử nghiệm:
[ProtoContract]
public class ProtoObject
{
public ProtoObject()
{
}
[ProtoMember(1)]
public byte[] Bytes { get; set; }
}
và tôi đã cố gắng để gửi nó qua WCF từ một dịch vụ chạy trên cửa sổ sử dụng một giao diện [ServiceContract]
với
[OperationContract]
ProtoObject GetObject();
nhưng trường hợp của ProtoObject nhận được trên thiết bị luôn rỗng. Điều này là không thực sự bất ngờ kể từ khi tôi đã đọc mà để làm cho protobuf-net làm việc với WCF bạn cần phải modify the app.config/web.config.
Hơi khó thực hiện vì dự án MonoTouch không có app.config, nhưng tôi chưa bỏ cuộc. Để thay thế app.config, tôi đã cố gắng thêm ProtoEndpointBehavior vào các hành vi của điểm cuối của máy khách theo chương trình, và ở đó tôi nhấn một bức tường. ProtoBuf.ServiceModel.ProtoEndpointBehavior, có sẵn trên thực thi .NET 3.0 của protobuf-net không có sẵn trên bản phát hành iOS.
Tôi sẽ sử dụng protobuf-net để deserialize các đối tượng nhận được từ điểm cuối WCF dựa trên Windows bằng cách sử dụng tuần tự hóa protobuf-net.