【发布时间】:2018-12-28 19:19:59
【问题描述】:
目前,我创建了一个窗口应用程序,它将根据客户端与服务器通信的原则工作。现在我在考虑沟通的速度。问题是:什么会更快:
- 将两个应用程序连接到数据库并更改给定表中的值,然后使用 select 下载它们?
- 使用 TcpListener 并以这种方式连接应用程序并进行通信? 速度会有很大的不同吗? 它是关于发送消息 1,2,3,4 并基于它们,设置变量的值。
我还想知道一件事。如果我想使用 TcpListener 连接应用程序,那么我将无法使用全局地址,只能在 LAN 中工作。除非你在服务器路由器上设置了 DMZ。
还有其他方法可以发送此类数据吗?我会问一些例子。
使用 TCPListener 的例子:
IPAddress ip = Dns.GetHostEntry(localhost).AddressList[0];
TcpListener server = new TcpListener(ip, Convert.ToInt32(8080));
cpClient client = default(TcpClient);
【问题讨论】:
-
从设计的角度来看,我会让客户端与服务器应用程序通信,而只让服务器与数据库通信。会不会慢一些?这取决于服务器和数据库的位置。如果数据库在同一台机器上,那么它不会比客户端直接访问数据库慢多少。如果数据库是远程的,那么服务器必须等待数据库的结果才能返回任何内容给客户端。
-
数据库不是用来通信的,循环池化数据很糟糕。
-
@JacekCz 所以你建议使用不在局域网内的全局 IP 地址与 beetwen 客户端-服务器通信 - 客户端服务器上没有 cinfugre DMZ
-
如果不了解您要达到的目标的更多细节,就很难回答这样的问题。发送消息的频率,发送消息和设置值之间的延迟有多重要。正如您所提出的,这个问题有很多解决方案 - 以及编写自己的代码 - 可能值得看看现有的框架,如 WCF。
-
发送 0,5 - 1 秒,不接受延迟:P
标签: c# sockets tcplistener