Получение веб-приложения ASP.NET MVC для загрузки нейтрального домена

У моей компании большое количество клиентов, и в настоящее время мы можем обслуживать ограниченное количество клиентов на одном сервере. Однако каждый клиент использует одно и то же основное веб-приложение. В настоящее время некоторый контент хранится локально на каждом сайте, поэтому мы не можем использовать их в одном и том же пуле сайтов / приложений; хотя у нас есть проект по конверсии мультитенантности.

Мы строго подписываем все наши сборки, и я подумал, что было бы интересно посмотреть, сможем ли мы заставить их загружать нейтральную домен в ASP.NET. Преимущество этого будет заключаться в значительном сокращении затрат на память, что в настоящее время является одним из наших самых высоких затрат / ограничивающих факторов. Вдобавок кажется, что мы сможем оптимизировать процессы развертывания, которые в настоящее время связаны с [компиляцией] IO / CPU и довольно часто обходятся нам примерно в 6 часов.

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

Я понимаю требования к нейтральной загрузке домена:

  1. Сборка должна быть строго подписана и находиться в GAC.
  2. Зависимости в замыкании привязки должны быть в GAC [и строго подписаны].

Я пытался заставить это работать, но не могу заставить его работать для небольшого примера приложения. Я попытался сначала поместить Newstonsoft.Json в GAC, и, к моему воодушевлению, он перешел в общий домен после повторного использования. Однако я не могу заставить кого-либо из остальных переключиться на общий домен даже после того, как GAC выбрал все из них:

введите описание изображения здесь

Моя цель - заставить мою основную DLL приложения загружаться нейтрально по отношению к домену. Как я могу отлаживать / двигаться дальше, чтобы выяснить, почему оставшиеся сборки не загружаются как нейтральные к домену?

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


person Joshua Enfield    schedule 03.04.2015    source источник
comment
пробовали ли вы посмотреть это сообщение blogs.msdn.com /b/junfeng/archive/2004/08/05/208375.aspx   -  person KnightFox    schedule 13.07.2015
comment
Мне любопытно, какова ваша конечная цель в этом упражнении? Это для производительности или обслуживания или чего-то еще?   -  person Jonathan    schedule 25.07.2015
comment
@Jonathan Я отметил большую часть этого во втором абзаце. Мы - растущая компания, и в нашей системе работает около 2000 сайтов. Оптимизация развертываний и затрат на память, скорее всего, принесет большую отдачу. Однако, если оставить в стороне эти факторы ... в моем понимании есть некоторый недостаток, и я хотел бы понять, что это такое, я еще не понимаю.   -  person Joshua Enfield    schedule 26.07.2015
comment
Я думаю, что экономия памяти при таком типе установки не равна затраченным усилиям. Есть много других факторов, которые дадут гораздо большую отдачу от вложенных средств.   -  person Jonathan    schedule 26.07.2015
comment
Что конкретно вы имеете в виду, когда тратите 6 часов? Вы имеете в виду, когда вы обновляете 2000 приложений?   -  person Jonathan    schedule 26.07.2015
comment
да. В настоящее время наш полный процесс выпуска обновлений занимает порядка шести часов. В настоящее время мы делаем это раз в две недели, и для этого требуется несколько человек, которые будут следить за ним, решать проблемы и следить за производственными проверками. Я понимаю, что есть много способов решить эту проблему по-другому. В настоящее время мы ограничены памятью относительно количества сайтов, которые мы можем разместить на сервере, я также понимаю, что есть другие способы решить эту проблему. Я изучаю идею и пытаюсь понять, как .NET обрабатывает нейтралитет домена. Скорее всего, это просто образовательное мероприятие, но если оно сработает для случая использования, даже лучше!   -  person Joshua Enfield    schedule 26.07.2015
comment
Да, я подозреваю, что это не решит ваши проблемы с памятью и io, потому что каждое приложение по-прежнему будет иметь собственное пространство памяти и накладные расходы. Кроме того, многие вещи, которые я читал, говорят о том, что над головой нейтральна к домену   -  person Jonathan    schedule 26.07.2015


Ответы (1)


Решением могут быть внутренние сборки из ASP.NET 4.5. Найдите команду aspnet_intern и аргумент interndir.

person Dexion    schedule 09.10.2015