2009-12-11 1 views
5

Может ли кто-нибудь указать преимущество использования сборок в «контексте» ASP.NET.Ассембли и библиотеки классов (.NET)

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

ответ

8

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

Wikipedia article with description of assemblies Первый абзац:

В Microsoft .NET framework, сборка - это частично скомпилированный код библиотека для использования в развертывании, управление версиями и безопасность. Существует два типа : сборки процессов (EXE) и библиотеки (DLL). Процесс сборка представляет собой процесс, который будет использовать классы, определенные в библиотеке сборок. Сборки .NET содержат код в CIL, который обычно , сгенерированный на языках .NET, и , затем скомпилированный в машинный язык время исполнения CLR точно в срок компилятор. Сборка может состоять из одного или нескольких файлов. Файлы кода: называются модулями. Сборка может содержать более одного код модуля и , так как можно использовать различные языки создавать модули кода это технически возможно использовать несколько различных языков для создания сборки. Visual Studio, однако, не поддерживает использование разных языков в одном сборке.

+1

Итак, библиотека - это подмножество сборки? – maxp

+0

Я бы не сказал подмножество ... есть перекрытие между двумя определениями. –

3

Ассембли не всегда являются исполняемыми. Большинство людей определит их как набор модулей классов, представленных как один DLL или EXE-файл. Ближайшим для них является Java JAR.

Они имеют метаданные (см http://en.wikipedia.org/wiki/.NET_metadata), который содержит кучу информации, такие как

  • версии
  • методы и тип

Они также имеют манифест, который является частью этих метаданных (см. http://msdn.microsoft.com/en-us/library/1w45z383.aspx).

Вы можете зарегистрировать сборки в глобальном сборочном кэше (GAC) (см. http://en.wikipedia.org/wiki/Global_Assembly_Cache), и вы сделаете их доступными для всех других программ на машине. (когда в Visual Studio вы используете «Добавить ссылки» и просматриваете вкладку .Net, вы смотрите список сборок в GAC).

Вам не нужно добавлять их в GAC, вы можете напрямую ссылаться на частную сборку, но регистрация их в GAC делает их доступными на глобальном уровне на компьютере.

Эта ссылка содержит разумную информацию о сборках:

2

Этот вопрос не делает много смысла. Ассембли содержат библиотеки классов, это не одно и тоже. Даже если у вас есть только файлы aspx, первый раз, когда кто-то обращается к странице, ASP.Net компилирует его в класс, а затем сборку «на лету».

0

@maxp, вы спрашиваете, лучше ли включать класс в качестве файла .cs в проект или как скомпилированную .dll в ссылках?

Раньше я использовал общие функции в файлах классов (.cs) и просто включал их в какой бы проект, над которым я работал. Классы живут под контролем источника, поэтому я бы просто удостоверился, что получил последнюю версию в любое время, когда создал новый проект. Однако в последнее время я начал их компилировать и зарегистрировать в ПКК. Это помогает уменьшить головную боль не всех, кто действительно знает, какая версия класса включена в данный проект. Если вы внесете изменения в класс, просто перерегистрируйте его с помощью GAC, и все ваши приложения будут обновлены и будут использовать ту же версию.

Единственный реальный недостаток, с которым я столкнулся, заключается в том, что вы пытаетесь отладить и пройти через логику. Просто убедитесь, что ваши классы прочны, прежде чем компилировать и разместить в GAC.

Надеюсь, что это поможет ответить на ваш вопрос.

+0

Не совсем, но спасибо за ответ. Наше решение для решения вашей проблемы «кода последней версии» имеет большое решение, содержащее все проекты, включая библиотеку классов. Затем мы добавляем ссылки на библиотеку классов для каждого проекта, поэтому при каждой новой компиляции все проекты обновляются с помощью новейшей библиотеки. – maxp