Подтвердить что ты не робот

Каков масштаб статического класса?

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

Поскольку процессы являются отдельными, будут ли они выполняться в разделе "Разделы приложений", следовательно, будут разделены статические "экземпляры"?

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

4b9b3361

Ответ 1

Несколько потоков будут совместно использовать экземпляр. По этой причине статический класс может быть удобным для передачи состояния между потоками, но вам нужно быть очень осторожным, чтобы не вводить условия гонки (Monitor или lock ваши свойства).

Однако несколько процессов должны быть в отдельных AppDomains, поэтому каждый из них имеет свой собственный экземпляр.

Ответ 2

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

Ответ 3

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

Нет, все они имеют отдельные экземпляры.

"Поскольку процессы являются отдельными, будут ли они выполняться в разделе" Разделы приложений ", следовательно, будут разделены статические" экземпляры "?

Да.

Ответ 4

Объем статического класса ограничен областью приложения. У каждого домена приложения будет своя копия любых статических переменных, которые у вас могут быть. Если ваши "процессы" - это потоки в одном домене приложения, они будут делиться статическими значениями. Но если они являются фактическими отдельными процессами Windows, тогда у них будут разные домены приложений и, следовательно, отдельные копии.

Ответ 5

Вы можете посмотреть шаблон Singleton. Кажется, что суть состоит в том, что вы хотите контролировать количество экземпляров службы.

Я предполагаю, что вам нужна отдельная dll/project, обслуживающая все клиентские запросы. Вы можете использовать статический класс /singleton/multiton для реализации желаемой функциональности. Это действительно зависит от того, что вы пытаетесь выполнить.