.NET 桌面客户端应用:套接字或 HTTP 请求

本文关键字:HTTP 请求 套接字 桌面 客户端 应用 NET | 更新日期: 2023-09-27 18:35:06

我正在尝试设置一个可以与服务器异步通信的Windows服务,这个想法是传输一些字符串。格式,嗯,真的没那么重要。

所以,在本地网络中,我很酷,我什至编写了一个简单的移动应用程序来测试它的请求,它就可以工作了。

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

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

老实说,我对客户端-服务器交互了解不多,并且在阅读官方Microsoft文档时我有一个巨大的概念停电,所以请抓挠它。我从文档中瞥见了 WinSock 和 RPC,但 C# 实现感觉就像胶带,实际上是最后的手段。

也就是说,我认为我需要提出六个问题:

  1. 纯HTTP是一个坏主意。右?
  2. 鉴于这种情况,我需要套接字吗?如果是,
  3. 如何在服务器上实现它?也
  4. 它比使用 RPC 更好吗?
  5. RPC 究竟是如何工作的?在官方文档之前我需要阅读什么?
  6. 套接字如何实际让客户端接收来自本地网络外部的异步调用?(需要它,我读这是可能的)

如果我在这里混合概念,请原谅我,并感谢您的阅读。

版主注意:如果这是一个重复的问题,或者偏离主题,或者由于任何其他原因无效,请首先帮助我指出正确的方向。我试图在发布之前对其进行仔细搜索,但由于我对大多数概念不太熟悉,因此我可能错过了那个。谢谢!

.NET 桌面客户端应用:套接字或 HTTP 请求

这里有一些答案:

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

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


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

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


老实说,我对客户端-服务器交互了解不多,并且在阅读官方Microsoft文档时我有一个巨大的概念停电,所以请抓挠它。我从文档中瞥见了 WinSock 和 RPC,但 C# 实现感觉就像胶带,实际上是最后的手段。

在我看来,.NET在处理套接字方面具有坚实的基础。实施了许多技术。异步套接字对于许多客户端来说非常可扩展


也就是说,我认为我需要提出六个问题:

_Plain HTTP是个坏主意。右?__

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


鉴于这种情况,我需要套接字吗?如果是,

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


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

我只以 Web 服务的形式使用 RPC,您只能在 de 服务器实现它时使用它。对 Web 服务有一些好处。


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

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


套接字如何实际让客户端接收来自本地网络外部的异步调用?(需要它,我读这是可能的)

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


问候

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

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