1

MSN Messengerプロトコルのクライアントを作成していて、サーバーとの間で送受信されるコマンドを表すクラスがあります。

これらの例は簡略化されています

class AddUserCommand {
    public int TransactionId { get; set; }
    public string EmailAddress { get; set; }
}

class SendMessageCommand {
    public int TransactionId { get; set; }
    public string Recipient { get; set; }
    public string DeliveryMethod { get; set; }
    public int MessageLength { get; set; }
    public string Message { get; set; }
}

.NET Frameworkですでに利用可能なクラスを使用して、これらのコマンドを非常に単純なスペース区切りの文字列にシリアル化し、ソケットを介して送信することは可能ですか?

例えば..

 AddUserCommand becomes
 ADD 3 bob@bob.com

 SendMessageCommand becomes
 MSG 2 bob@bob.com OFFLINE 28
 Hello bob how are you doing?

問題は、私が見た/使用したすべてのシリアル化クラスがキーと値のペアを使用していることです。ここで、キーは文字列内の引数の位置によって暗黙的に示されます。

4

1 に答える 1

3

いいえ、独自に作成するか、このプロトコルをすでに使用しているライブラリを使用する必要があります。

これらのオブジェクトを文字列との間で変換するコードを記述する必要があります。組み込みのインターフェースは使用しません。なんで?これを助けるものは何もないからです。インターフェースを使用することもできますが、それはおそらく自分で作成したものになります。もちろん、必要に応じてさまざまなユーティリティクラスを使用するオプションがありますTextWriterが、これらは単なるデータストリームであり、シリアル化ではありません。問題は、外部アプリケーションによって定義された標準化されていない形式に準拠しようとしていることです。.NETFrameworkがMSNMessengerと関係があるのはなぜですか?

使用できる一般化されたシリアル化ライブラリがあるかもしれませんが、IMOは、自分で作成するよりも複雑なコードになるため、独自に作成することをお勧めします。それらのほとんどはキーと値のペアに基づいているため、適切ではありません。また、これは独自のコードで解決するのは難しい問題ではありません。

于 2013-01-08T20:45:59.993 に答える