.NET 桌面客户端应用程序:套接字还是 HTTP 请求?
.NET desktop client app: sockets or HTTP requests?
我正在尝试建立一个可以与服务器异步通信的 Windows 服务,我的想法是传输一些字符串。格式,嗯,真的没那么重要。
所以,在本地网络中,我很酷,我什至写了一个简单的移动应用程序来测试它的请求,它工作正常。
问题是我现在必须让它在网络外部工作,并且要实现它我必须从路由器配置转发端口,这确实不是在用户机器上部署的理想方案.
我读到这是您通常使用套接字的目的,但据我了解,至少对于 .NET,服务器必须具有相同的框架(如果不正确,请纠正我) ,在我的例子中,服务器不是 .NET。
老实说,我对客户端-服务器交互知之甚少,而且在阅读 Microsoft 官方文档时我在概念上有很大的障碍,所以从头开始吧。我从文档中瞥见了 WinSock 和 RPC,但 C# 实现感觉就像胶带,而且真的是最后的手段。
也就是说,我想我需要提出六个问题:
- 纯 HTTP 不是个好主意。对吗?
- 鉴于这种情况,套接字是我需要的吗?如果是,
- 如何在服务器上实现它?还有,
- 它比使用 RPC 更好吗?
- RPC 究竟是如何工作的?在官方文档之前我需要阅读什么?
- 套接字实际上让客户端接收来自本地网络外部的异步调用是做什么的? (需要,我看是可以的)
概念混淆,请见谅,感谢阅读
版主注意:如果这是一个重复的问题,或者偏离主题,或者由于任何其他原因无效,请首先为我指明正确的方向来帮助我。我试着在发帖前好好搜索一下,但由于我对大多数概念都不是很熟悉,所以我可能错过了那个。谢谢!
你应该使用 Websockets。我不知道你为什么说服务器和客户端应该有相同的框架,其实不是这样的,我已经用它与 C# 客户端和 NodeJs 后端。
https://msdn.microsoft.com/en-us/library/system.net.websockets.websocket(v=vs.110).aspx
这里有一些答案:
问题是我现在必须让它在网络外部工作,要实现它我必须从路由器配置转发端口,这确实不是一个理想的场景用于在用户计算机上部署。
仅当从网络外部连接到网络内部(路由器后面)的计算机时才需要端口转发。因此,如果用户机器直接连接到互联网上的计算机,则不需要端口转发。如果来自 Internet 的计算机连接到本地网络中的计算机,则需要转发路由器中的端口。所以它只会影响你的网络。
我读到这是您通常使用套接字的用途,但据我了解,至少对于 .NET,服务器必须具有相同的框架(请纠正我,如果那不是真的),在我的例子中,服务器不是 .NET。
不,来自 .NET 的套接字可以与来自另一个 language/platform 的套接字的任何实现进行通信。只有在通信二进制时,您才应该注意字节序。
老实说,我对客户端-服务器交互知之甚少,而且在阅读 Microsoft 官方文档时我在概念上有很大的障碍,所以从头开始吧。我从文档中瞥见了 WinSock 和 RPC,但 C# 实现感觉就像胶带,而且真的是最后的手段。
在我看来,.NET 具有处理套接字的坚实基础。实施了许多技术。异步套接字对于许多客户端来说非常可扩展
也就是说,我想我需要提出六个问题:
_Plain HTTP 是个坏主意。对吗?__
您为什么认为纯 HTTP 不好?这在服务器使用其他语言编写时非常有用,例如 PHP/Python/ASP.NET 任何使用 HTTP 的语言。如果您要发送用户私人信息,您应该 hash/encrypt it
根据场景,我需要的是套接字吗?如果是,
取决于如何连接到服务器..
如何在服务器上实现它?还,
它比使用 RPC 更好吗?
我只使用了 WebServices 形式的 RPC,你只能在 de server 实现它时使用它。 WebServices 有一些好处。
RPC 究竟是如何工作的?看官方文档之前需要看什么?
在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms950421.aspx
套接字实际上让客户端接收来自本地网络外部的异步调用是做什么的? (需要,我看是可以的)
网内网外通信没有区别。通过套接字直接通信始终是异步的。
此致,
我正在尝试建立一个可以与服务器异步通信的 Windows 服务,我的想法是传输一些字符串。格式,嗯,真的没那么重要。
所以,在本地网络中,我很酷,我什至写了一个简单的移动应用程序来测试它的请求,它工作正常。
问题是我现在必须让它在网络外部工作,并且要实现它我必须从路由器配置转发端口,这确实不是在用户机器上部署的理想方案.
我读到这是您通常使用套接字的目的,但据我了解,至少对于 .NET,服务器必须具有相同的框架(如果不正确,请纠正我) ,在我的例子中,服务器不是 .NET。
老实说,我对客户端-服务器交互知之甚少,而且在阅读 Microsoft 官方文档时我在概念上有很大的障碍,所以从头开始吧。我从文档中瞥见了 WinSock 和 RPC,但 C# 实现感觉就像胶带,而且真的是最后的手段。
也就是说,我想我需要提出六个问题:
- 纯 HTTP 不是个好主意。对吗?
- 鉴于这种情况,套接字是我需要的吗?如果是,
- 如何在服务器上实现它?还有,
- 它比使用 RPC 更好吗?
- RPC 究竟是如何工作的?在官方文档之前我需要阅读什么?
- 套接字实际上让客户端接收来自本地网络外部的异步调用是做什么的? (需要,我看是可以的)
概念混淆,请见谅,感谢阅读
版主注意:如果这是一个重复的问题,或者偏离主题,或者由于任何其他原因无效,请首先为我指明正确的方向来帮助我。我试着在发帖前好好搜索一下,但由于我对大多数概念都不是很熟悉,所以我可能错过了那个。谢谢!
你应该使用 Websockets。我不知道你为什么说服务器和客户端应该有相同的框架,其实不是这样的,我已经用它与 C# 客户端和 NodeJs 后端。
https://msdn.microsoft.com/en-us/library/system.net.websockets.websocket(v=vs.110).aspx
这里有一些答案:
问题是我现在必须让它在网络外部工作,要实现它我必须从路由器配置转发端口,这确实不是一个理想的场景用于在用户计算机上部署。
仅当从网络外部连接到网络内部(路由器后面)的计算机时才需要端口转发。因此,如果用户机器直接连接到互联网上的计算机,则不需要端口转发。如果来自 Internet 的计算机连接到本地网络中的计算机,则需要转发路由器中的端口。所以它只会影响你的网络。
我读到这是您通常使用套接字的用途,但据我了解,至少对于 .NET,服务器必须具有相同的框架(请纠正我,如果那不是真的),在我的例子中,服务器不是 .NET。
不,来自 .NET 的套接字可以与来自另一个 language/platform 的套接字的任何实现进行通信。只有在通信二进制时,您才应该注意字节序。
老实说,我对客户端-服务器交互知之甚少,而且在阅读 Microsoft 官方文档时我在概念上有很大的障碍,所以从头开始吧。我从文档中瞥见了 WinSock 和 RPC,但 C# 实现感觉就像胶带,而且真的是最后的手段。
在我看来,.NET 具有处理套接字的坚实基础。实施了许多技术。异步套接字对于许多客户端来说非常可扩展
也就是说,我想我需要提出六个问题:
_Plain HTTP 是个坏主意。对吗?__
您为什么认为纯 HTTP 不好?这在服务器使用其他语言编写时非常有用,例如 PHP/Python/ASP.NET 任何使用 HTTP 的语言。如果您要发送用户私人信息,您应该 hash/encrypt it
根据场景,我需要的是套接字吗?如果是,
取决于如何连接到服务器..
如何在服务器上实现它?还, 它比使用 RPC 更好吗?
我只使用了 WebServices 形式的 RPC,你只能在 de server 实现它时使用它。 WebServices 有一些好处。
RPC 究竟是如何工作的?看官方文档之前需要看什么?
在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms950421.aspx
套接字实际上让客户端接收来自本地网络外部的异步调用是做什么的? (需要,我看是可以的)
网内网外通信没有区别。通过套接字直接通信始终是异步的。
此致,