У нас есть огромное приложение с множеством классов. В настоящее время мы переносим это приложение .net на IPad с помощью Monotouch. У нас есть некоторые проблемы с DataContractSerializer, и мы хотели бы использовать сериализатор protobuf-net Марка Гравелла.
Связью между клиентом и сервером управляет служба WCF.
Служба WCF состоит из одного интерфейса, доступного для клиента и сервера, и одной реализации этого интерфейса на сервере.
Интерфейс выглядит так:
[ServiceContract]
public interface IMyService
{
[OperationContract]
SomeObject MyFunction(SomeObject myObject);
}
Реализация на стороне сервера выглядит так:
[ServiceBehavior(...)]
public class MyService
{
public SomeObject MyFunction(SomeObject myObject)
{
}
}
Наши классы выглядят так:
[DataContract]
public class MyClass
{
[DataMember]
public int SomeProp {get; set;}
[OnSerialized]
public void OnSerialized(StreamingContext context)
{
}
}
Итак, вот мои вопросы:
Какие изменения следует внести в мои классы, интерфейс wcf и реализацию wcf.
Как мне заменить стандартный WCF DataContractSerializer на Protobuf Serializer.
Обратите внимание, что в режиме monotouch у меня есть доступ только к пространствам имен Protobuf
и Protobuf.Meta
.
[EDIT] Я нашел способ поменять местами среду выполнения сериализатора: Custom WCF DataContractSerializer
В приведенном выше решении используется DataContractSerializerOperationBehavior. Обеспечивает ли Protobuf-net такое поведение?