我有一个项目,我可能想抽象客户端和服务器之间的通信。我最初使用的是套接字和 TCP。然后我认为能够切换到进程间通信通道可能会很好。然后我查看了 System.IO.PipedStream 类,发现 PipeStream 和 Socket 类之间有很多重叠。但是当我查看 Socket 类时,它继承自 Object。因此Socket和PipeStreams之间没有公共接口或抽象类。
然后我想起了一些有关 NetworkStream 的事情。它显然包装了一个 Socket 类。但至少 NetworkStream 和 PipeStream 都继承自 Stream。这意味着我可以更换我的实现。我想,我还没有尝试过这个。我一直在使用套接字。
所以我的问题是:使用 NetworkStream 类比 Socket 类有什么缺点吗?有什么陷阱或需要注意的地方吗?
如果您被迫使用低级选项(例如套接字和管道),并且您想要从这些数据源提取流数据的抽象,那么Stream http://msdn.microsoft.com/en-us/library/system.io.stream.aspx类是完美的,因为它为该模型提供了抽象。
如果您针对 Stream 实例进行编码,那么您可以让任何东西实现 Stream,而不必担心底层传输。
关于使用 NetworkStream 与 Socket,NetworkStream 只是包装 Socket 实例并将对拉取模型(流)的调用应用到 Socket。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)