私たちはたくさんのクラスを持つ巨大なアプリケーションを持っています。私たちは現在、この.netアプリケーションをMonotouchでIPadに移植しています。 DataContractSerializerにいくつかの問題があり、Marc Gravellのprotobuf-netシリアライザを使用したいと考えています。WCF DatacontractSerializerからProtobuf-netに正しく移行する方法は?
クライアントとサーバー間の通信は、WCFサービスによって管理されます。
WCFサービスは、クライアントとサーバーに公開されている1つのインターフェイスと、サーバー上のこのインターフェイスの1つの実装で構成されています。
インターフェースは以下のようになります。
[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シリアライザに置き換えますか?
MonoTouchでに、私はProtobuf
とProtobuf.Meta
名前空間へのアクセス権を持っていることに注意してください。
[EDIT] Iは、シリアライザランタイムを交換する方法を発見した: Custom WCF DataContractSerializer
上記溶液はDataContractSerializerOperationBehaviorを使用します。 Protobuf-netはそのような振る舞いをしていますか?
第2にMarcは言った:あなたがMonoでそれを行うことができるMS .NET上のシリアライザを交換することができますので、MonoTouchに従うことを仮定しないでください。 MonoのWCFスタックは未熟で、MTはその部分集合だけを実装しています。 – TheNextman