gpt4 book ai didi

c# - 在 c#.net 中通过套接字序列化和反序列化多个对象

转载 作者:行者123 更新时间:2023-11-30 22:36:00 26 4
gpt4 key购买 nike

我正在为我正在编写的项目在 C#.net 上进行套接字编程。

该项目将是一个多客户端系统,其中客户端服务监控系统资源并向中央服务器报告。

我正在研究 Remoting、WCF 等以确定哪个最适合我。由于一些要求,我选择了套接字编程:

  • Sockets 比其他的更快,开销很小
  • 我可以支持服务器上每个资源的更多连接
  • 套接字可以,尽管有所修改,但也允许我与基于 UNIX 的系统进行交互。
  • 我可以在代码中自行对链接实现加密,而无需依赖 SSL 证书。

我这里的想法可能是错误的?如果我是请告诉。有些人建议使用 WCF,因为它“易于使用”并且可以做我想做的一切,但我相信它的开销要慢得多。

我的主要问题是,虽然客户端机器不会保持连接打开,但可能有数千或数万台客户端机器,我不得不假设机器将受到连接的冲击。考虑到连接之间的最短时间,每个客户端可能只有 1 分钟。

现在我手头的问题是:如何通过链接发送多个对象,更重要的是如何确定它们在另一端是什么?

我假设这可以通过一个连接实现,因为我已经阅读了许多这样说的文章,尽管它们描述的方法不同,示例也是如此。

问题是我找不到任何实际执行此操作的示例。没有示例显示如何发送多个对象,然后如何确定它们在另一端是什么。

任何人都可以在这里帮助我或指出示例。一旦我有了工作基础,我就能很好地解决问题。

最佳答案

感觉就是过早优化,重新发明轮子的经典案例。我可能会弄错,因为我不知道您的性能要求、开发资源和时间框架是什么。但我怀疑非常聪明的人在你之前也遇到过同样的问题。他们提出了各种解决方案,包括 HTTP(SOAP、REST)和 XMPP (如果你想要有状态协议(protocol))。即使在应用程序级别(最小化通过线路发送的数据量、缓存等)也可以做很多事情来提高性能。没有直接使用套接字引入的复杂性开销。您可能知道所有这些,但我强烈建议您再次评估您的决定。

对于像 XML 和 JSON 这样的常见序列化格式,您可能还想看看 Protocol Buffers :

protocol buffers is the name of the binary serialization format used by Google for much of their data communications. It is designed to be:

  • small in size - efficient data storage (far smaller than xml)
  • cheap to process - both at the client and server
  • platform independent - portable between different programming architectures
  • extensible - to add new data to old messages

关于c# - 在 c#.net 中通过套接字序列化和反序列化多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com