WCF 宿主程序是否为服务打开第二个线程?
Are WCF host programs opening a second thread for the service?
我一直在尝试了解 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 那样加快速度,我是在问默认行为是什么。
这意味着 Open() 会生成一个包含传输 receive-loop 或注册异步回调(取决于绑定)的新线程。
您可以考虑阅读 multi-threading 和异步编程以更好地掌握这一点。
希望对您有所帮助!
当您调用 ServiceHost class 的 Open 函数时,它会在配置的终结点上创建并打开服务的侦听器。它异步执行此操作,并将控制权交还给调用线程。
所以你的问题的答案是:
Does the service run on a separate thread that opens behind the scenes?
是
when my client calls the service, does that pause the host program?
没有
我一直在尝试了解 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 那样加快速度,我是在问默认行为是什么。
这意味着 Open() 会生成一个包含传输 receive-loop 或注册异步回调(取决于绑定)的新线程。
您可以考虑阅读 multi-threading 和异步编程以更好地掌握这一点。
希望对您有所帮助!
当您调用 ServiceHost class 的 Open 函数时,它会在配置的终结点上创建并打开服务的侦听器。它异步执行此操作,并将控制权交还给调用线程。
所以你的问题的答案是:
Does the service run on a separate thread that opens behind the scenes?
是
when my client calls the service, does that pause the host program?
没有