WCF控制台应用程序的性能问题

时间:2015-09-11 13:39:45

标签: c# .net wcf console-application

在.Net控制台应用程序中托管了一个WCF服务。客户端为具有回调的服务创建双工通道。它以这种方式调用服务:

var task = Task<object>.Factory.FromAsync(clientRay.Proxy.BeginCalc, clientRay.Proxy.EndCalc, lst_RaySrvcDetails, state);

以下是服务控制台应用的主要方法:

static void Main(string[] args)
{
     ServiceHost srvcHost = new ServiceHost(serviceInstance, uriBase);
     //
     //Here the service is hosted
     //

     while(true)
     {
        ;
     }
}  

MyService.cs通过以下方法接收调用:

public IAsyncResult BeginCalc(List<MBSWaldram.DataAccessLayer.Framework.ServiceDetails> input,
                    AsyncCallback callback, object state)
{
   calcInput = input;

   // Create a task to do the work
   var task = Task<object>.Factory.StartNew(this.CalcTasks, state);

   return task.ContinueWith(res => callback(task));
}

现在运行实际任务的CalcTasks方法与在WCF Windows窗体应用程序上使用它相比,显示的性能较低。我能想到的一个原因是我使用while(true){;}无限循环的方式,以便应用程序不会终止并等待来自客户端的调用。不确定这是最好的。出于某种原因,我无法使用Windows Form Application。

我很感激,如果有人能解释为什么会出现性能问题。 感谢。

1 个答案:

答案 0 :(得分:2)

while (true) {;}真是不走运的建筑。在控制台应用程序中,请改为Console.ReadLine()。应用程序将等到Enter press。