0

Javaで記述されたクライアントを使用してアクセスしたいWCFを使用してWebサービスを開発しています。プロトコルバッファを使用してメッセージをエンコードします(正確にはMarc Gravellのprotobuf-netを使用)。

これを達成することは可能ですか、それともクライアントを.NETで作成する必要がありますか?プロトコルバッファでシリアル化されたデータがバイナリ相互運用可能であることは知っていますが、WCFがエンコードされたプロトコルメッセージにプラットフォーム固有のメタデータを追加するかどうかはわかりません。

WCFサービスがRESTful、SOAPベース、またはその他の形式のWCFサポートであるかどうかは関係ありません。実際のペイロードは、PBを使用してエンコードする必要があります。これは可能ですか?可能であれば、簡単な例をいただければ幸いです。

4

2 に答える 2

1

バイト配列を取得するようにWCFサービスをプログラムする場合は、protobufメッセージなど、必要なものをそこに詰め込むことができます。

  [ServiceContract]
    public interface IMessageService{
        [OperationContract(IsOneWay = true)]
        void SendMessage(byte[] msg);
    }

  [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
   public class MessageService: IMessageService{

        public void SendMessage(byte[] msg) {
          //decode the protobuf msg and deal with it.
        }

    }

WCFエンドポイントをSOAPとして構成すると、Javaからのエンドポイントとの通信が簡単になります。WCF / SOAPがこれに対してやり過ぎになるかどうかは別の問題ですが、iirc protobufには、単純なRPC用の独自のフレームワークが付属しています。

于 2009-09-16T19:02:56.667 に答える
-1

私はprotobuf-netを使用したことがありませんが、相互運用機能が重要でした。

プラットフォームに依存しない-異なるプログラミングアーキテクチャ間で移植可能

于 2009-09-16T18:16:18.597 に答える