C # Несколько консольных приложений и изоляция - PullRequest
1 голос
/ 07 февраля 2012

Если я разверну консольное приложение C #, которое выполняет следующее:

  • читает сообщение (ActiveMQ)
  • обрабатывает содержимое сообщения
  • записывает результат в базу данных (SQL Server)

Могут ли возникнуть проблемы с многократным запуском, например, Что делать, если я создал командный файл и запустил 100 экземпляров? Будет ли какой-либо конфликт, учитывая, что каждый экземпляр будет использовать одни и те же общие библиотеки DLL, например, Apache.NMS.ActiveMQ.

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

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

1 Ответ

2 голосов
/ 07 февраля 2012

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

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

...