我目前正在使用Windows Form Application开发Windows客户端,从Windows机器收集一些数据。我需要将此数据发送到服务器。但我不知道最好的方法是什么。我目前正在尝试使用WCF Web Service来获取数据并返回true或false。但我需要学习将数据发送到服务器的最快方法。客户必须可靠,快速。我有什么选择或最佳方式。服务器仅将数据发送回true或false。
答案 0 :(得分:2)
如果我有这样的任务,我也会使用WCF网络服务。
我要做的唯一区别是:输入void并在出错时抛出异常。
答案 1 :(得分:1)
您可以使用基于TCP或UDP等套接字的低级网络传输协议,但您必须自己管理转换和序列化。
在C#中,您将使用TcpClient和TcpListener类,并使用某种序列化程序(在此示例中为BinaryFormatter)序列化对象
ServerCode:
...
TcpListener listener = new TcpListener(8080);
listener.Start();
using (TcpClient client = listener.AcceptTcpClient())
{
BinaryFormatter formatter = new BinaryFormatter();
//Assuming the client is sending an integer
int arg = (int)formatter.Deserialize(client.GetStream());
... //Do something with arg
formatter.Serialize(result); //result is your boolean answer
}
...
ClientCode:
...
using (TcpClient client = new TcpClient(ipaddress, 8080) //ipaddress is the ip address of the server
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(client.GetStream(), 12) //12 is an example for the integer
bool result = formatter.Deserialize(client.GetStream());
... //do something with result
}
...
但正如您所看到的,最快(UDP可能更快,但不保证发送数据)的方式并不是最简单的(并不总是最好的)。
因此,对于Windows窗体项目,我会使用某种“现成的”RMI / RPC API,如WCF或ASP.Net Web服务
答案 2 :(得分:1)
我会看看RhinoServiceBus。它实现起来快速且相当容易。如果您不喜欢,那么我也会使用WCF。