我一直在努力了解WCF服务和主机。我制作了一个简单的主机程序来托管我的简单服务。它工作正常,但我不明白主机程序在打开服务后如何继续完成不相关的任务。该服务是在一个在幕后打开的单独线程上运行的吗?或者当我的客户端调用该服务时,是否会暂停主机程序?我没有看到任何记录。
namespace MyHostProgram
{
class Program
{
static void Main(string[] args)
{
var host = new ServiceHost(typeof(MyServices.Service1));
host.Open();
while (true)
{
Console.Writeline("Doing other tasks in host program");
}
host.Close();
}
}
}
请注意,我并不是要求添加另一个线程会加快速度,如WCF Service and Threading,我问的是默认行为是什么。
答案 0 :(得分:0)
当您调用ServiceHost类的Open函数时,它会在配置的端点上创建并打开服务的侦听器。它以异步方式执行此操作,并将控制权返回给调用线程。
所以问题的答案是:
服务是否在一个在幕后打开的单独线程上运行?
是
当我的客户端调用该服务时,是否会暂停主机程序?
没有
答案 1 :(得分:-1)
所有这些意味着Open()产生一个新线程,其中包含传输接收循环或异步回调寄存器(取决于绑定)。
您可以考虑阅读多线程和异步编程,以便更好地掌握这一点。
希望这有帮助!