Когда лучше всего использовать библиотеку классов C# (.dll)?

Я программист, который никогда не использовал файлы .dll. Конечно, когда мне нужно стороннее программное обеспечение, такое как графическая библиотека, библиотека для создания графиков и т. д., я добавляю файлы references/ddl в свою программу и использую их в своем коде.

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

Прямо сейчас я работаю над очистительной библиотекой (?) (я думаю, это правильный термин), которая будет полна соответствующих методов, которые могут очищать переменные самыми разными способами.

Я хочу знать следующее:

будет ли преимущество:

1) Запишите методы в библиотеку классов -> скомпилируйте/создайте ее -> добавьте библиотеку в качестве ссылки на программу - что нужно будет очистить некоторые переменные?

Или было бы точно так же, если бы я где:

2) Создайте новый класс SanitizeClass в программе -> добавьте все методы очистки -> вызовите методы из класса SanitizeClass в разных классах программы, которым необходимо очистить переменные.

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

Может ли кто-нибудь просветить меня? :)


person CasperT    schedule 02.04.2009    source источник


Ответы (7)


Ключевой вопрос: имеет ли смысл использовать этот тип более чем в одном приложении? Если да, то он должен быть в библиотеке классов. Если нет, вы можете по-прежнему поместить его в библиотеку классов просто для разделения (например, иметь одну сборку на уровень в n-уровневом решении), но вы могли бы просто поместите его в свое приложение.

Если ваша дезинфекция универсальна, то размещение ее в библиотеке классов определенно будет правильным шагом.

Я знаю людей, которые почти не пишут код в исполняемых приложениях и помещают почти все все в библиотеки классов, поэтому приложение в основном просто обертывает библиотеки классов. Сам я так далеко не захожу...

person Jon Skeet    schedule 02.04.2009
comment
Но есть ли какие-либо преимущества или потери в скорости при использовании библиотеки классов вместо того, чтобы размещать ее непосредственно в приложении? - person CasperT; 02.04.2009
comment
ДА — любой код, выполняемый на внешней сборке, всегда будет медленнее кода, выполняемого на той же сборке. - person Raj; 02.04.2009
comment
У вас есть цифры по этому заявлению? Я склонен думать, что потеря скорости незначительна. Но опять же, у меня тоже нет цифр, подтверждающих это утверждение. - person Boris Callens; 02.04.2009
comment
Я бы тоже хотел увидеть доказательства. Я ожидаю, что после JITting во многих (но, возможно, не во всех) случаях вообще не будет никакой разницы. Я, конечно, не ожидал бы значительной разницы. - person Jon Skeet; 02.04.2009
comment
+1 для Джона (я уверен, что я первый). Мне нужно доказательство того, что выполнение кода в сборке, на которую ссылаются, будет медленнее, чем выполнение кода в исходной сборке. - person Adam Robinson; 02.04.2009
comment
Я думаю, что единственная медленная точка будет при первой загрузке dll, так как там будет такая же производительность. - person Jhonny D. Cano -Leftware-; 03.04.2009
comment
@Радж, нет. CLR очень хорошо справляется с такими вещами. После JIT-компиляции вашего кода, при условии, что он находится в том же домене приложения, разницы не будет. - person Rob; 03.04.2009

Первая мысль, которая приходит на ум, — повторное использование. Будет ли эта библиотека очистки использоваться вне приложения, над которым вы сейчас работаете? Если да, то вам не нужно ссылаться на исполняемый файл в будущем, для этого вы хотите создать файл DLL (возможно, даже со строгим именем и GAC), а затем просто ссылаться на него в будущем.

person BFree    schedule 02.04.2009

Использование библиотек полезно, когда вы хотите разделить код между несколькими программами.

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

Также рекомендуется размещать слои вашего приложения в разных библиотеках (проверьте многоуровневую архитектуру).

person Martin    schedule 02.04.2009

Дополнительные сборки добавят небольшое время загрузки и дополнительную нагрузку на память, но в остальном не влияют на производительность.

Безопасность будет иметь значение только в том случае, если вам нужна другая безопасность доступа к коду (CAS) и вы будете использовать CAS.

Обычно есть три причины:

  1. Это делает вещи проще. Объединение всего в одну сборку становится громоздким (это может включать организационные/командные проблемы).

  2. Повторное использование.

  3. Вам нужны отдельные сборки. Например. иметь интерфейсы и реализацию в разных сборках, чтобы разрешить выгрузку доменов приложений (например, для плагинов).

person Richard    schedule 02.04.2009

Я думаю, что самый простой способ — добавить проект SanitizeLibrary в качестве проекта класса библиотеки в ваше решение и сослаться на этот проект в своем приложении. Если вы сочтете это полезным, вы можете извлечь библиотеку из текущего проекта и ссылаться на нее как на dll в других ваших проектах.

person empi    schedule 02.04.2009

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

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

person Raj    schedule 02.04.2009
comment
всегда будет немного медленнее: пожалуйста, разверните. JIT (и ngen) позволит выполнять встраивание и другие оптимизации в сборках. - person Richard; 02.04.2009

Что такое Class Lib?

Мы можем создавать файлы классов во всех приложениях .Net(C#.Net,Asp.net,Asp.net MVC)

В Java это называется Package!...

В .Net мы называем это DLL (библиотека динамической компоновки).

Если вы создаете классы в своем приложении, вы можете использовать эти классы только внутри этого приложения, вы не можете использовать их в других приложениях.

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

Когда вам нужно создать и использовать библиотеку классов?

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

Пример :

Если у вас есть возможность экспорта в Excel более чем в одном приложении, вы можете написать код экспорта в библиотеке классов и использовать его более чем в одном приложении.

Пример в реальном времени:

Класс подобен мусорной корзине в комнате, доступ к которой имеют только ее участники.

Библиотека класса подобна мусорной корзине в обычном месте (колледж, вокзал), любой может получить к ней доступ и использовать ее.

person Ramesh P    schedule 20.10.2016