【问题标题】:.NET project for TCP messaging用于 TCP 消息传递的 .NET 项目
【发布时间】:2010-10-20 23:37:31
【问题描述】:

.NET 中是否有一个开源项目或框架为客户端和服务器之间的 TCP 消息传递提供基本的“管道”?这似乎是我最终一遍又一遍地写本质上相同的东西的事情之一,我想把自己从那一点抽象出来,处理我的应用程序的细节,而不是写 另一个 TCP 消息传递机制。

希望比 WCF 更小/更简单。我真的对不会尝试解决所有问题的轻量级的东西很感兴趣。

【问题讨论】:

  • WCF 试图“解决所有问题”,您确定它也不能解决您的问题吗?你看过使用 net.tcp 绑定和二进制序列化吗?
  • WCF 确实是一头野兽。话虽如此,那里有很多介绍性教程,其中许多专注于简单的任务,例如您正在尝试的任务 - 只要您不想这样做,这实际上在 WCF 中并没有那么困难做一些花哨的配置或服务器/客户端通信有一定的特殊性。

标签: .net sockets tcp


【解决方案1】:

WCF 内置了很多细节。虽然我还没有真正尝试过自己实现它。

【讨论】:

    【解决方案2】:

    如果您需要的不仅仅是简单的消息支持,请查看.Net's remoting support

    【讨论】:

      【解决方案3】:

      你也可以试试 Indy.net 项目。

      它最初是用 Delphi 编写的,但这是它应该做的。

      【讨论】:

        【解决方案4】:

        至少,在集成或手动代码中,您会遇到不同的激活、线程模型、缓冲区、框架、安全性和序列化问题。它是任何语言或环境中任何 UDP/TCP 或配置/属性工作的典型。它仍然需要根据服务器或客户端的需求进行调整,这很简单,I/O 工作的巨大可能性的本质。

        完全同意 WCF 过于臃肿而且与 .NET Remoting 相比要慢得多(这比托管套接字代码慢,而托管套接字代码又比本机 iocp 代码慢得多)手动滚动代码。但这是额外的工作,如果您在通用泛型库中管理上述内容(不是更强大的模板,这使得 .NET 中变得更难,即您必须以奇怪的方式设计类型 + 必须使用接口),而不是说一个人做得很好- 使用一些复杂的管道进行消息队列(这不是不可能的,但恕我直言,回想起来永远不值得“一般”地做......)。

        替代方案是 MSMQ,MS 越来越多地押注其软件,或者半途而废的开源位,永远无法完全满足您需要的模型。 Tibcos,ActiveMQs,你的名字。即使是更低的级别,最好的也被广泛认为是 C++ boost::asio,虽然被认为是顶级的,但就像所有的东西一样,它并不适合所有东西。这是一个非常了不起的设计,所以我要提防潜在的浪费时间的练习..

        在 .NET 上,我首先会采用 MS“今天”推出的任何 50 线程服务,如果不采用“再次类似的代码”,并寻找类似的概念,以便在工具集重新出现时装备您的工具集(就像每个新的 I/O 库或框架每 5 年左右所做的那样)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-03
          • 1970-01-01
          • 1970-01-01
          • 2015-12-03
          • 1970-01-01
          • 2017-06-05
          • 2011-04-05
          相关资源
          最近更新 更多