Кварц. Net вопрос архитектуры - PullRequest
1 голос
/ 14 января 2011

Вот сценарий.У меня есть приложение, которое может быть в постоянном соединении с сервером по нескольким причинам.Есть три основных набора объектов, которые мне нужно получить или опубликовать на веб-сервере.

  1. Объекты бизнес-данных.По сути, это данные, которые передаются с сервера на клиентские машины и хранятся в локальной БД.Если пользователь обновляет данные на своем локальном компьютере, они помечаются и должны быть отправлены для синхронизации с сервером.Существует около 6 пользовательских классов, которые должны будут извлекать данные и отправлять данные на сервер (при необходимости).

  2. Файлы.Как говорится, эта синхронизация для файлов.Файлы могут быть загружены на сервер.Но что более важно, файлы могут быть загружены на клиент.Будут файлы, которые автоматически отправляются с сервера, и другие файлы, которые будут доступны по запросу.

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

Я очень новичок в Кварце, и япытаясь придумать лучший способ настроить эти 3 различные синхронизации, которые я хочу, чтобы произошло.У меня есть несколько вопросов.

  1. Если бы я хотел иметь несколько пулов потоков, я бы просто хотел создать 3 отдельных фабрики планировщика?Как мне сделать это с помощью конфигурации, или мне нужно, чтобы она была закодирована для явной установки свойств Quartz перед каждым созданием фабрики?

  2. Синхронизация объектов бизнес-данных будеттяжелая нагрузка в разы.Когда пользователь впервые входит в систему или получает дополнительные разрешения, ему может потребоваться загрузить до 10 000 объектов / записей с сервера.Это было бы нечастым случаем, и в идеале пользователь должен был бы подключиться, все данные были бы загружены, и через 5-10 минут они могли бы использовать приложение в своих целях.Эта синхронизация должна постоянно проверять сервер на наличие новых данных и отслеживать локальные данные на предмет необходимости отправки новых данных на сервер.Имеет ли смысл иметь фабричную обработку всего этого с собственным пулом потоков, скажем, 10 потоков?

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

Спасибо!

1 Ответ

1 голос
/ 20 января 2011

Вы можете подключить пользовательский пул потоков, внедрив Quartz.Spi.IThreadPool. Планировщик имеет только один IThreadPool, но вы можете иметь возможность маскировать несколько пулов потоков за этим единственным интерфейсом, хотя для реализации потребуется информация о запланированных заданиях, чтобы получить их для каждого потока.

Реализация по умолчанию, Quartz.Simpl.SimpleThreadPool, имеет фиксированное (конфигурируемое) число потоков с одинаковым (конфигурируемым) приоритетом.

В противном случае, вы могли бы иметь несколько планировщиков, как вы сказали. Это проще, вы бы просто имели несколько независимых фабрик планировщика, но они не должны делиться каким-либо состоянием.

...