2012-04-07 2 views
0

У нас есть служба Windows Core, обслуживающая около 9 служб WCF и выступающая в качестве клиента для других 3 служб WCF. У нас есть интерфейсный веб-сайт, который взаимодействует с этой службой Windows через WCF.WCF Windows Service и невосприимчивый пользовательский интерфейс

В некоторых точках службы Windows выполняют некоторые тяжелые операции, что приводит к 100% использованию ЦП, обычно разделяет 60-40 между службой Windows и SQL-сервером.

Здесь происходит соединение/запросы WCF между веб-сайтом, и это приводит к очень несовместимому пользовательскому интерфейсу.

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

Наша основная проблема заключается в том, что нам нужно придерживаться этого сценария развертывания, где все службы Windows, веб-сайт и SQL-сервер работают на одной машине. Мы должны поддерживать гибкий интерфейс даже при 100% использовании ЦП. Я не уверен, где начать искать исправление для этого ...

+0

Что нужно для работы с потоками в пользовательском интерфейсе и на сервере Параллельные вычисления, если у вас много ядер процессора –

+1

Как насчет запросов на обслуживание в очереди? Вы можете поставить запрос в очередь и использовать что-то вроде websockets для уведомлений пользовательского интерфейса. Что касается загрузки вашего процессора, вы можете попробовать загрузить балансировку вашего сервера обслуживания. Однако, это может стать сложным, так как у вас также есть сервер БД, сидящий на нем. –

ответ

2

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

Типичные проблемы, с которыми вы сталкиваетесь, типичны, когда вы пытаетесь сбалансировать конфликтующие потребности в ресурсах с высокой громкостью и низкой задержкой вместе в одном процессе.

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

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

Смежные вопросы