Один или несколько доменов приложений созданы на стороне сервера, когда несколько клиентов вызывают службу WCF?

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

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

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

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

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

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

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

1 ответ

Решение

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

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

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

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

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