Повышение скорости в приложении winform и WCF с помощью Caching - PullRequest
1 голос
/ 08 июля 2011

Мы предоставляем критически важное приложение для клиента. Это приложение winforms от clickonce, которое использует несколько служб WCF, взаимодействующих с базой данных Oracle. Служба размещается на сервере приложений Oracle с двумя серверами веб-кэша, расположенными спереди для балансировки нагрузки. База данных находится на другом отдельном компьютере.

Дело в том, что приложение теперь имеет низкую производительность, и нам нужно ускорить его. Мы испробовали множество методов: оптимизировать запросы с добавлением индексов при анализе планов объяснения, сократить количество обращений в службу поддержки от клиента и профилировать клиентское приложение на предмет ошибок.

Но мне бы очень хотелось, чтобы два настроили слой кэширования поверх базы данных или WCF. Данные являются критическими и изменяются довольно часто, поэтому необходимо получать самые последние данные по всем запросам. Поэтому, когда данные изменяются в базе данных, кэш-память должна немедленно истекать. Запросы сложны с двумя 14-15 объединениями ...

Как правильно сделать это и какие инструменты / рамки мне следует использовать? Я слышал о memcached .. это хорошо?

Ответы [ 2 ]

1 голос
/ 09 июля 2011

Перед добавлением нового инструмента убедитесь, что вы правильно используете все доступное вам кэширование Oracle.

Существует буферный кеш , Кэш результатов функции PL / SQL , Кэш результатов запроса клиента , Кэш результатов запроса SQL , материализованные представления и переменные связывания помогут кэшировать планы запросов.

1 голос
/ 09 июля 2011

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

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

  1. Имейте кеш-сервер, который использует что-то вроде кеша ASP.NET, с которым серверы приложений обращаются для получения и обновления данных
  2. Использование продукта кэширования для поддержки кэша

Если вы используете продукт для кэширования, на рынке есть номер: memcached , gemfire , согласованность , Windows Server AppFabric Caching и больше

Приятной особенностью AppFabric Caching (проект, формально известный как Velocity) является то, что он бесплатен с Windows Server и очень дружественен к .NET (хотя он новее, чем некоторые другие, и поэтому вы можете сказать, что он менее проверен)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...