【问题标题】:C# Object Passing over Network Stream with High RedundancyC# 对象通过具有高冗余的网络流传递
【发布时间】:2011-10-21 17:51:42
【问题描述】:

我需要通过非常规的慢速、低带宽、抖动连接发送带有元数据的二进制有效负载,该连接基本上可以像第 3 层及以上的任何其他正常连接一样处理。我希望二进制有效负载不超过 512kb但可能只有 16kb 左右。 我的客户端正在运行 .NET Compact Framework,而我的服务器可以运行普通的 .NET Framework。

我正在寻找一种方法或库,以具有大量冗余(基本上是消息队列)以随机间隔的间隔(始终处于连接状态)连续地序列化和传输流(特别是 SslStream 或类似的对象)上的对象。 我查看了各种 XML、SOAP、JSON、protobuf 实现和 WCF,但有些不兼容、太重、没有足够高的冗余或文档很差。

我愿意自己写一些东西或移植一些东西,但是有一些东西可以工作并得到一些想法会非常有帮助。

【问题讨论】:

  • 这里的关键问题是什么?连载?还是队列/冗余?简单地说——序列化器只做一件事:序列化。它们包括消息队列方面。您需要实现它(可能对于具有某些选项的 WCF 除外)。但是大多数序列化程序也很容易使用......所以我对这里的基本问题有点模糊。这里的“答案”是什么样的?
  • 对不起,我应该更清楚。我正在寻找有弹性的消息队列选项。
  • 您是否查看过任何特定的消息队列/消息总线实现?
  • 不,很遗憾,这不是我的专业领域。我只是将使用它的应用程序的领域层/业务逻辑人员。我希望有人能给我一些来自另一种语言的方法,或者指向通用计算机科学思想的链接或适合该目的的库。我现在是一条没有水的鱼。

标签: c# serialization stream message-queue redundancy


【解决方案1】:

我发现了一个名为NetSockets 的东西,它有一些错误,但它简单、小巧、多线程,我可以将其更改为使用我想要的流、数据对象和序列化程序并将其移植到我的客户端。我的答案是在该实现的 NetBasePayloadStream、NetBaseStream 和 NetObjectStream 类中。

【讨论】:

    【解决方案2】:

    我会试用 MSMQ。 .Net CF 和所有 MS 服务器平台都支持它:

    http://msdn.microsoft.com/en-us/library/ms229665%28v=VS.90%29.aspx

    我没有在“不可靠”的连接上使用它,但它支持事务队列和可靠的传递,这就是你想要的原因。在这个特定的空间里,你真的不想去发明一些东西来达到目的或重新利用其他东西,因为很难做到正确。我认为 WCF 也支持 Net CF 上的 MSMQ 传输,这将提供一个干净的消息传递抽象来使用。

    澄清一下,WCF 与 MSMQ 传输(如果支持的话)。

    这里的关键是在您描述的场景下评估和测试它,因为没有什么是 100% 完美的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2013-11-21
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多