Я изо всех сил пытался сделать это таким образом, чтобы выполнить все мои требования.
Вот что есть в нашей библиотеке:
- Базовые классы для контроллеров и сервисов
- Бизнес-объекты (магазины, отделы и т.д.)
- Общие частичные просмотры (логин, ошибка и т. д.)
- Базовый класс для HttpApplication
- Общий общий код (чтение файла INI, создание подключения к базе данных и т. д.)
Одно требование, которое доставляло мне проблемы, заключается в следующем:
- Живет в одном месте на сервере. (т.е. копировать локально = ложь)
Это ломается, потому что:
- Библиотека DLL, содержащая класс HttpApplication, должна находиться в том же каталоге, что и библиотека DLL веб-приложения для запуска. Я не нашел обходного пути. Я согласен дублировать этот код в каждом приложении, но не хотел бы.
- Общие представления не работают, если я использую Assembly.LoadFrom() для загрузки dll из общего местоположения. (Я использовал этот метод для предварительно скомпилировать мои взгляды)
- Любые ярлыки пространств имен в web.config прерываются во время выполнения с ошибками компиляции, поскольку web.config анализируется до загрузки сборки.
Мой вопрос к вам, ребята, как вы обрабатываете свой общий код в аналогичной среде?
Кажется, что с GAC больше проблем, чем пользы, и мы хотим, чтобы все наши приложения использовали один и тот же код, а не имели несколько приложений в разных версиях и должны были поддерживать все это. Существуют ли шаблоны/лучшие методы проектирования, которые могут помочь нам в этом отношении?
Кроме того, в качестве бонуса, если вы сможете решить любую из вышеперечисленных проблем, это тоже будет здорово.
Спасибо!
Редактировать: я предполагаю, что последующий вопрос заключается в том, должны ли мы вообще иметь каталог с общими DLL на сервере, или их следует развертывать только по мере развертывания/обновления проектов?
bin
для общих библиотек DLL в одном центральном месте. Затем вы просто помещаете новую DLL в одно центральное место, на которое указывают все соединения. Однако я не уверен, что мне вообще нравится эта идея. - person rejj   schedule 17.01.2012