Один или несколько доменов приложений созданы на стороне сервера, когда несколько клиентов вызывают службу WCF? - PullRequest
3 голосов
/ 01 апреля 2012

Вопрос в значительной степени в названии, но я уточню.

У меня есть приложение Silverlight, которое действует как слегка расширенный пользовательский интерфейс.

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

Вот мой вопрос: получат ли два клиента, вызывающих службу WCF, поток внутри этой службы ИЛИ получат ли они полный AppDomain?

Разница заключается в том, что если в первом случае они могут легко совместно использовать БД, то во втором сценарии они не могут - насколько я понимаю.

РЕДАКТИРОВАТЬ: Это потому, что БД используетшаблон Identity Map [Fowler], где используемые объекты сохраняются в физической памяти (статическая одноэлементная переменная) - несколько доменов приложений могут это испортить.

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

1 Ответ

1 голос
/ 01 апреля 2012

Модель потоков для служб WCF определяется режимом ConcurrencyMode, который вы настраиваете для своей службы: http://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode.aspx.

Относительно доменов приложений - это полностью зависит от того, как вы размещаете свой сервис. Если вы используете собственный ServiceHost, вручную, всегда будет ровно 1 AppDomain на стороне сервера, если вы не решите начать управлять и раскручивать свой собственный.

Если вы размещаете внутри IIS ... это зависит от IIS, как он обрабатывает запросы. Он может повторно использовать 1 домен приложений, он может ускорить несколько доменов приложений (если вы не переопределите настройку в web.config, чтобы разрешить только 1 домен приложений на рабочий процесс), или он может ускорить несколько физических рабочих процессов (что по сути подразумевает несколько доменов приложений), если у вас включен режим веб-сада.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...