2011-03-23 80 views
0

我正在开发一个通用日志记录对象,将用于我们所有将来的应用程序中。它会向MSMQ提交一个日志,然后将其异步发送到我们的服务器,该服务器将该消息记录到数据库。与WCF的异步通信

目前我正试图了解这将如何工作的体系结构。在客户端,一旦日志被提交给MSMQ,MSMQ会将日志提交给WCF发送给服务器(我假设将有另一个WCF端点接收消息)?基本上,我在问日志会经过的服务顺序是什么?我已经阅读了有关WCF的netMsmqBinding,这是我需要为了从MSMQ发送日志到WCF,然后我可以使用basicHttpBinding从WCF发送到服务器端的WCF?

喜欢的东西:

[客户端应用程序] - >日志 - > MSMQ - > WCF ----------> [服务器] WCF - > DB

回答

2

WCF具有netMsmqBinding那可以处理客户端和服务器消息。如果你使用它,MSMQ对你来说几乎是看不见的。你将发送消息给WCF服务,它将被放到MSMQ中,服务器端的WCF将选择它并像其他任何绑定一样调用方法。

如果您有任何创建WCF服务的经验,您应该做同样的事情,但也要创建MSMQ队列。

这里是有用的链接:http://sukasom.wordpress.com/2008/08/18/wcf-and-msmq-part-1/http://msdn.microsoft.com/en-us/library/ms752217.aspx

+0

我设置在客户端或服务器端的端点netMsmqBinding?我现在看到的方式是,我根本不需要服务器端的MSMQ。还是我离开?客户端如何知道服务器收到该消息,以便可以从客户端的MSMQ中删除该消息? – jnevelson 2011-03-23 16:40:35

+0

@jonathan MSMQ服务是独立服务。从物理上讲,它可以在任何地方运行,与服务器,客户端在同一台PC上运行,也可以单独运行它必须有永久地址或主机名,就是这样。 MSMQ是单向通信,您无法检查该消息是从客户端传送的。实际上MSMQ是安全的消息传递,基础设施控制交付。 – Andrey 2011-03-23 16:43:02

+0

@jonathan你在两边都设置了netMsmqBinding端点。 – Andrey 2011-03-23 16:44:24