2012-01-22 63 views
0

我想知道是否可以根据以下要求得到一些想法: - 一种服务,它轮询多个数据库上的日志表以进行更改,然后将通知发布到任意数量的轻量级客户端运行在各种计算机上 - 发送的消息很小,只包含有关事件时间戳和事件性质的数据。 - 我希望在PC上安装桌面客户端非常容易,所以不希望它对.NET 4框架以外的第三方组件有很大的依赖。设计发布者/订阅者体系结构

这是我自己的想法,到目前为止: 我玩过NServicebus,这似乎符合我想要的法案interms。 我正在考虑使用某种异步方法轮询在发布者中进行轮询的每个数据库,然后创建订阅者(客户端)随后会收到的消息。 Nservicebus对此是否太多了呢?目前我并不要求客户端只会收听和收到消息,因此他们不会真的发回任何东西。 我意识到,如果我要安装NServicebus,那么MSMQ和其他位也需要安装在每个客户端上。 所以希望这些都不是资源饥渴。 我已经做了一些阅读并下载了一些代码来玩,但在这方面并没有太多的经验,所以任何建议都是有用的。

+0

你看过使用netTcpBinding的WCF回调吗?每个客户都必须注册该服务,但实现相对容易,轻量级且不需要第三方软件。 – Lloyd

+0

@劳埃德,不正确没有。我确实查看了全双工服务之前的其他内容,但我猜也应该看看 – Rubans

回答

1

你描述可以用纯.NET框架来实现什么......恕我直言NServiceBus是相当“吃不消”为你描述...

为了实现这样的自己的机制,你可以使用UDP广播.. 。虽然UDP不给交货保证它通常是在LAN可靠......只有你可能需要的是有防火墙规则允许你UDP端口照顾方面...

至于与零件数据库:

你不会说这是什么样的数据库......但一些数据库(如SQL Server 2008,Oracle等)带有事件/ noti fication机制,这将使投票部分陈旧...

+0

感谢您的回复,我计划连接SQL Server 2008 dbs。然而,我不能保证我能够使用像服务代理这样的功能,只有我可以肯定的是我将读取访问表。 – Rubans

+0

此外,防火墙问题也许是一个因素,因为我可能不得不在假设下工作,我将无法更改任何防火墙设置。但是,这也可能会影响msmq。 – Rubans

+1

@Rubans如果你不能改变任何防火墙设置,那么你需要使用任何可用的连接选项......所以问题就变成了什么样的连接在运行时可用(在决定技术之前)? – Yahia

0

我个人认为这是某种ESB的情况。从使用已建立的ESB(如NserviceBus使用的MSMQ)中获得的好处是您可以获得消息持久性等内容。

我也认为,使用ESB来处理通信层有助于通过分离的两个域(出版领域和消费领域)多一点,以提高解决方案的整体架构比你可以用自定义的网络解决方案