Сколько сервисов должно работать на локальном сервере?
Это зависит от многих факторов, но я бы, как правило, использовал как можно меньше услуг, потому что обслуживание и наблюдение за одной службой - это меньше работы для администратора, чем наличие множества служб.
Сколько сервисов должно работать на рабочих станциях?
Я бы использовал только один, потому что это сделает его единственной точкой отказа. Пользователь заметит, если служба на рабочей станции не работает. В этом случае необходимо запустить только одну службу.
Поскольку некоторые службы должны будут запрашивать локальную базу данных SQL, откуда службы должны читать строку подключения? реестр? Конфиг файл? Любое другое место?
Обычно я бы помещал строку подключения в app.config. .NET Framework также предлагает средства для шифрования строки подключения.
Если один сервис выделен для выполнения нескольких задач, например, как служба планировщика, каким должен быть наилучший / оптимальный способ в отношении производительности для управления запланированными задачами a. Сборка библиотек классов .NET для запланированных задач и их раскрутка в отдельных потоках. B. Сборка исполняемых сборок .NET для запланированных задач и запуск исполняемых файлов
б. легче спроектировать и реализовать. Это дает вам возможность использовать планировщик Windows. В этом случае вам нужно подумать о проблеме, когда планировщик Windows запускает исполняемый файл, когда предыдущий запуск еще не закончился. Это приводит к двум процессам, которые могут делать то же самое. Если это не проблема, то оставайтесь в этом дизайне. Если это проблема, рассмотрите решение а.
Для решения а. взгляните на Quartz.NET , который предлагает вам множество расширенных возможностей планирования. Также рассмотреть возможность использования доменов приложений вместо потоков, чтобы сделать сервис более устойчивым.
Если вы не получаете прав администратора на локальном сервере, подумайте о способах перезапуска службы без менеджера управления службами. Предоставьте привилегированному пользователю возможность повторно инициализировать службу с клиентского компьютера.
Также подумайте о способах перезапуска только одной части службы, если одна служба выполняет несколько задач. Например, служба ведет себя странно, потому что задача обновления выполняется неправильно. Если вам нужно перезапустить весь сервис, чтобы исправить это, все пользователи могут узнать об этом. Предоставьте некоторые средства для повторной инициализации только задачи обновления.
Самое важное: Не следуйте ни одному из моих советов, если вы найдете более простой способ достижения своих целей. Начните с простого дизайна. Не переигрывай! Решения с (несколькими) сервисами и расписанием, как правило, усложняются с каждой добавленной функцией. Особенно, когда вам нужно, чтобы службы общались друг с другом.