У моей компании большое количество клиентов, и в настоящее время мы можем обслуживать ограниченное количество клиентов на одном сервере. Однако каждый клиент использует одно и то же основное веб-приложение. В настоящее время некоторый контент хранится локально на каждом сайте, поэтому мы не можем использовать их в одном и том же пуле сайтов / приложений; хотя у нас есть проект по конверсии мультитенантности.
Мы строго подписываем все наши сборки, и я подумал, что было бы интересно посмотреть, сможем ли мы заставить их загружать нейтральную домен в ASP.NET. Преимущество этого будет заключаться в значительном сокращении затрат на память, что в настоящее время является одним из наших самых высоких затрат / ограничивающих факторов. Вдобавок кажется, что мы сможем оптимизировать процессы развертывания, которые в настоящее время связаны с [компиляцией] IO / CPU и довольно часто обходятся нам примерно в 6 часов.
Эта задача подразумевает, что я хочу переместить сборки из домена приложения пула приложений в общий домен.
Я понимаю требования к нейтральной загрузке домена:
- Сборка должна быть строго подписана и находиться в GAC.
- Зависимости в замыкании привязки должны быть в GAC [и строго подписаны].
Я пытался заставить это работать, но не могу заставить его работать для небольшого примера приложения. Я попытался сначала поместить Newstonsoft.Json в GAC, и, к моему воодушевлению, он перешел в общий домен после повторного использования. Однако я не могу заставить кого-либо из остальных переключиться на общий домен даже после того, как GAC выбрал все из них:
Моя цель - заставить мою основную DLL приложения загружаться нейтрально по отношению к домену. Как я могу отлаживать / двигаться дальше, чтобы выяснить, почему оставшиеся сборки не загружаются как нейтральные к домену?
Кроме того, я немного смущен тем, как совместное использование кодовой страницы NGEN связано или в отличие от сборок, загруженных общим доменом.