.NET桌面客户端应用程序:套接字还是HTTP请求?

时间:2016-02-16 21:30:12

标签: c# sockets http client rpc

我正在尝试设置一个可以与服务器异步通信的Windows服务,其目的是传输一些字符串。格式,嗯,这真的无关紧要。

所以,在本地网络中,我很酷,我甚至写了一个简单的移动应用程序来测试请求,它只是有效。

问题是我现在必须让它在网络外部工作,并且要实现它我必须从路由器配置转发端口,这实际上不是在用户机器上部署的理想方案。 / p>

我读过你通常使用套接字的东西,但据我所知,至少在.NET中,服务器必须有相同的框架(如果不是这样,请纠正我),以及在我的情况下,服务器不是.NET。

老实说,我对客户端 - 服务器交互知之甚少,而且在阅读官方的Microsoft文档时我有一个巨大的概念性停电,所以抓一点。我从文档中看到了WinSock和RPC的一瞥,但C#实现感觉就像胶带,真的是最后的手段。

那就是说,我想我需要提出六个问题:

  1. 普通的HTTP是一个坏主意。正确?
  2. 鉴于这种情况,插座是我需要的吗?如果是的话,
  3. 如何在服务器上实现?此外,
  4. 它比使用RPC更好吗?
  5. RPC究竟是如何工作的?在官方文档之前我需要阅读什么?
  6. 套接字实际让客户端从本地网络外部接收异步调用的功能是什么? (需要它,我读到它可能)
  7. 如果我在这里混合概念,请原谅我,并感谢您阅读。

    主持人注意:如果这是一个重复的问题,或任何方式,或由于任何其他原因无效,请首先指导我正确的方向帮助我。在发布之前我试着给它一个很好的搜索,但由于我对大多数概念都不太熟悉,我可能错过了那个。谢谢!

2 个答案:

答案 0 :(得分:0)

您应该使用Websockets。我不知道为什么你说服务器和客户端应该有相同的框架,事实并非如此,我已经将它与C#客户端一起用于NodeJs后端。

https://msdn.microsoft.com/en-us/library/system.net.websockets.websocket(v=vs.110).aspx

答案 1 :(得分:0)

这里有一些答案:

问题是我现在必须让它从网络外部运行,并且要实现它我必须从路由器配置转发端口,这实际上不是用户部署的理想方案机器。

只有在从netwerk外部连接到网络内部的计算机(路由器后面)时,才需要进行端口转发。因此,如果用户计算机直接在互联网上连接到计算机,则您不需要端到端。如果来自Internet的计算机连接到本地网络中的计算机,则需要转发路由器中的端口。因此,它只会影响您的网络。

我已经读过你通常使用套接字的东西了,但据我所知,至少在.NET中,服务器必须有相同的框架(请纠正我,如果是不是真的),在我的情况下,服务器不是.NET。

不,来自.NET的套接字可以与来自其他语言/平台的套接字的任何实现进行通信。只有在沟通二进制文件时,您才应该注意端点。

老实说,我对客户端 - 服务器交互知之甚少,而且在阅读官方的Microsoft文档时,我有一个巨大的概念性停电,所以请刮一下。我从文档中看到了WinSock和RPC的一瞥,但是C#实现感觉就像胶带一样,真的是最后的手段。

在我看来,.NET有一个坚实的基础来处理套接字。实施了许多技术。对于许多客户端,异步套接字具有很高的可扩展性

那就是说,我想我需要提出六个问题:

_Plain HTTP是一个坏主意。右?__

为什么你会认为普通HTTP很糟糕?当服务器用其他语言编写时,这非常有用,例如PHP / Python / ASP.NET使用HTTP的任何东西。如果您要发送用户私人信息,则应对其进行哈希/加密

鉴于这种情况,插座是我需要的吗?如果是,

取决于如何连接服务器..

如何在服务器上实现?也, 它比使用RPC更好吗?

我只使用了Web服务形式的RPC,只有在de server实现它时才能使用它。 WebServices有一些好处。

RPC究竟是如何运作的?在官方文档之前我需要阅读什么?

在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms950421.aspx

套接字做了什么让客户端从本地网络外部接收异步调用? (需要它,我读了它可能)

网络内部和外部之间的通信没有区别。通过套接字直接通信始终是异步的。

<强>此致