Какова область действия статического класса?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
19
0
10 293
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Ответ принят как подходящий

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

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

А как насчет веб-приложения. Если я использую один и тот же статический класс, определенный в DLL № 1, из двух ДРУГИХ отдельных сборок (DLL № 2 и DLL № 3), будучи № 3 приложением веб-сайта и № 2 DLL, на которую ссылается веб-сайт, будут ли они использовать один и тот же статический класс значения?

Lord of Scripts 11.07.2014 03:01

@LordofScripts Да, потому что все они находятся в одном домене приложения

Joel Coehoorn 11.07.2014 18:46

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

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

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

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

да.

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

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

Другие вопросы по теме