在Windows机器上互连2个.NET服务的最佳方法是什么?

时间:2011-03-14 22:46:22

标签: wcf networking lucene msmq filesystemwatcher

我正在寻找一些关于在两台联网的Windows服务器之间交换信息的最佳/有效方法的建议......

我们有一个巨大的图片存档的搜索引擎和一个使用Lucene索引的网站,该网站托管在同一个(第一个)Windows服务器上,基于Apache的网站充当我们用户的搜索引擎客户端。

我们有第二台服务器,它包含我们图片存档的第二部分,我们在其中添加由Windows服务处理的新图片,提取元数据,准备缩略图以及必须从第一部分更新我们的Lucene索引服务器...

Windows服务基本上使用FileSystemWatcher组件来跟踪正在添加(以千计)或删除的各种文件,它必须更新我们的搜索引擎索引以包含新添加的文件(使我们可以看到它们最终用户)或根据文件删除事件从索引中删除它们......

你能否建议一些有效的方法来更新(通知),也许创建一个本地小索引,然后将其与主要索引合并...我正在努力升级系统以提高效率并且能够处理数千张图像并尽快更新索引。

在当前版本中,我们在自定义(随机选择)端口上使用WCF和NetTcpBinding与我们的主服务器通信并更新它的索引,但是:这两台服务器是联网的,我可以简单地共享主要的Lucene索引器文件夹对我们的第二台服务器是可见的,它可以在它准备好时直接更新它。现在我倾向于这个选项。它不是很灵活,但很可能网络状态(配置)不会改变(+我将提供配置文件)

我还能用什么? :) MSMQ,IIS(Web服务)?,WCF(再次......?)虽然目前我专注于使FileSystemWatcher组件完美运行(不丢失任何文件)并处理具有最高可靠性的传入图片,非常很快我就会来到这个“网络”部分...

任何想法都将非常感激。 (对不起这个问题,但这次我不想错过任何好主意)并提前感谢你!

1 个答案:

答案 0 :(得分:1)

这部分声音就像NServiceBus的工作,NServiceBus建立在排队基础设施之上 - 例如MSMQ。这个想法是,当系统的某个部分发生某些事情时,它会发布一个系统其他部分听到的事件。然后,其他部分接收此事件(通常通过MSMQ)并根据需要更新自己的本地存储。

http://www.nservicebus.com/