2

モバイルクライアントからサーバーアプリケーションに送信される一連の「メッセージ」があります。各メッセージにはいくつかの共通情報 (MAC、タイムスタンプなど) があり、その Soは aと aクラスObjMessageを持つ基本クラスです。次に、int と string プロパティで異なるandをテスト用に持っています。MessageInfoTransactionInfoObjReqMsg1ObjReqMsg2

// メッセージング クラス

[ProtoContract]
public class MessageInfo
{
    [ProtoMember(1)]
    public string MAC { get; set; }
    [ProtoMember(2)]
    public string version { get; set; }
    [ProtoMember(3)]
    public Guid guidMessage { get; set; }
    [ProtoMember(4)]
    public DateTime timeGenerated { get; set; }
}

[ProtoContract]
public class TransactionInfo
{
    [ProtoMember(1)]
    public string user1 { get; set; }
    [ProtoMember(2)]
    public string user2 { get; set; }
    [ProtoMember(3)]
    public DateTime timeOperation { get; set; }
}


[ProtoContract]
public class ObjMessage
{
    [ProtoMember(1)]
    public TransactionInfo transactionInfo { get; set; }
    [ProtoMember(2)]
    public MessageInfo messageInfo { get; set; }
}

// 異なるメッセージのリスト

[ProtoContract]
public class ObjReqMsg1 : ObjMessage
{
    [ProtoMember(1)]
    public int intValue { get; set; }
}

[ProtoContract]
public class ObjReqMsg2 : ObjMessage
{
    [ProtoMember(1)]
    public string stringValue { get; set; }
}


[ProtoContract]
public class ReqListMessages : IReturn<RespListMessages>
{
    [ProtoMember(1)]
    public List<ObjMessage> objsReqMessage { get; set; }
}

私のすべてのテストは json とプロトコル バッファで行われ、異種メッセージのリストの単一メッセージの送信は機能します。

私の質問は次のとおりです。1) 私の考えは、10 個のObjReqMsg1リクエストを送信する代わりにList<ObjReqMsg1>、ネットワーク呼び出しを節約するために を使用して 1 つのリクエストのみを作成することです。それは機能し、実際に時間を節約しますが、それは理にかなっていますか? それとも、10回の呼び出しを行う方が正しいでしょうか?

2)それが理にかなっていて正しい道であれば、2つのList<ObjReqMsg1>andList<ObjReqMsg2>呼び出しを行う代わりに、1つのList<ObjMessage>呼び出しを行い、サーバー上でそれぞれObjMessageObjReqMsg1orObjReqMsg2であるかどうかを確認し、それに応じてキャストして行動するのが素晴らしいと思いました。実現可能ですか?

もしそうなら、私が間違っているのは、なぜなら、私が3と 3List<ObjMessage>を追加し、そのとが存在することをインスペクターでチェックするとき、私が行うとき:ObjReqMsg1ObjReqMsg2intValuestringValue

string serialized = ServiceStack.Text.JsonSerializer.SerializeToString<ReqListMessages>(reqListMessage);

見つからintValuestringValue連載中。

そして明らかにサーバー側では、 3 + 3ObjMessageのリストではなく、 6 のリストを受け取ります。ObjReqMsg1ObjReqMsg2

手伝ってくれますか?ありがとう

4

2 に答える 2

0

可能性のあるデータの変動性をより適切に予測するために、クライアントにバリアント (つまり、共用体) を使用することを検討する必要があります。そうしないと、クライアントがサービスに結合されます。

于 2013-05-24T16:50:56.557 に答える