Serialization最适合通过套接字发送数据吗?

时间:2012-02-27 01:04:24

标签: c# sockets serialization tcp network-programming

有人告诉我,序列化并不是通过套接字发送内容的最佳方式,但是他们说他们曾经在一本书中读过这篇文章而且不确定是否有更好的方法导致他们之前没有真正完成网络连接。序列化是最好的方式,还是有更好的方法。这也适用于游戏,如果这有很大的不同。我通过搜索有关在其上发送对象的问题看到的看起来像大多数人使用序列化但我只是检查以查看人物的事情

3 个答案:

答案 0 :(得分:6)

序列化基本上意味着转换为适合某种存储类型的状态。通过网络发送的数据必须从内存中取出或从HD中取出,并以某种格式发送。全部序列化。

人们可能会说,序列化为XMl或JSON,这只是一种非常具体的序列化类型,然后根据您的需要,您可以有更好或更差的。

答案 1 :(得分:1)

在.Net中,序列化由框架处理,因此编程接口来处理对象非常容易。

如果需要保持从主机A到主机B的复杂对象相同,则序列化很有用。否则,如果您只需要主机B接收此对象中的一个或两个属性并仍希望对其进行序列化,那么您需要将其转换为更简单的对象,并且可能创建一个新类,而不是一个好处。

另一方面,考虑到框架序列化方法和类不会改变您的对象,不必编写自己的套接字到套接字函数可能更安全。在我看来,如果你需要节省一些带宽,那么使用你自己的套接字到套接字的方法就是这样。如果您选择安全性,那就是序列化。

答案 2 :(得分:0)

我遇到了你的问题,并且一直在寻求教育自己不同的主题,我决定做一些阅读/研究。我确定你可能遇到过这些问题,但是你读过有关Windows Communication Foundation(WCF)的内容吗?这篇文章可能有一些相关性http://blogs.msdn.com/b/carlosfigueira/archive/2008/01/13/writing-custom-requests-to-simple-wcf-services.aspx

同样在本文Problem with sockets and OutOfMemory error中,人们谈论他们如何完成基于套接字的通信,但以前没有考虑过WCF,但它似乎有点像是一种祝福。本文中的某些人C# Sending multiple objects over same Socket已经说过如果在这种情况下开销非常重要,那么它可能是一个问题但是我认为它更依赖于你所做的事情。重新尝试完成(虽然你说这是为了游戏。)

同样,我不会声称自己是专家我只是对尽可能多的学习感兴趣而且我从你的帖子相关主题的快速阅读都引导我到WCF。如果你对这个话题感到新兴和好奇,那么依赖WCF对你来说会更容易,因为它已经有了你可以利用的基础,虽然你自己编程套接字可能会更快。

对不起,如果我絮絮叨叨,但我希望其中任何一个有用:)