3

spring-integrationのメッセージシリアライゼーションのサポートを検討しています。これは、さまざまなワイヤ レベルのトランスポートが保証された配信を実装するのに役立ちますが、他のメッセージング システムとの相互運用性 (AMQP など) を可能にするためにも役立ちます。

発生する基本的な問題は、ペイロードとヘッダーに Java オブジェクトを含むメッセージをストリームに変換byte[]および/またはストリームに書き込む必要があることです。Java 独自のシリアライゼーションは、相互運用性がないため明らかに役に立ちません。私の好みは、シリアライゼーションに参加するすべてのオブジェクトに必要なロジックをユーザーが実装できるようにするインターフェイスを作成することです。

つまり、クライアント開発者にドメイン コードの生成を要求するのではなく、それを必要とするオブジェクトのシリアライザーを定義する必要があります。インターフェイスは次のようになります。

public interface PayloadSerializer<T> {
    byte[] bytesForObject(T source);
    T objectFromBytes(byte[]);
    //similar methods for streaming potentially
}

//add HeaderSerializer, MessageSerializer

これは賢明なアイデアであり、完璧なインターフェースはどのようなものでしょうか? このコンテキストで意味のあるオブジェクトをシリアル化するための標準的な相互運用可能な方法はありますか?

4

2 に答える 2

2

Java には、JaxB などの XML を生成するフレームワークのセット全体があります。これらの形式の一部はバイナリ BLOB である可能性があり、他のプラットフォームから使用するのは難しいため、購入する前に試してみることをお勧めします。非常に使いやすい XML シリアライザーもあります。

JSON は、ブラウザーとの相互運用性が容易であり、XML よりも冗長ではないため、現在非常に人気があります。

Protocol Buffers と Thrift は、パフォーマンスが重要な場合によく使用されます。これらはバイナリ形式ですが、複数のプラットフォームで適切に指定され、適切にサポートされています。

于 2010-06-12T08:54:28.363 に答える
0

Java オブジェクトを XML 表現にシリアライズし、これをストリーム I/O 用のバイト配列に変換しようとします。

于 2010-06-12T08:53:10.543 に答える