WCF 控制台应用程序的性能问题
Performance issue on WCF Console Application
有一个 WCF 服务托管在 .Net 控制台应用程序中。客户端创建到具有回调的服务的双工通道。它以这种方式调用服务:
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));
}
现在,与 WCF Windows Form 应用程序相比,实际任务为 运行 的 CalcTasks 方法显示的性能较低。我能想到的原因之一是我使用 while(true){;} 无限循环的方式,这样应用程序就不会终止并等待来自客户端的调用。不确定这是最好的做法。出于某种原因,我无法使用 Windows 表格申请。
如果有人能阐明为什么这里存在性能问题,我将不胜感激。
谢谢
while (true) {;}
真是倒霉的构造。在控制台应用程序中取 Console.ReadLine()
代替。应用程序将等待直到按下 Enter。
有一个 WCF 服务托管在 .Net 控制台应用程序中。客户端创建到具有回调的服务的双工通道。它以这种方式调用服务:
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));
}
现在,与 WCF Windows Form 应用程序相比,实际任务为 运行 的 CalcTasks 方法显示的性能较低。我能想到的原因之一是我使用 while(true){;} 无限循环的方式,这样应用程序就不会终止并等待来自客户端的调用。不确定这是最好的做法。出于某种原因,我无法使用 Windows 表格申请。
如果有人能阐明为什么这里存在性能问题,我将不胜感激。 谢谢
while (true) {;}
真是倒霉的构造。在控制台应用程序中取 Console.ReadLine()
代替。应用程序将等待直到按下 Enter。