2010-02-16 3 views
2

У меня есть ситуация, когда информация о пользователе хранится в кеше веб-приложений и когда эта информация обновляется в одном приложении - я хочу уведомить другие приложения (выполняющиеся на то же устройство), что данные должны быть удалены из его кеша, чтобы его можно было обновить. В основном мне нужно синхронизировать кешированные данные в нескольких приложениях asp.net.Связь между приложениями ASP.NET на одном компьютере

Я начал путь к использованию централизованного веб-сервиса, чтобы помочь координировать оповещения, но он оказался более сложным, чем я думаю, это должно быть.

Есть ли способ, которым одно приложение asp.net может легко перейти к другому в том же поле, чтобы очистить элемент из кеша?

Есть ли лучший способ получить общую кешированную информацию, чем использовать кеш приложения?

Я действительно хочу создать способ для общения приложений в связном режиме - я смотрел на nservice bus, но зависимость от MSMQ меня пугала - мой клиент имел плохой опыт работы с MSMQ и не хочет поддерживать приложение, которое это требует.

Предложения? Майкл

ответ

1

Есть коммерческие распределенные доступные для .net кроме Microsoft Velocity кэши - NCache, слаженности и т.д.

+0

спасибо за ссылки - я посмотрю. Я согласен, что распределенный кеш - идеальное решение и увидит, могу ли я заставить моего клиента согласиться с тем, что нам нужно его реализовать. – MIantosca

-1

насчет COM/DCOM, использование имен system.runtime.remoting

+0

Microsoft предложить WCF вместо удаленного доступа. Лично я бы не хотел делать COM, если бы не было другого варианта (и услуги, безусловно, являются другим вариантом) – Murph

+0

Remoting кажется очень плохой идеей для меня. Что произойдет, если одно из приложений отключится? Что должно делать вызывающее приложение, когда принимающее приложение не отвечает сразу. Решение будет хрупким, или, по крайней мере, будет сложно построить его таким образом, чтобы он не был хрупким. – Steven

3

общую базу данных, вероятно, будет причинить вам наименьшую боль.

Редактировать

Примечание: ASP.NET позволяет делать "Очистка кэша" запускает на изменения SQL-сервера. Должен быть быстрый поиск в примерах кеша в MSDN, чтобы найти несколько примеров. Таким образом, когда информация пользователя, хранящаяся в кэше, изменяется в БД, локальная кеш-копия очищается и перезагружается из БД.

+0

@ Хоган: Я делаю ставку на производительность. Все приложения всегда обновляются, когда кеш не используется, но в этом случае источник данных должен запрашиваться при каждом запросе, что может вызвать проблемы с производительностью. – Steven

+0

Я фактически храню пользовательский принцип пользователя в кеше - процесс инициализации принципала довольно интенсивный, поэтому я кэширую его на 20 минут, чтобы последующие запросы не попадали в db. Интересно, будет ли использование зависимости кэша sql работать для этого ситутации. – MIantosca

+0

@Mlantosco: Я уверен, что это так: я использовал что-то подобное для пользовательского расширения SSO один раз, он работал хорошо. Вы находитесь в хорошем месте с пользовательским принципом, потому что вы уже настроили систему аутентификации ... – Hogan

3

Я согласен с Хоганом. Лучше всего использовать общую базу данных. Я хочу добавить к этому, что при использовании SQL Server вы можете использовать SQL Cache Dependency. Этот механизм SQL Server позволяет уведомлять приложения таким образом, что используемые кэши могут быть исключены непосредственно после внесения изменений в данные.

+0

lol - Я только что отредактировал свой ответ, чтобы рассказать о зависимости SQL Cache ... ленив, чтобы получить ссылку tho. – Hogan

0

Как насчет Velocity? Это распределенный кеш, который работает как между серверами, так и между приложениями. Он имеет управление PowerShell и всевозможную документацию, чтобы ускорить работу и быть более удобным в долгосрочной перспективе.

+0

Я не думаю, что был выпущен AppFabric (скорость которого теперь является частью) - я бы хотел использовать распределенный кеш, такой как скорость, но мой клиент не пойдет за кодом без RC/RTW/RTM для чего-то такого центрального для всех своих Программы. Я думаю, что он все еще в CTP – MIantosca