2014-01-25 3 views
2

Я недавно начал работать с Entity Framework (версия 4.1) и WCF. Я пытаюсь сделать приложение asp.net n-tier (.Net Framework 4.0), в котором слой данных состоит из wcf-сервисов, которые внутренне используют сущность-структуру. Подход, применяемый к инфраструктуре сущности, является модельным.Entity Framework - различное поведение в разных средах

В моей среде разработки у меня есть приложение asp.net и службы wcf, работающие на IIS 7.5, на том же веб-сайте и в одном и том же пуле приложений (это не очень удобно, но он работает). При первом доступе к любой из wcf-сервисов производительность довольно плохая, но при последующих обращениях это нормально. Причины плохой производительности при первом доступе объясняются here - например. служебные данные, связанные с созданием представления, подготовкой запросов и т. д.,

После завершения разработки я настроил тестовую среду с двумя виртуальными машинами - одним сервером (IIS 7.5), на котором размещен внешний интерфейс приложения и еще один (опять же IIS 7.5), на котором размещаются службы wcf - работающие на разных компьютерах, на разных сайтах и ​​в разных пулах приложений.

Я ожидал такого же поведения, а именно медленного первого доступа к службам и последующего доступа, выполняемого намного быстрее, но все обращения к службам выполняются медленно.

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

По сути, я пытаюсь понять, почему я замечаю разные типы поведения в разных средах.

Из того, что я читал, каждый раз, когда создается AppDomain, сущность-инфраструктура выполняет операции, связанные с начальными служебными данными. Но означает ли это, что для каждого вызова службы WCF создается новый AppDomain?

+0

Любая вероятность того, что сборки были отладки в dev-блоке и выпущены в тестовой среде? – Narayana

ответ

0

Я понял. По-видимому, на установке машины разработки была установленная в 2011 году CTP .Net Framework, а машины с тестовой средой имели стандартный .Net Framework 4.0. Я обновился до .Net Framework 4.5 на всех машинах, и теперь все работает так, как ожидалось.

Очевидно, что Entity Framework на .Net 4.0 по каждому запросу вводит служебные данные для генерации представлений и компиляции запросов. В версии 4.2 Framework и выше поведение больше похоже на то, что описано в литературе: накладные расходы возникают только при первом доступе.

WCF AppDomain создан пулом приложений IIS и повторно используется для нескольких запросов.

Я ценю ваш вход Narayana

Смежные вопросы