Что было бы лучшим способом для соединения 2 служб .NET на компьютере с Windows? - PullRequest
0 голосов
/ 15 марта 2011

Я ищу несколько предложений о том, какой будет наилучший / эффективный метод обмена информацией между двумя сетевыми серверами Windows ...

У нас есть поисковая система для огромного архива изображений и веб-сайт, использующий индекс Lucene , который размещен на том же (первом) сервере Windows, а веб-сайт на основе Apache выполняет роль клиент поисковой системы для наших пользователей.

У нас есть второй сервер, который содержит вторую часть нашего архива изображений, где мы добавляем новые изображения, которые обрабатываются службой Windows, извлекают их метаданные, готовят эскизы и которые должны обновлять наш индекс Lucene с первого сервер ...

Служба Windows в основном использует компонент FileSystemWatcher для отслеживания различных файлов, которые добавляются (в тысячах) или удаляются, и она должна обновлять индекс нашей поисковой системы, чтобы включать в себя вновь добавленные файлы (сделать их видимыми для наших конечные пользователи) или удалить их из индекса на основе событий удаления файлов ...

Не могли бы вы предложить некоторые эффективные методы для обновления (уведомления), возможно, создать локальный небольшой индекс, а затем объединить его с основным ... Я работаю над обновлением системы, чтобы она была более эффективной. и иметь возможность работать с тысячами изображений и обновлять индекс как можно скорее.

В текущей версии мы использовали WCF с NetTcpBinding на пользовательском (произвольно выбранном) порту для связи с нашим главным сервером и обновления его индекса, но: 2 сервера объединены в сеть, и я мог бы просто поделиться основными индексами Lucene папка, которая будет видна нашему 2-му серверу, который может напрямую обновить его, когда он будет готов Сейчас я склоняюсь к этой опции . Это не очень гибко, но, скорее всего, состояние сети (конфигурации) не изменится (+ я предоставлю файл конфигурации) .

Что еще я мог бы использовать? :) MSMQ, IIS (веб-сервис) ?, WCF (снова ..?) Хотя в данный момент я сосредоточен на том, чтобы заставить компонент FileSystemWatcher работать без нареканий (чтобы не пропустить ни одного файла) и обрабатывать входящие изображения с высочайшей надежностью, очень скоро я перейду к этой "сетевой" части ...

Любые идеи будут очень цениться. (Извините за такой вопрос, но я бы не хотел упустить какие-либо действительно хорошие идеи на этот раз) и заранее благодарю!

1 Ответ

1 голос
/ 15 марта 2011

Части этого звучат как работа для NServiceBus, который построен поверх инфраструктуры очередей, такой как MSMQ.Идея заключается в том, что когда что-то происходит в одной части системы, оно публикует событие, которое слушают другие части системы.Затем эти другие части получают это событие (обычно через MSMQ) и обновляют свое собственное локальное хранилище в соответствии со своими потребностями.

http://www.nservicebus.com/

...