我正在用C#编写一个MSN Messenger客户端,并选择为MSNP协议编写我自己的解析器,因为我查看了其他客户端的源代码,并且没有找到符合我惯常标准的代码 - 特别是对线程同步缺乏深思熟虑。首先,我写了一个通用解析器,它接受“规则”,告诉它如何解析命令。基于命令的协议解析器中每个命令的唯一类?
例如,我设置了一个规则,规定命令代码“VER”具有事务ID和参数列表。
这工作正常,但它一直是一个临时解决方案。我的意图是成为一个完全成熟的解析器,它分别查看每个命令和参数。
例如
如果命令代码是“VER”然后创建一个VersionCommand类,并向其传递与所接受的协议列表沿事务ID。
然后我的代码可以很容易地不与参数指标等(verCmd.TrId & verCmd.AcceptedProtocols)
我担心的是,这是资源的浪费使用一个单独的类的每个命令类型搞乱解释命令。
所以我的问题是 - 是浪费吗?有没有其他基于命令的协议实现采用类似的方法?对于我想做的事有没有先例,还是这是一个虚无主意?
另外,是序列化的东西,可以用于这样的情况,当有一个现有的协议,有时可以有一些奇怪的行为? – NoPyGod 2011-04-04 18:55:36