2012-07-18 21 views
1

我用netMsmqBinding使用WCF。当serviceHost打开哪种情况发生:WCF ServiceHost是否充当侦听器或轮询器?

  1. serviceHost注册为收听到MSMQ - 每个新到达的消息到MSMQ,MSMQ会通知所有它的听众。
  2. serviceHost将轮询MSMQ新的消息 -

开放服务主机

using (var serviceHost = new ServiceHost(typeof(Service))) 
{     
    serviceHost.Open(); 

    Console.WriteLine("The service is ready."); 
    Console.WriteLine("Press <ENTER> to terminate service."); 
    Console.ReadLine();  
} 

如果第一个场景是真实的,它是如何注册到MSMQ。我没有找到任何可以深入解释事情发生的文章。我会很感激任何文章。

回答

0

此实例中的ServiceHost是一个队列侦听器。

当在队列中接收到消息时,WCF堆栈将导致您的服务操作被调用,从而将队列消息传递到服务操作中。

... MSMQ会通知所有听众。

是不正确的。如果在同一个队列中有多个侦听器,则只有其中一个会收到该消息。

+0

WCF如何将自己注册为MSMQ的侦听器? MSMQ是否有像MSMQ.OnMessageArrived事件和WCF resteres它? – theateist 2012-07-18 14:54:46

+0

我不知道。你为什么担心这个?当然,WCF开发团队当时使用的是最合适的机制。 ] – 2012-07-18 15:00:53

相关问题