我即将在服务器应用程序上编写一组方法,这些方法接收从 TCP 套接字接收的消息,对它们进行编码/解码,然后对它们进行加密/解密。
考虑到消息被定义为特殊类型,每个都有自己的一组属性和总长度,我需要选择以下解决方案之一: 1. 制作使用泛型的方法,例如Encode<T>(...) where T : IMessage
,然后为每种类型实现编码器/解码器message 并ResolveEncoder<T>
让它为想要的消息选择编码器,或者 2. 创建使用任何类型消息的方法,只要它实现IMessage
,例如Encode(IMessage message)
,并使用 System.Reflection 来确定我需要了解的所有信息。
我对解决方案#2 更感兴趣,因为它使我的代码小了 30 倍。但是,我担心属性的不断反射是否会影响性能。现在由于我完成项目的时间有限,我不能真正“实验”。
对于任何一种解决方案的性能如何下降的任何个人经验或与基准的链接,我将不胜感激。