Вот сценарий. У меня есть приложение, которое может быть в постоянной связи с сервером по нескольким причинам. Есть три общих набора объектов, которые мне нужно получить или отправить на веб-сервер.Quartz .Net вопрос архитектуры
Объекты бизнес-данных. Это, по сути, данные, которые сбрасываются с сервера на клиентские компьютеры и хранятся в локальной базе данных. ЕСЛИ пользователь обновляет данные на своем локальном компьютере, он становится помеченным и должен быть отправлен для синхронизации с сервером. Примерно 6 пользовательских классов, которые должны будут вытащить данные и отправить данные на сервер (при необходимости).
Файлы. Как и указано, эта синхронизация предназначена для файлов. Файлы могут быть загружены на сервер. Но что более важно, файлы могут быть загружены клиенту. Будут файлы, которые автоматически отправляются с сервера и других файлов, которые будут доступны по запросу.
Запрос на подключение/Логин. Эти синхронизаторы будут извлекать информацию пользователя с сервера и регулярно проверять наличие обновленной информации и проверять разрешения. Также должна быть проверка, чтобы убедиться, что приложение подключено к серверу, и если соединение потеряно, тогда обработайте его соответствующим образом.
Я очень новичок в Quartz, и я стараюсь придумать, как наилучшим образом настроить эти три различные синхронизации, которые я хочу выполнить. У меня есть несколько вопросов.
Если бы я хотел несколько пулов потоков, хотел бы я просто создать 3 отдельных планировщика? Как я могу выполнить это с помощью конфигурации, или мне нужно, чтобы она была закодирована, чтобы явно задавать свойства Quartz до каждого экземпляра фабрики?
Синхронизация объектов бизнес-данных будет самой тяжелой нагрузкой в разы. Когда пользователь сначала входит в систему или получает дополнительные разрешения, им может потребоваться загрузить до 10K объектов/записей с сервера. Это было бы редким явлением, и в идеале пользователь подключился бы, все данные будут загружены, а через 5-10 минут они смогут использовать приложение для своих целей. Эта синхронизация должна будет постоянно проверять сервер, чтобы узнать, являются ли они новыми данными и контролируют локальные данные, чтобы увидеть, нужно ли отправлять новые данные на сервер. Имеет ли смысл иметь фабрику обрабатывать все это с собственным пулом потоков, скажем, 10 потоков?
В конечном счете, я просто пытаюсь выяснить, как изначально планировать весь этот процесс и разделить вещи, чтобы легко управлять ими и делать это правильно. Это для доказательства концепции, и любая помощь будет оценена по достоинству. Пожалуйста, не стесняйтесь критиковать любой из вышеперечисленных.
Спасибо!
Вы уверены, что вам нужны пользовательские пулы потоков? Звучит как преждевременная оптимизация для меня. –
Ну, мышление заключается в том, что, хотя бизнес-объекты могут загружаться или загружаться, случайный запрос файла может быть быстро обработан. Сначала я думал о том, что задание задания на файл имеет более высокий приоритет, но наличие выделенных пулов потоков для различных разделов кажется, что он может быть более чистым и более эффективным во время интенсивной обработки. Есть ли проблема с использованием нескольких пулов потоков или плохой дизайн? – tc44