我必须在两台计算机之间进行许多序列化通信,我现在正在使用 WCF,但是完成一个操作所需的时间是 10k - 20k 滴答声,这对我的通信来说太多了,我也尝试过直接 TCP/ IP 序列化的结果要好得多,每次操作大约 1k-2k 滴答。我真的很想坚持使用 WCF,因为它很简单,我还注意到 WCF 不能同时处理多个操作,这也是需要的。有什么办法可以做到这一点,可以用其他东西然后WCF?还是我坚持编写自己的 TCP/IP 序列化通信?
这就是我提出请求的方式:
pipeFactory = new ChannelFactory<IBlissRequest>(binding, new EndpointAddress(ep));
pipeProxy = tempPipeFactory.CreateChannel();
((IClientChannel)pipeProxy).Open();
Stopwatch sw = new Stopwatch();
sw.Restart();
string returnString = pipeProxy.SystemRequest("name", "somthing more", "some data");
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
这是使用的接口:
[ServiceContract]
public interface IBlissRequest
{
[OperationContract]
string SystemRequest(string InstanceName, string MethodName, string Parameters);
}
接口中执行的方法是空的,所以几乎不消耗tick