我有一系列“消息”要从移动客户端发送到服务器应用程序。每条消息都有一些公共信息(MAC、时间戳等),它的 SoObjMessage
是具有 aMessageInfo
和一个类的基类TransactionInfo
,然后我有 aObjReqMsg1
和ObjReqMsg2
一个不同的 int 和 string 属性,仅用于测试。
// 消息类
[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)我的想法是只发出一个带有 , 的请求,而不是发送十个ObjReqMsg1
请求,List<ObjReqMsg1>
以节省网络呼叫。它有效并且实际上节省了一些时间,这有意义吗?或者打 10 个电话会更正确?
2)然后,如果它是有意义的并且是正确的路径,我认为它会很好,而不是进行两次List<ObjReqMsg1>
和List<ObjReqMsg2>
调用,进行一次List<ObjMessage>
调用,并在服务器上检查每个ObjMessage
是否是ObjReqMsg1
or ObjReqMsg2
,然后执行相应的操作。是可行的?
如果是,我做错了什么,因为,当我创建一个List<ObjMessage>
添加 3ObjReqMsg1
和 3 ObjReqMsg2
,并与检查员检查intValue
并且stringValue
存在时,当我这样做时:
string serialized = ServiceStack.Text.JsonSerializer.SerializeToString<ReqListMessages>(reqListMessage);
我没有找到intValue
并stringValue
序列化。
显然在服务器端我收到了 6 的列表ObjMessage
,而不是 3 ObjReqMsg1
+ 3的列表ObjReqMsg2
。
你能帮我吗?谢谢