怎么把结构化的消息转化为字节流?
打算建一对服务端S和客户端C,
C会发一些结构化的消息请求给S,比方数据库检索的请求:
Msg:
{
MsgType: DatabaseInquire;
MsgPara: Name, Gender, Age;
Condition: SomeCondition;
}
S就要根据Msg进行数据库检索: select Name, Gender, Age from database.table where SomeCondition,
然后生成结构化的对象:
People
{
Name,
Gender,
Age,
}
S把这个People的信息发给C.
这个过程中必须要把结构化的消息转化成字节流, 收到字节流之后还得把它复原成结构化的消息, 网上看了一圈貌似蛮复杂啊,C#还要照着C++的结构体来做, 有没有方便的办法? 网络 结构 消息 字节流
[解决办法]
我们以udp发送一个消息为例,假设要发送一个命令,它是 Commands.SetGlobalData 类型的对象,那么我们可以写
var cmd = new Commands.SetGlobalData
{
data = x,
isPartOfData = true,
safeMode = safeMode
};
var message = Encoding.Utf8.GetBytes(JsonConvert.DeserializeObject(cmd));
new UdpClient().Send(message, message.Length, "211.340.109.21", 8899);
public class Command
{
public string TypeFullName;
public string Body;
}
public class Command
{
public string TypeFullName;
public JToken Body;
}
总之,这是一个自动的网关程序设计,是给整个系统(不断增加的成百上千的命令)使用的。而不是那种“见到一个命令就开发一堆程序”的笨做法。