【问题标题】:Best ways for transfering data over the Internet (for .NET developers)通过 Internet 传输数据的最佳方式(适用于 .NET 开发人员)
【发布时间】:2009-07-24 14:25:11
【问题描述】:

我需要从服务器读取一些数据,通过互联网传输(无 VPN),然后将其写入另一台服务器的磁盘。我本来可以想很多选择,但最后我实现了:

  1. 作为 Windows 服务的发送方,每 X 分钟发送一次新数据
  2. 作为 WCF 自托管服务的接收器,带有 WSHttpBinding。
  3. 以字符串形式传输的数据,即序列化为 XML 的对象

但在我这样做之后,我意识到有很多方法可以做到这一点:

  1. FTP 等其他协议。
  2. http://msdn.microsoft.com/en-us/library/ms731092.aspx 中列出的其他绑定
  3. 其他参数类型,如原始对象类型。

我想知道这些选项中的任何一个是否会导致更快、更可靠或更安全的传输。你会推荐什么?

【问题讨论】:

  • 请通过提供有关数据的更多详细信息来澄清您的问题:数据量、频率、发起传输的一方、传输需要的安全性等。
  • @John,我想每分钟传输大约 1MB,不需要安全性。

标签: .net wcf data-transfer


【解决方案1】:

如果可能,我会投票支持 SFTP(SSH 文件传输协议)。

几乎通过 SSH 连接建立隧道 FTP。

...您还可以尝试创建符合基于消息的安全性的 WS-Security 策略的 Web 服务(取决于您使用的模型,您的消息使用从用户名/密码对到 X.509 的任何内容进行加密)证书)。

当现成的包/协议可以工作并且完全符合您的目的时,构建自定义的东西似乎需要做很多工作。

【讨论】:

    【解决方案2】:

    在安全性方面,您可以利用System.Security.Cryptography.CryptoStream 在通过网络传输数据时提供一层加密。

    【讨论】:

      【解决方案3】:

      发件人非常开放——在那里几乎任何选择都是好的。

      对于接收器,可以考虑的一个选项是 HttpHandler —— 只是 ASP.NET 项目中的 ashx 文件。您可以使用任何您想向接收者提供选项/信息的自定义 http 标头,然后数据就是 HTTP 请求的有效负载。您不需要通过文本编码来增加数据的大小,HTTPS 内置了安全性。这非常简单。

      唯一的缺点是,如果您想实现某种“断开的连接,从我离开的地方继续功能”,这仍然是可能的,但有点困难——使用专门的自定义服务可能会更容易。

      【讨论】:

        【解决方案4】:

        我使用Google Protocol Buffers。为它编写一个套接字层很简单。

        它非常紧凑、多语言、快速,最重要的是,添加数据字段很简单,不会破坏兼容性。

        查看Marc Gravell 编写的protobuf-net,他是 Stack Overflow 的定期贡献者。

        【讨论】:

          【解决方案5】:

          基于您只想每分钟传输 1MB 的事实,不需要安全性,并且由于您说双方都在运行 Windows,所以我只需使用 WCF 和 netTcpBinding。这将通过 TCP/IP 以二进制形式发送数据。

          没有 SOAP、没有 XML、没有 HTTP 开销。

          【讨论】:

            【解决方案6】:

            如果您使用的是 Windows 服务器,您还可以使用 MSMQ 并获得消息传递保证、事务、可靠性和一大堆其他功能。它公开了 HTTP 端点,并且很容易从 .NET 访问和使用

            【讨论】:

              猜你喜欢
              • 2010-10-28
              • 1970-01-01
              • 2016-02-13
              • 2011-01-23
              • 1970-01-01
              • 2011-08-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多