Próbowałem użyć protobuf-net z MonoTouch, ale nie mam pojęcia jak i pomimo usłyszenia, że jest to możliwe, nie udało mi się znaleźć żadnego tutoriala ani żadnego przykładu, który faktycznie działa.protobuf-net v2 i Monotouch: jak się miesza?
Zostało to potwierdzone przez Marc Gravell on his blog, które działa na MonoTouch. Przejrzałem także blogi dwóch osób, o których wspomniał w tym artykule, ale nie znalazłem nic związanego z protobufem.
Nie mając potencjalnego klienta na ten temat, postanowiłem pobrać protobuf-net i spróbować go wypróbować. Stworzyłem więc następujący obiekt dla celów testowych:
[ProtoContract]
public class ProtoObject
{
public ProtoObject()
{
}
[ProtoMember(1)]
public byte[] Bytes { get; set; }
}
i starałem się wysłać go przez WCF z usługi w systemie Windows za pomocą interfejsu [ServiceContract]
z
[OperationContract]
ProtoObject GetObject();
ale wystąpienie ProtoObject otrzymaliśmy na urządzenie ma zawsze wartość zerową. To nie jest tak naprawdę nieoczekiwane, ponieważ przeczytałem, że aby protobuf-net działał z WCF, musisz modify the app.config/web.config.
Jest to trochę trudne do osiągnięcia, ponieważ projekt MonoTouch nie ma aplikacji app.config, ale jeszcze się nie poddałem. Aby zastąpić app.config, starałem się programowo dodać protoEndpointBehavior do zachowań punktu końcowego klienta i tam uderzyłem w ścianę. ProtoBuf.ServiceModel.ProtoEndpointBehavior, dostępny w wersji protobuf-net .NET 3.0, nie jest dostępny w wersji na iOS.
W jaki sposób chciałbym użyć protobuf-net do deserializacji obiektów otrzymanych z punktu końcowego opartego na windowsie WCF przy użyciu serializacji protobuf-net.